我正在使用亚马逊的MWS boto API来提取订单,但我在解析结果时遇到了问题。我使用的其他API返回XML数据,但boto没有。在博托,如果你打电话:
boto.set_stream_logger('boto')
它会将XML数据打印到控制台,但我找不到任何返回XML数据的函数,所以我需要处理它们给我的内容。
以下是我如何撤消订单:
orders = mws.list_orders(**params)
这是orders
:
<class 'boto.mws.response.ListOrdersResponse'>
这是orders
将包含的示例:(格式化是我的,为清晰起见。原来,它没有换行符)
ListOrdersResponse{u'xmlns': u'https://mws.amazonservices.com/Orders/2013-09-01'}
(ListOrdersResult: ListOrdersResult{}
(CreatedBefore: u'xxxx', Orders: ^Orders^{}
(Order: [
Order{}(LatestDeliveryDate: u'xxxx', LatestShipDate: u'xxxx',
FulfillmentChannel: u'xxxx', ShippingAddress: ^ShippingAddress^{}(City: u'xxxx',
Name: u'xxxx', CountryCode: u'xxxx', Phone: u'xxxx', StateOrRegion: u'xxxx',
AddressLine1: u'xxxx', PostalCode: u'xxxx'), EarliestDeliveryDate: u'xxxx',
PurchaseDate: u'xxxx', ShipmentServiceLevelCategory: u'xxxx',
OrderTotal: USD 23.12, AmazonOrderId: u'xxxx', EarliestShipDate: u'xxxx',
NumberOfItemsUnshipped: u'xxxx', OrderStatus: u'xxxx', IsBusinessOrder: u'xxxx',
OrderType: u'xxxx', PaymentExecutionDetail: None, ShippedByAmazonTFM: u'xxxx',
PaymentMethod: u'xxxx', SalesChannel: u'xxxx', LastUpdateDate: u'xxxx',
BuyerEmail: u'xxxx', ShipServiceLevel: u'xxxx', BuyerName: u'xxxx',
NumberOfItemsShipped: u'xxxx', MarketplaceId: u'xxxx'),
# Other orders similar to above
])
),
ResponseMetadata: ^ResponseMetadata^{}(RequestId: u'xxxx'))
供参考,boto在github:ListOrdersResult上实现Element和ElementList。
问题摘要:
这是一个特定的python结构吗?这似乎是一个与字典交叉的列表。我认为这可能是某种unicode或JSON字典,但我不熟悉python而且还不能告诉你。
如何使用此数据结构解析大量订单?我想进入每个单独的订单商品,并提取某些字段,例如BuyerName
。
我尝试过调用orders.ListOrdersResult.CreatedBefore
,它会从xxxx
返回值CreatedBefore: u'xxxx'
。到目前为止,我还没有进一步发展。调用类似ListOrdersResult.Order
或类似内容的内容会抛出AttributeError.
boto.set_stream_logger('boto')
返回XML数据? Python有许多库可以轻松处理XML数据。 提前谢谢!关于亚马逊的MWS API的文档非常少,我发现的任何类似问题都是旧的和未回复的。