麻烦解析MWS Boto响应

时间:2015-07-06 11:05:02

标签: python amazon-web-services boto amazon-mws

我在Python中使用Boto连接亚马逊MWS。我已成功使用他们的脚本进行连接,但由于我不完全理解文档而无法解析响应,因此互联网上几乎没有示例。我是Python的新手。

以下是我从MWS获得回复的方式:

sum(...,3) 

第一个产品给出了回复:

select *
from TableName
where (field2='US' and field3 is not null) or 
      (field2<>'US' and field3 is null)

我的问题是尝试从ItemAttributes中获取详细信息:

mws = MWSConnection(accessKeyId,secretKey,Merchant=merchantId)
response = mws.list_matching_products(MarketplaceId=marketplaceId,Query="Beanie Babies")

此时我相信它是一个字典对象。

products = response.ListMatchingProductsResult.Products.Product
print(products[0])
>>>Product{}(Identifiers: ^Identifiers^{}(MarketplaceASIN: ^MarketplaceASIN^{}(MarketplaceId: 'ATVPDKIKX0DER', ASIN: 'B000JK67MQ'), SKUIdentifier: None), Offers: None, CompetitivePricing: [], AttributeSets: ^AttributeSets^{}(ItemAttributes: [ItemAttributes{'xml:lang': 'en-US'}(Brand: 'Beanie Babies', Studio: 'Beanie Babies - Teddy Bears', ItemDimensions: 4.00inchesx10.00inchesx6.00inchesx0.31pounds, Languages: None, Binding: 'Toy', Genre: 'cute pets', Color: 'purple', MaterialType: [], Feature: ['Ty Beanie Baby', 'Princess Bear', 'Purple with purple bow with white flower', 'Does have the tag'], ManufacturerMaximumAge: 36{'Units': 'months'}, OperatingSystem: [], Artist: [], Director: [], ProductTypeName: 'TOYS_AND_GAMES', Creator: [], Edition: '1997', Model: '4300', SmallImage: Image{}(Height: 75{'Units': 'pixels'}, Width: 75{'Units': 'pixels'}, URL: 'http://ecx.images-amazon.com/images/I/4193jH4e35L._SL75_.jpg'), GemType: [], PackageDimensions: 0.90inchesx7.40inchesx4.50inchesx0.40pounds, PackageQuantity: '1', ListPrice: None, Actor: [], Platform: [], Manufacturer: 'Beanie Babies - Teddy Bears', PartNumber: '4300', ProductGroup: 'Toy', MediaType: [], IsMemorabilia: 'false', Label: 'Beanie Babies - Teddy Bears', ManufacturerMinimumAge: 36{'Units': 'months'}, IsAutographed: 'false', IsAdultProduct: 'false', Author: [], Format: [], Title: 'Ty Beanie Babies - Princess Bear', Publisher: 'Beanie Babies - Teddy Bears')]), LowestOfferListings: None, Relationships: ^Relationships^{}(VariationParent: []), SalesRankings: ^SalesRankings^{}(SalesRank: [SalesRank{}(Rank: '60161', ProductCategoryId: 'toy_display_on_website'), SalesRank{}(Rank: '1197', ProductCategoryId: '251943011'), SalesRank{}(Rank: '1609', ProductCategoryId: '11350120011')]))

由于我是这门语言的新手,我无法弄清楚如何获取位于()中的所有信息,例如Br​​and,Studio等。

Boto有一些内置的功能,例如Response和ResponseFactory,但是我再次迷失了,因为我一直试图获取像Brand这样的信息。

再次感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

如果您希望“获取输出的详细信息,您可以尝试Python's Data pretty printer

  

pprint模块提供了“漂亮”打印任意的功能   Python数据结构......

它的输出非常可配置,您可以使用depth=...将结构下移到任意深度。

如果您希望“获取详细信息在其他地方使用, 我会建议一些事情:

  1. 尝试不使用[0]建立索引,您可能会丢失存储在Attributes其他位置的信息。
  2. 使用How do I get list of methods in a Python class?Finding what methods an object has检查可用的方法。
  3. 使用What's the canonical way to check for type in python?检查类型。
  4. 使用Attributes上获得的信息,您应该能够提取存储在其中的任何信息。