Amazon has a very comprehensive associate program that allows you to promote just about anything imaginable for any niche and earn commission for anything you refer. The size of the catalog is what makes Amazon such a great program. People make some good money promoting Amazon products.
There is a great Python library out there for accessing the other Amazon web services such as S3, and EC2 called boto. However it doesn’t support the Product Advertising API.
With the Product Advertising API you have access to everything that you can read on the Amazon site about each product. This includes the product description, images, editor reviews, customer reviews and ratings. This is a lot of great information that you could easily find a good use for with your websites.
So how do you get at this information from within a Python program? Well the complicated part is dealing with the authentication that Amazon has put in place. To make that a bit easier I used the connection component from boto.
Here’s a demonstration snippet of code that will print out the top 10 best selling books on Amazon right now.
Example Usage:
$ python AmazonSample.py Glenn Becks Common Sense: The Case Against an Out-of-Control Government, Inspired by Thomas Paine by Glenn Beck Culture of Corruption: Obama and His Team of Tax Cheats, Crooks, and Cronies by Michelle Malkin The Angel Experiment (Maximum Ride, Book 1) by James Patterson The Time Travelers Wife by Audrey Niffenegger The Help by Kathryn Stockett South of Broad by Pat Conroy Paranoia by Joseph Finder The Girl Who Played with Fire by Stieg Larsson The Shack [With Headphones] (Playaway Adult Nonfiction) by William P. Young The Girl with the Dragon Tattoo by Stieg Larsson |
To use this code you’ll need an Amazon associate account and fill out the keys and tag needed for authentication.
Product Advertising API Python code:
#!/usr/bin/env python # encoding: utf-8 """ AmazonExample.py Created by Matt Warren on 2009-08-17. Copyright (c) 2009 HalOtis.com. All rights reserved. """ import urllib try: from xml.etree import ET except ImportError: from elementtree import ET from boto.connection import AWSQueryConnection AWS_ACCESS_KEY_ID = 'YOUR ACCESS KEY' AWS_ASSOCIATE_TAG = 'YOUR TAG' AWS_SECRET_ACCESS_KEY = 'YOUR SECRET KEY' def amazon_top_for_category(browseNodeId): aws_conn = AWSQueryConnection( aws_access_key_id=AWS_ACCESS_KEY_ID, aws_secret_access_key=AWS_SECRET_ACCESS_KEY, is_secure=False, host='ecs.amazonaws.com') aws_conn.SignatureVersion = '2' params = dict( Service='AWSECommerceService', Version='2009-07-01', SignatureVersion=aws_conn.SignatureVersion, AWSAccessKeyId=AWS_ACCESS_KEY_ID, AssociateTag=AWS_ASSOCIATE_TAG, Operation='ItemSearch', BrowseNode=browseNodeId, SearchIndex='Books', ResponseGroup='ItemAttributes,EditorialReview', Order='salesrank', Timestamp=time.strftime("%Y-%m-%dT%H:%M:%S", time.gmtime())) verb = 'GET' path = '/onca/xml' qs, signature = aws_conn.get_signature(params, verb, path) qs = path + '?' + qs + '&Signature=' + urllib.quote(signature) response = aws_conn._mexe(verb, qs, None, headers={}) tree = ET.fromstring(response.read()) NS = tree.tag.split('}')[0][1:] for item in tree.find('{%s}Items'%NS).findall('{%s}Item'%NS): title = item.find('{%s}ItemAttributes'%NS).find('{%s}Title'%NS).text author = item.find('{%s}ItemAttributes'%NS).find('{%s}Author'%NS).text print title, 'by', author if __name__ == '__main__': amazon_top_for_category(1000) #Amazon category number for US Books |