amazon.com产品广告api的简单python包装器
python-amazon-simple-product-api的Python项目详细描述
一个用于amazon.com产品广告api的简单python包装器。
[![生成状态](https://secure.travis-ci.org/yoavaviram/python-amazon-simple-product-api.png?branch=master)](http://travis-ci.org/yoavaviram/python-amazon-simple-product-api) [![文档状态](https://readthedocs.org/projects/python-amazon-simple-product-api/badge/?version=latest)](http://python-amazon-simple-product-api.readthedocs.org/en/latest/?徽章=最新) [![覆盖状态](https://coveralls.io/repos/github/yoavaviram/python-amazon-simple-product-api/badge.svg?branch=master&bust=1)](https://coveralls.io/github/yoavaviram/python-amazon-simple-product-api?分支=主) [![PYPI版本](https://badge.fury.io/py/python-amazon-simple-product-api.svg)](https://badge.fury.io/py/python-amazon-simple-product-api)
功能
- 面向对象的亚马逊产品界面
- 同时支持项目搜索和项目查找
- 与谷歌应用程序引擎兼容
依赖关系
在您开始之前,请确保您有:
- 已安装[瓶鼻](https://github.com/lionheart/bottlenose)(pip install bottlenose)
- 已安装lxml(pip安装lxml)
- 已安装[dateutil](http://labix.org/python-dateutil)(pip install python dateutil)
- 亚马逊产品广告账户
- AWS帐户
安装
pip install python-amazon-simple-product-api
用法
查找:
>>> from amazon.api import AmazonAPI >>> amazon = AmazonAPI(AMAZON_ACCESS_KEY, AMAZON_SECRET_KEY, AMAZON_ASSOC_TAG) >>> product = amazon.lookup(ItemId='B00EOE0WKQ') >>> product.title 'Amazon Fire Phone, 32GB (AT&T)' >>> product.price_and_currency (199.0, 'USD') >>> product.ean '0848719035209' >>> product.large_image_url 'http://ecx.images-amazon.com/images/I/51BrZzpkWrL.jpg' >>> product.get_attribute('Publisher') 'Amazon' >>> product.get_attributes(['ItemDimensions.Width', 'ItemDimensions.Height']) {'ItemDimensions.Width': '262', 'ItemDimensions.Height': '35'}
(api包装器还支持许多其他产品属性)
通过设置区域在amazon.de而不是amazon.com上查找:
>>> from amazon.api import AmazonAPI >>> import bottlenose.api >>> region_options = bottlenose.api.SERVICE_DOMAINS.keys() >>> region_options ['US', 'FR', 'CN', 'UK', 'IN', 'CA', 'DE', 'JP', 'IT', 'ES'] >>> amazon_de = AmazonAPI(AMAZON_ACCESS_KEY, AMAZON_SECRET_KEY, AMAZON_ASSOC_TAG, region="DE") >>> product = amazon_de.lookup(ItemId='B0051QVF7A') >>> product.title u'Kindle, WLAN, 15 cm (6 Zoll) E Ink Display, deutsches Men\xfc' >>> product.price_and_currency (99.0, 'EUR')
还支持批量查找请求:
>>> from amazon.api import AmazonAPI >>> amazon = AmazonAPI(AMAZON_ACCESS_KEY, AMAZON_SECRET_KEY, AMAZON_ASSOC_TAG) >>> products = amazon.lookup(ItemId='B00KC6I06S,B005DOK8NW,B00TSUGXKE') >>> len(products) 5 >>> products[0].asin 'B0051QVESA'
如果您希望得到一个空的异常列表,请使用lookup_bulk()代替。
搜索:
>>> from amazon.api import AmazonAPI >>> amazon = AmazonAPI(AMAZON_ACCESS_KEY, AMAZON_SECRET_KEY, AMAZON_ASSOC_TAG) >>> products = amazon.search(Keywords='kindle', SearchIndex='All') >>> for i, product in enumerate(products): >>> print "{0}. '{1}'".format(i, product.title) 0. 'Kindle, Wi-Fi, 6" E Ink Display - includes Special Offers & Sponsored Screensavers' 1. 'Kindle Fire, Full Color 7" Multi-touch Display, Wi-Fi' 2. 'Kindle US Power Adapter (Not included with Kindle or Kindle Touch)' 3. 'Kindle Touch, Wi-Fi, 6" E Ink Display - includes Special Offers & Sponsored Screensavers' 4. 'Kindle Keyboard 3G, Free 3G + Wi-Fi, 6" E Ink Display - includes Special Offers & Sponsored Screensavers' 5. 'Kindle Touch 3G, Free 3G + Wi-Fi, 6" E Ink Display - includes Special Offers & Sponsored Screensavers' ... 49. 'Kindle Wireless Reading Device (6" Display, U.S. Wireless)'
搜索方法返回一个iterable,它将遍历所有产品, 在所有可用的页面上。根据需要自动检索其他页面。 请记住,亚马逊限制了可用页面的数量。
searchindex的有效值为:“all”、“apparel”、“appliances”、“artsandcrafts”、“automotive”, “宝贝”,“美丽”,“混合”,“书籍”,“古典”,“收藏品”,“DVD”,“数字音乐”,“电子产品”, “礼品卡”,“美食”,“杂货店”,“健康个人护理”,“家庭花园”,“工业”,“珠宝”, “kindlestore”、“kitchen”、“lawnandgarden”、“marketplace”、“mp3下载”、“杂志”、“杂项”, “音乐”,“音乐包”,“音乐仪器”,“手机应用程序”,“办公产品”,“户外生活”,“电脑硬件”, ‘宠物用品’、‘照片’、‘鞋子’、‘软件’、‘运动用品’、‘工具’、‘玩具’、‘Unbxvideo’、‘VHS’、‘视频’, “视频游戏”、“手表”、“无线”、“无线访问”
还有一种方便的方法可以搜索并返回前n个结果的列表:
>>> from amazon.api import AmazonAPI >>> amazon = AmazonAPI(AMAZON_ACCESS_KEY, AMAZON_SECRET_KEY, AMAZON_ASSOC_TAG) >>> products = amazon.search_n(1, Keywords='kindle', SearchIndex='All') >>> len(products) 1 >>> products[0].title 'Kindle, Wi-Fi, 6" E Ink Display - includes Special Offers & Sponsored Screensavers'
相似性查找:
>>> from amazon.api import AmazonAPI >>> amazon = AmazonAPI(AMAZON_ACCESS_KEY, AMAZON_SECRET_KEY, AMAZON_ASSOC_TAG) >>> products = amazon.similarity_lookup(ItemId='B0051QVESA,B005DOK8NW') >>> len(products) 4
浏览节点查找:
>>> from amazon.api import AmazonAPI >>> amazon = AmazonAPI(AMAZON_ACCESS_KEY, AMAZON_SECRET_KEY, AMAZON_ASSOC_TAG) >>> bn = amazon.browse_node_lookup(BrowseNodeId=2642129011) >>> bn.name 'eBook Readers'
创建和操作购物车:
>>> from amazon.api import AmazonAPI >>> amazon = AmazonAPI(AMAZON_ACCESS_KEY, AMAZON_SECRET_KEY, AMAZON_ASSOC_TAG) >>> product = amazon.lookup(ItemId="B0016J8AOC") >>> item = {'offer_id': product.offer_id, 'quantity': 1} >>> cart = amazon.cart_create(item) >>> fetched_cart = amazon.cart_get(cart.cart_id, cart.hmac) >>> another_product = amazon.lookup(ItemId='0312098286') >>> another_item = {'offer_id': another_product.offer_id, 'quantity': 1} >>> another_cart = amazon.cart_add(another_item, cart.cart_id, cart.hmac) >>> cart_item_id = None >>> for item in cart: >>> cart_item_id = item.cart_item_id >>> modify_item = {'cart_item_id': cart_item_id, 'quantity': 3} >>> modified_cart = amazon.cart_modify(item, cart.cart_id, cart.hmac) >>> cleared_cart = amazon.cart_clear(cart.cart_id, cart.hmac)
对于“books”searchindex,可以使用[power search](https://docs.aws.amazon.com/AWSECommerceService/latest/DG/PowerSearchSyntax.html)选项:
>>> products = amazon.search(Power="subject:history and (spain or mexico) and not military and language:spanish",SearchIndex='Books')
有关这些电话的更多信息,请咨询[产品广告 API开发人员指南](http://docs.amazonwebservices.com/AWSECommerceService/latest/DG/index.html)。
测试
要运行测试套件,请执行以下步骤:
- 确保[nose](http://readthedocs.org/docs/nose/en/latest/)已安装:(pip install nose)
- 创建名为:test_settings.py的本地文件,并将以下变量设置为相关值:amazon_access_key,amazon_secret_key,amazon_assoc__tag
- 进行鼻测试
贡献
欢迎投稿人和提交人。请给我留言。
许可证
版权所有©;2012 Yoav Aviram
有关详细信息,请参见许可证。