[英]Amazon Getting Product ASIN programmatically
我正在嘗試以編程方式檢索 500 多本書的 ASIN 編號。
示例:Joseph Heller 的 Product Catch-22 亞馬遜 URL: https : //www.amazon.com/Catch-22-Joseph-Heller/dp/3866155239
我可以通過瀏覽器搜索每個產品來手動獲取產品編號,但這效率不高。 我想在最壞的情況下使用 API 或 wget/curl,但我遇到了一些絆腳石。
Amazon API 並不是最容易使用的......(我一直在用頭撞牆,試圖用 python 使簽名請求哈希正確無濟於事......)
然后我認為 googler 可能是另一種選擇,但是在 15 個請求之后(即使有 time.sleep(30) google 也會將我鎖定幾個小時 [來自多個 IP 來源])。
bing 怎么樣……好吧,他們沒有通過 API 顯示任何亞馬遜結果……這真的很奇怪……
我嘗試用 wget 編寫自己的 Google 解析器,但隨后我必須將所有這些導入 BeautifulSoup 並重新解析……我的 sed 和 awk 技能還有很多不足之處……
基本上......有沒有人遇到過以編程方式獲取產品ASIN編號的更簡單方法?
https://isbndb.com/ API 收費 :(
所以...
走 Google 網頁抓取路線
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()
不漂亮,但它有效:)
根據亞馬遜的客戶服務頁面:
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 上閱讀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.