簡體   English   中英

亞馬遜以編程方式獲取產品 ASIN

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM