【问题标题】:Python Requests package: Handling xml responsePython Requests 包:处理 xml 响应
【发布时间】:2013-08-20 22:31:46
【问题描述】:

我非常喜欢 requests 包及其处理 JSON 响应的舒适方式。

不幸的是,我不知道我是否也可以处理 XML 响应。有没有人体验过如何使用 requests 包处理 XML 响应? XML解码是否需要另外包含一个包?

【问题讨论】:

    标签: python xml httprequest python-requests


    【解决方案1】:

    requests 不处理解析 XML 响应,不。 XML 响应本质上比 JSON 响应复杂得多,如何将 XML 数据序列化为 Python 结构几乎没有那么简单。

    Python 带有内置的 XML 解析器。我推荐你使用ElementTree API:

    import requests
    from xml.etree import ElementTree
    
    response = requests.get(url)
    
    tree = ElementTree.fromstring(response.content)
    

    或者,如果响应特别大,使用增量方法:

    response = requests.get(url, stream=True)
    
    # if the server sent a Gzip or Deflate compressed response, decompress
    # as we read the raw stream:
    response.raw.decode_content = True
    
    events = ElementTree.iterparse(response.raw)
    
    for event, elem in events:
        # do something with `elem`
    

    外部lxml project 建立在相同的 API 之上,为您提供更多功能和功能。

    【讨论】:

    • 一直用lxml,不知道python内置里已经有这个了。
    【解决方案2】:

    更简单的方法是使用 xmltodict 包将 XML 转换为 dict

    response = requests.get('http://blabla.com')
    dict_data = xmltodict.parse(response.content)
    

    现在,dict_data 它只是一个 Python 字典。

    你可以用pip安装它:pip install xmltodict

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-02
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多