我目前正在使用eBay API和Python的请求包。具体来说,我有一个从eBay的Finding API获取的ItemID(大约10,000左右)的列表,现在我想将这些ID与TradingAPI一起使用以获取商品图像。 例如,这就是我的请求的正文。
xml = """<?xml version="1.0" encoding="utf-8"?><GetItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<Version>1085</Version>
<RequesterCredentials>
<eBayAuthToken>YourTokenhere</eBayAuthToken>
</RequesterCredentials>
<MessageID>XML call: OAuth Token in trading</MessageID>
<DetailLevel>ItemReturnAttributes</DetailLevel>
<ItemID>254140401476</ItemID><OutputSelector>Item.PictureDetails.PictureURL</OutputSelector>
<IncludeItemSpecifics>false</IncludeItemSpecifics>
</GetItemRequest>"""
所以我的问题是: 在每个API调用中更改ItemID值的最有效方法/最佳做法是什么?
我遇到的一些问题:
我可以使用BeautifulSoup轻松更改值,但是xml现在是BeautifulSoup对象。到目前为止,我还没有在BeautifulSoup中找到一种转换回xml的方法。我尝试使用encode(“ utf-8”),但这将换行符放入xml中。
在Python请求模块文档中,他们说您可以直接提交dict,这将使值的更改更容易。但是我不确定如何将XML转换为dict,例如
<GetItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">
标签。另外,我不确定eBay API是否会接受。
我也尝试使用xmltodict,但是我没有成功,这使我认为eBay API也将不接受这种格式的有序字典。
使用ElementTree(尚未尝试过此操作,但这是我的下一步)或BeautifulSoup然后再尝试转换回XML到树的总体问题是,这似乎效率很低。 / p>
我感谢您的任何帮助或建议!谢谢!
答案 0 :(得分:0)
如果我对您的理解正确,那么您会看到一个商品ID列表,例如:
item_ids = [254140401476,111140406666] #etc.
,并且您希望依次使用每个元素依次填充xml中的元素<ItemID>
,这可以通过f字符串完成:
for id in item_ids:
print(f"""<?xml version="1.0" encoding="utf-8"?><GetItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<Version>1085</Version>
<RequesterCredentials>
<eBayAuthToken>YourTokenhere</eBayAuthToken>
</RequesterCredentials>
<MessageID>XML call: OAuth Token in trading</MessageID>
<DetailLevel>ItemReturnAttributes</DetailLevel>
<ItemID>{id}</ItemID><OutputSelector>Item.PictureDetails.PictureURL</OutputSelector>
<IncludeItemSpecifics>false</IncludeItemSpecifics>
</GetItemRequest>""")
请注意,<ItemID>
元素现在包含变量<ItemID>{id}</ItemID>
而不是硬项目ID。