首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析MWS Boto响应时出错

解析MWS Boto响应时出错
EN

Stack Overflow用户
提问于 2018-06-02 13:28:51
回答 2查看 255关注 0票数 0

使用boto,可以非常容易地解析使用boto.mws.connectionlist_orders检索的数据,并隔离特定的数据块,例如订单号:

代码语言:javascript
复制
from boto.mws.connection import MWSConnection

merchantId = 'XXXXXXXXXXX' 
marketplaceId = 'XXXXXXXXXXX' 
accessKeyId = 'XXXXXXXXXXX' 
secretKey = 'XXXXXXXXXXX' 

mws = MWSConnection(accessKeyId, secretKey, Merchant=merchantId) 

# ListMatchingProducts
a = mws.list_orders(CreatedAfter='2018-05-24T12:00:00Z', MarketplaceId = [marketplaceId])
# retrieve order number within parsed response
a_orderid = a.ListOrdersResult.Orders.Order[0].AmazonOrderId
print(a_orderid)

输出amazon订单号:

代码语言:javascript
复制
123-456789-123456

相反,如果要使用get_matching_product_for_id操作解析和隔离特定数据,那么就可以为特定的EAN产品ID获取相应的ASIN:

代码语言:javascript
复制
# GetMatchingProductForId (retrieving product info using EAN code)
b = mws.get_matching_product_for_id(MarketplaceId=marketplaceId,IdType="EAN",IdList=["5705260045710"])
# retrieve ASIN for product within result
b_asin = b.GetMatchingProductForIdResult.Products.Product.MarketplaceASIN

引发以下错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:\Users\alexa\Desktop\API_Amazon_get_matching_product_for_id.py", line 20, in <module>
    b_asin = b.GetMatchingProductForIdResult.Products.Product.MarketplaceASIN
AttributeError: 'list' object has no attribute 'Products'

有人能找出原因吗?或者有更好的方法来解析boto.mws.connection响应?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-02 13:45:21

答案在您的错误消息中。我已经有一段时间没有使用boto了,但是即使不尝试运行您的示例,您也可以看出问题在这里:

代码语言:javascript
复制
b_asin = b.GetMatchingProductForIdResult.Products.Product.MarketplaceASIN

错误说:

代码语言:javascript
复制
AttributeError: 'list' object has no attribute 'Products'

回头看,我们可以看出python正在尝试访问一个名为Products的属性,但对象是一个列表。

所以b.GetMatchingProductForIdResult是一个列表。试试print吧,看看你得到了什么。迭代它并打印元素或打印第一个元素的dir来查看每个元素的属性。

代码语言:javascript
复制
print(dir(b.GetMatchingProductForIdResult[0]))

追忆是你的朋友,学会它,热爱它,生活它。

现在具体到MWS:

Amazon提供了一个描述响应在这里发现的的xsd文件。这应该能告诉你你到底在处理什么。更广泛地说,它描述了元素这里

票数 1
EN

Stack Overflow用户

发布于 2018-06-02 14:11:25

正如@Verbal_Kint指出的那样,解决方案就在答案中。使用上面的示例,可以通过挖掘树并在需要时将属性作为列表来检索ASIN。我还不太清楚为什么有些属性是列表,而有些则不是,但是在这个阶段,快速的尝试和错误使我能够找到解决方案:

代码语言:javascript
复制
b_asin = b.GetMatchingProductForIdResult[0].Products.Product[0].Identifiers.MarketplaceASIN.ASIN
print(b_asin)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50657403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档