Вот простой пример получения данных о товарах на Amazon с использованием языка python.

Оглавление

  1. Установить среду
  2. Выполнение
  3. Заключение

Сканирование данных с веб-страниц — не такая уж незнакомая концепция для веб-программистов. Однако после более чем двух лет работы программистом у меня появился первый опыт сканирования данных, но также и с известного торгового сайта Amazon.

Многие из вас просят меня стать программистом. Что мне делать, чтобы сканировать данные с сайта Amazon? Это началось несколько месяцев назад, когда мой лучший друг напился и поехал на мотоцикле, чтобы врезаться в электрический столб, сломал ногу и до сих пор не оправился от работы.

Несколько дней назад я говорил о чае со льдом и услышал об этом, когда я был дома, занимаясь прямой доставкой или чем-то еще, я пошел в интернет-поиск, и это было довольно хорошо. Но боль в этом, как говорится, сложно контролировать цену товара на странице амазона, переходить по ссылке каждого товара и заново писать цену. Поэтому я подумал, почему бы не просканировать данные с сайта amazon по-быстрому.

И после дня поиска, копирования всевозможного кода я смог получить то, что хотел мой друг, с веб-сайта Amazon. В этой статье вы узнаете, как сканировать данные с сайта Amazon с помощью Python.

Установить среду

Нам понадобится Python и некоторые пакеты для загрузки веб-страницы и анализа HTML.

  • Python: последнюю версию можно скачать здесь.
  • Python PIP для установки пакетов.
  • Python Requests позволяет отправлять HTTP-запросы.
  • Python LXML для разбора HTML.
  • Если на вашем ПК уже есть pip, установка LXML не составит труда. Просто запустите следующую команду в терминале:
pip install requests lxml

Делает

При переходе по ссылке на товар, например, https://www.amazon.com/Upgraded-Dimmable-Spectrum-Adjustable-Gooseneck/dp/B07PXP7DW5

Вы можете увидеть следующую информацию:

Моя работа заключается только в том, чтобы узнать цену и название продукта. Но есть URL-адреса, которые Amazon попросит вас иметь файлы cookie для отображения цен на продукты.

Получить куки в браузере очень просто, так что вы должны выяснить это сами.

Мы будем иметь:

cookies = { ... }
headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36'
}

Мы загрузим HTML-страницу, сначала нужно запросить веб-страницу, чтобы вернуть ответ:

response = requests.get (url, headers = headers, verify = False, cookies = cookies)

URL-адрес здесь https://www.amazon.com/Upgraded-Dimmable-Spectrum-Adjustable-Gooseneck/dp/B07PXP7DW5.

И тогда содержимое ответа — это HTML-страница, которую вам нужно получить. Нам нужно будет знать, как название и цена продукта будут отображаться на этой HTML-странице.

Самый простой способ — зарегистрироваться в браузере.

Таким образом, цена товара будет иметь идентификатор priceblock_ourprice.

Название продукта будет в теге h1, идентификатором которого является title.

Нам нужно написать функцию для получения указанных выше значений после загрузки HTML-страницы с URL-адреса:

from lxml import html
import csv
import os
import requests
from exceptions import ValueError
from time import sleep
from random import randint
def parse (url):
    headers = {
        'User-Agent': 'Mozilla / 5.0 (X11; Linux x86_64) AppleWebKit / 537.36 (KHTML, like Gecko) Chrome / 42.0.2311.90 Safari / 537.36'
    }
    
    try:
        # Retrying for failed requests
        for i in range (20):
            # Generating random delays
            sleep (randint (1,3))
            # Adding verify = False to avold ssl related issues
        cookies = {// cookies on your device}
            response = requests.get (url, headers = headers, verify = False, cookies = cookies)
if response.status_code == 200:
                doc = html.fromstring (response.content)
                XPATH_NAME = '// h1 [@ id = "title"] // text ()'
                XPATH_PRICE = '// span [contains (@id, "priceblock_ourprice")] / text ()'
RAW_NAME = doc.xpath (XPATH_NAME)
                RAW_PRICE = doc.xpath (XPATH_PRICE)
NAME = '' .join (''. Join (RAW_NAME) .split ()) if RAW_NAME else None
                PRICE = '' .join (''. Join (RAW_PRICE) .split ()). Strip () if RAW_SALE_PRICE else None
data = {
                    'NAME': NAME,
                    'PRICE': PRICE,
                    'URL': url,
                }
                return data
            
            elif response.status_code == 404:
                break
except Exception as e:
        print e

После получения данных мы можем сохранить их в файл CSV; например, у меня есть 2 URL-адреса для получения цены и названия продукта, код будет выполняться следующим образом:

def ReadUrl ():
     UrlList = ['https://www.amazon.com/Upgraded-Dimmable-Spectrum-Adjustable-Gooseneck/dp/B07PXP7DW5', 'https://www.amazon.com/Autel-MS906-Automotive-Diagnostic-Adaptations/ dp / B01CQNNBA4? ref_ = Oct_DLandingS_PC_b8ca5425_2 & smid = A3MNQOSQ336D3K ']
     extracted_data = []
for i in UrlList:
         print "Processing:" + i
         # Calling the parser
         parsed_data = parse (i)
         if parsed_data:
             extracted_data.append (parsed_data)
# Writing scraped data to csv file
     with open ('scraped_data.csv', 'w') as csvfile:
         fieldnames = ['NAME', 'PRICE', 'URL']
         writer = csv.DictWriter (csvfile, fieldnames = fieldnames, quoting = csv.QUOTE_ALL)
         writer.writeheader ()
         for data in extracted_data:
             writer.writerow (data)
if __name__ == "__main__":
     ReadUrl ()

Вы сохраняете имя файла как product_amazon.py и запускаете python product_amazon.py, чтобы увидеть результаты.

Вывод

Вот простой пример получения данных о товарах на Amazon с использованием языка python. Есть много способов сканирования данных.

Надеюсь, статья будет полезна для вас, особенно для тех из вас, кто работает с левой стороной дропшиппинга.

Спасибо, что прочитали мою статью!