Вот простой пример получения данных о товарах на Amazon с использованием языка python.
Оглавление
- Установить среду
- Выполнение
- Заключение
Сканирование данных с веб-страниц — не такая уж незнакомая концепция для веб-программистов. Однако после более чем двух лет работы программистом у меня появился первый опыт сканирования данных, но также и с известного торгового сайта 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. Есть много способов сканирования данных.
Надеюсь, статья будет полезна для вас, особенно для тех из вас, кто работает с левой стороной дропшиппинга.
Спасибо, что прочитали мою статью!