【问题标题】:How do I distinguish between XML and HTML programmatically in Python?如何在 Python 中以编程方式区分 XML 和 HTML?
【发布时间】:2021-04-25 07:15:02
【问题描述】:

我正在发送一个 http 请求并获得一个 http 响应,但我希望能够提取响应的正文并知道它是否包含 XML 或 HTML。

理想情况下,即使响应中的内容类型不明确,此方法也应该有效(即,它应该适用于不一定指定内容类型的网站)。

目前,我正在使用 lxml 来解析 html/xml,但在解析时不知道我是在处理 HTML 还是 XML。

【问题讨论】:

    标签: python html xml lxml


    【解决方案1】:

    我不明白您为什么要这样做,但我确信有更好的方法可以做到。但是……

    xml和html的区别在于声明,HTML必须以<!DOCTYPE HTML>开头,XML以<?xml version="1.0>开头

    XML 示例

    <?xml version="1.0>
    <address>
    <name> Krishna Rungta</name> 
    <contact>9898613050</contact>
    <email>krishnaguru99@gmail.com </email>
    <birthdate>1985-09-27</birthdate>
    </address>
    

    HTML 示例

    <!DOCTYPE html>
    <html>
    <head>
    <title> Page title </title> </head>
    <body>
    <hl> First Heading</hl> <p> First paragraph.</p> </body>
    </html>
    

    如果我是你,我会使用 BeautifulSoup 来选择 DOCTYPE,如果你找不到/选择它意味着它是 XML。你可以看到如何做到这一点here

    如果这不能回答您的问题,请尝试阅读this 或尝试使用此library

    【讨论】:

      【解决方案2】:

      您可以查看content-type 标头以了解您收到的响应类型:

      import requests
      
      respond = requests.get(URL)
      file_type = respond.headers['content-type']
      
      print(file_type)
      
      >>>'text/html; charset=utf-8'
      

      你也可以这样做

      print(file_type.split(';')[0].split('/')[1])
      

      获取"html""xml" 作为输出

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-30
        • 1970-01-01
        • 1970-01-01
        • 2018-10-11
        • 2010-09-28
        • 1970-01-01
        相关资源
        最近更新 更多