Web scraping Amazon以编程方式获取产品
我试图通过编程检索超过500本书的ASIN编号 示例:Joseph Heller的产品Catch-22 亚马逊网址: 我可以通过浏览器搜索每种产品来手动获取产品编号,但这并不高效。我希望在最坏的情况下使用API或wget/curl,但我遇到了一些障碍 AmazonAPI并不是最容易使用的…(我一直在努力用python纠正签名请求散列,但没有用…) 然后我想google可能是另一个选择,但是在15个请求之后(即使有时间,sleep(30)google也会把我锁在外面几个小时[来自多个IP来源]) bing呢…他们没有通过API显示任何亚马逊的结果…这真的很奇怪 我试着用wget编写我自己的谷歌解析器,但之后我不得不将所有这些导入到BeautifulSoup并重新分析……我的sed和awk技能还有很多需要改进的地方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来源])
基本上……有没有人遇到过一种更简单的方法,可以通过编程方式获取产品的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()
虽然不漂亮,但效果不错:)海报需要亚马逊的信息。