Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web scraping Amazon以编程方式获取产品_Web Scraping_Amazon - Fatal编程技术网

Web scraping Amazon以编程方式获取产品

Web scraping Amazon以编程方式获取产品,web-scraping,amazon,Web Scraping,Amazon,我试图通过编程检索超过500本书的ASIN编号 示例:Joseph Heller的产品Catch-22 亚马逊网址: 我可以通过浏览器搜索每种产品来手动获取产品编号,但这并不高效。我希望在最坏的情况下使用API或wget/curl,但我遇到了一些障碍 AmazonAPI并不是最容易使用的…(我一直在努力用python纠正签名请求散列,但没有用…) 然后我想google可能是另一个选择,但是在15个请求之后(即使有时间,sleep(30)google也会把我锁在外面几个小时[来自多个IP来源])

我试图通过编程检索超过500本书的ASIN编号

示例:Joseph Heller的产品Catch-22 亚马逊网址:

我可以通过浏览器搜索每种产品来手动获取产品编号,但这并不高效。我希望在最坏的情况下使用API或wget/curl,但我遇到了一些障碍

AmazonAPI并不是最容易使用的…(我一直在努力用python纠正签名请求散列,但没有用…)

然后我想google可能是另一个选择,但是在15个请求之后(即使有时间,sleep(30)google也会把我锁在外面几个小时[来自多个IP来源])

bing呢…他们没有通过API显示任何亚马逊的结果…这真的很奇怪

我试着用wget编写我自己的谷歌解析器,但之后我不得不将所有这些导入到BeautifulSoup并重新分析……我的sed和awk技能还有很多需要改进的地方


基本上……有没有人遇到过一种更简单的方法,可以通过编程方式获取产品的ASIN编号?

根据亚马逊的客户服务页面:

ASIN代表亚马逊标准标识号。几乎每 我们网站上的产品有自己的ASIN,这是我们用来识别的唯一代码 信息技术对于书籍而言,ASIN与ISBN编号相同,但对于所有书籍而言 其他产品当项目上传到我们的网站时,会创建一个新的ASIN 目录

这意味着对于《第二十二条军规》一书,其ISBN-10是
3866155239

我建议你使用一个像查找图书ISBNs这样的网站,它会自动为你提供你正在寻找的ASIN。它还附带了一个REST API,您可以从以下网址了解该API。

收取API费用:(

所以

走谷歌网络搜索路线

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()

虽然不漂亮,但效果不错:)

海报需要亚马逊的信息。