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

时间:2017-01-11 11:19:06

标签: python xml api dictionary ebay-api

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

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

这行代码用于获取项目的详细信息,当我将我的xml转换为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

1 个答案:

答案 0 :(得分:0)

使用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文件中提取数据。它适用于您最喜欢的解析器,以提供导航,搜索和修改解析树的惯用方法。它通常可以节省程序员数小时或数天的工作量。