亚马逊以编程方式获取产品ASIN

时间:2018-06-23 20:44:13

标签: web-scraping amazon

我正在尝试以编程方式检索超过500本书的ASIN编号。

示例:Joseph Heller的Product Catch-22 亚马逊网址:MSDN document

我可以通过通过浏览器搜索每个产品来手动获得产品编号,但是效率不高。在最坏的情况下,我想使用API​​或wget / curl,但遇到了一些绊脚石。

Amazon API并不是最简单易用的...(我一直不知所措,试图用python正确获取签名请求哈希值。)

然后我认为googler可能是另一个选择,但是在15次请求之后(即使有time.sleep(30),谷歌也将我锁定了几个小时(也来自多个IP来源))。

bing怎么样...他们没有通过API显示任何亚马逊结果...真是奇怪...

我尝试用wget编写自己的Google Parser,但随后我必须将所有内容导入BeautifulSoup并进行解析...我的sed和awk技能还有很多不足之处...

基本上...有人能以编程方式获得产品的ASIN编号的简便方法吗?

谢谢:)

2 个答案:

答案 0 :(得分:0)

https://isbndb.com/的API费用:(

所以...

走了Google Web抓取路线

from urllib.request import Request, urlopen
from bs4 import BeautifulSoup as soup
import requests
import time


def get_amazon_link(book_title):
  url = 'https://www.google.com/search?q=amazon+novel+'+book_title
  print(url)

  url = Request(url)
  url.add_header('User-Agent', 'Mozilla/5.0')

  with urlopen(url) as f:
    data = f.readlines()

    page_soup = soup(str(data), 'html.parser')
    for line in page_soup.findAll('h3',{'class':'r'}):
      for item in line.findAll('a', href=True):
        item = item['href'].split('=')[1]
        item = item.split('&')[0]
        return item


def get_wiki_link(book_title):
  url = 'https://www.google.com/search?q=wiki+novel+'+book_title
  print(url)
  url = Request(url)
  url.add_header('User-Agent', 'Mozilla/5.0')

  with urlopen(url) as f:
    data = f.readlines()

    page_soup = soup(str(data), 'html.parser')

    for line in page_soup.findAll('h3',{'class':'r'}):
      for item in line.findAll('a', href=True):
        item = item['href'].split('=')[1]
        item = item.split('&')[0]
        return item


a = open('amazonbookslinks','w')
w = open('wikibooklinks','w')
with open('booklist') as b:
  books = b.readlines()

  for book in books:
    book_title = book.replace(' ','+')
    amazon_result = get_amazon_link(book_title)
    amazon_msg = book +'@'+ amazon_result
    a.write(amazon_msg + '\n')
    time.sleep(5)
    wiki_result = get_wiki_link(book_title)    
    wiki_msg = book +'@'+ wiki_result
    w.write(wiki_msg + '\n')
    time.sleep(5)
a.close()
w.close()

不是很漂亮,但它起作用了:)

答案 1 :(得分:-1)

根据Amazon的客户服务页面:

https://www.amazon.co.uk/gp/help/customer/display.html?nodeId=898182

  

ASIN代表亚马逊标准识别号。几乎每一个   我们网站上的产品具有自己的ASIN,这是我们用来识别的唯一代码   它。对于书籍,ASIN与ISBN号相同,但对于所有   其他产品,将商品上传到我们的网站后会创建一个新的ASIN   目录。

这意味着对于书'Catch 22',其ISBN-10为3866155239

我建议您使用https://isbndb.com/之类的网站来查找书籍的ISBN,这会自动为您提供所需的ASIN。它还带有一个REST API,您可以在https://isbndb.com/apidocs上进行阅读。