Amazon получает продукт ASIN программно - PullRequest
0 голосов
/ 23 июня 2018

Я пытаюсь программно получить номера ASIN для более 500 книг.

пример: Product Catch-22 Джозефа Хеллера URL-адрес Amazon: https://www.amazon.com/Catch-22-Joseph-Heller/dp/3866155239

Я могу получить номера продуктов вручную, выполнив поиск каждого продукта через браузер, однако это неэффективно. Я хотел бы использовать API или wget / curl в худшем случае, но я сталкиваюсь с некоторыми камнями преткновения.

API Amazon не совсем прост в использовании ... (Я ударился головой о стену, пытаясь исправить хэш запроса подписи с помощью python, но безрезультатно).

Тогда я подумал, что googler может быть другим вариантом, однако после 15 запросов (даже с time.sleep (30) Google блокирует меня на несколько часов [также из нескольких источников IP]).

Как насчет bing ... ну, они не показывают никаких результатов Amazon через API ... что действительно странно ...

Я пытался написать свой собственный Google Parser с помощью wget, но тогда мне пришлось бы импортировать все это в BeautifulSoup и перепроверить ... мои навыки sed и awk оставляют желать лучшего ...

В основном ... Кто-нибудь сталкивался с более простым способом программного получения номера ASIN для продукта?

Спасибо:)

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

https://isbndb.com/ плата за API: (

так ...

Прошел маршрут Google Web Scrape

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

Не довольно, но это сработало:)

0 голосов
/ 23 июня 2018

Согласно странице обслуживания клиентов Amazon:

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

ASIN означает стандартный идентификационный номер Amazon. Почти каждый Продукт на нашем сайте имеет свой собственный ASIN, уникальный код, который мы используем для идентификации Это. Для книг ASIN такой же, как номер ISBN, но для всех другие продукты новый ASIN создается при загрузке элемента в наш каталог.

Это означает, что для книги «Поймай 22» ее ISBN-10 равен 3866155239.

Я предлагаю вам использовать такой сайт, как https://isbndb.com/, чтобы найти номера ISBN для книг, которые автоматически предоставят вам ASIN, которые вы ищете. Он также поставляется с REST API, о котором вы можете прочитать на https://isbndb.com/apidocs.

...