繁体   English   中英

如何将使用请求库获得的xml文件转换为字典

[英]How to convert the xml file got using requests library to a dictionary

在说使用xmltodict之前,我想说我可以得到顶层,但不能得到所有层。 例如当我使用ebay python sdk时

 mydict =  d['searchResult']['item'][i]

当我将xml转换为dict时,这一行代码可获取项目的详细信息。我得到了有序的dict,而我只能深入一层。

d = xmltodict.parse(r.text)

 >>> dict(d['FindProductsResponse']['Product'])
   Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 ValueError: dictionary update sequence element #0 has length 8; 2 is required
 >>> 

当我尝试进入下一个级别时遇到此错误。结果是dict中的dict,我想知道xmltodict无法达到该级别,或者我做错了什么。

 import csv
 import sys
 import requests

 payload = {'callname':'FindProducts','responseencoding':'XML','siteid':'EBAY-IN',
        'appid':'MyAppID',
            'version':'967','QueryKeywords':'harry potter',
            'AvailableItemsOnly':'true',
            'MaxEntries':'2'}
 r = requests.get('http://open.api.ebay.com/shopping', params=payload)

 r.text

使用BeautifulSoup ,例如:

import bs4

soup = bs4.BeautifulSoup(r.text, 'lxml')
soup.findproductsresponse.errors

出:

<errors>
<shortmessage>Application ID invalid.</shortmessage>
<longmessage>Application ID invalid.</longmessage>
<errorcode>1.20</errorcode>
<severitycode>Error</severitycode>
<errorclassification>RequestError</errorclassification>
</errors>

Beautiful Soup是一个Python库,用于从HTML和XML文件中提取数据。 它与您最喜欢的解析器一起使用,提供了导航,搜索和修改解析树的惯用方式。 通常可以节省程序员数小时或数天的工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM