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

功能

  • 面向对象的亚马逊产品界面
  • 同时支持项目搜索和项目查找
  • 与谷歌应用程序引擎兼容

依赖关系

在您开始之前,请确保您有:

安装

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_keyamazon_secret_keyamazon_assoc__tag
  • 进行鼻测试

贡献

欢迎投稿人和提交人。请给我留言。

许可证

版权所有©;2012 Yoav Aviram

有关详细信息,请参见许可证。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么单元测试中的“验证”在不同实例的情况下不返回“不同参数”错误?   java如何从具有相同类名的div中选择元素(Selenium)   Java制作纸牌游戏,有关于类的问题吗   bluej在Java中使用变异器和访问器设置颜色和圆半径   java准确定位异常错误的最佳方法是什么?   使用多个监视器时的java设置对话框位置   java如何在不使用JavascriptExecutor的情况下在网页中向下/向上滚动   java在for循环中将大小设置为n   java为什么akka需要不可变的消息   java LdapInvalidDnException:意外标记:   java如果字符串的第一个字母不是一个,如何大写?   使用htmlunit的java html内容提取   java从CDI托管bean获取方法的注释   java有办法在运行时检查post请求参数的大小吗   java我可以将实体注入托管Bean并直接持久化吗?