Как парсить данные о продуктах и ценах на Amazon с помощью Python
Table Of Content
Одним из наиболее значимых применений парсинга в розничной торговле и электронной коммерции является мониторинг конкурентной продуктовой информации. Если это делается хорошо, это может привести к дополнительным доходам и позволит продавцу всегда быть в игре и не быть удивленным действиями конкурентов.
Вот простой скрипт, который делает это. Мы будем использовать BeautifulSoup, чтобы извлечь информацию о продукте и ценах на Amazon.
Для начала, вот код, который нам нужен, чтобы получить страницу на Amazon и настроить BeautifulSoup для использования CSS-селекторов для запроса страницы на наличие значимых данных.
# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
import requestsheaders = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/601.3.9 (KHTML, like Gecko) Version/9.0.2 Safari/601.3.9'}
url = 'https://www.amazon.com/Victrola-Bluetooth-Suitcase-Turntable-Turquoise/dp/B00UMVVUOC?pf_rd_p=f62b9627-0b3f-409a-81f2-c4d5e3c556d9&pd_rd_wg=oc1cu&pf_rd_r=FYVCAGRDA22E1G9T400R&ref_=pd_gw_unk&pd_rd_w=oaPrK&pd_rd_r=c678cac3-201d-4cc6-a88f-0a453f156cd5'response=requests.get(url,headers=headers)
soup=BeautifulSoup(response.content,'lxml')
Мы также передаем заголовки пользовательского агента, чтобы симулировать вызов браузера, чтобы не быть заблокированными.
Теперь давайте проанализируем страницу Amazon для этого проигрывателя.
И когда мы проверяем страницу, мы видим, что каждый из элементов HTML находится в теге с идентификатором "product title".
Для нас это не может быть проще.
Этот код должен быть способен получить название.
print('Название: ' soup.select('#productTitle')[0].get_text().strip())
Собирая все вместе, код будет выглядеть так.
# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
import requestsheaders = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/601.3.9 (KHTML, like Gecko) Version/9.0.2 Safari/601.3.9'}
url = 'https://www.amazon.com/Victrola-Bluetooth-Suitcase-Turntable-Turquoise/dp/B00UMVVUOC?pf_rd_p=f62b9627-0b3f-409a-81f2-c4d5e3c556d9&pd_rd_wg=oc1cu&pf_rd_r=FYVCAGRDA22E1G9T400R&ref_=pd_gw_unk&pd_rd_w=oaPrK&pd_rd_r=c678cac3-201d-4cc6-a88f-0a453f156cd5'response=requests.get(url,headers=headers)
soup=BeautifulSoup(response.content,'lxml')#print(soup.select('.a-carousel-card')[0].get_text())try: print('Название: ' soup.select('#productTitle')[0].get_text().strip())
print('Исходная цена: ' soup.select('.priceBlockStrikePriceString')[0].get_text().strip())
print('Цена со скидкой: ' soup.select('#priceblock_ourprice')[0].get_text().strip())
print('Доставка: ' soup.select('#ourprice_shippingmessage .a-color-secondary')[0].get_text().strip())
print('Характеристики следующие:')
for item in soup.select('#feature-bullets li'):
print('\t' item.select('.a-list-item')[0].get_text().strip())
except Exception as e:
raise e
print('')
Вы увидите, что для характеристик мы создали дополнительный цикл. Это потому, что мы обнаружили, что характеристики представлены маркерами внутри тега с идентификатором "feature-bullets". И когда вы запустите его.
- С миллионами высокоскоростных вращающихся прокси, расположенных по всему миру
- С нашей автоматической сменой IP
- С нашей автоматической сменой User-Agent-String (которая имитирует запросы от разных действительных веб-браузеров и версий веб-браузеров)
- С нашей автоматической технологией решения CAPTCHA
Сотни наших клиентов успешно решили проблему блокировки IP с помощью простого API.
Простое API может получить все это, как показано ниже на любом языке программирования.
curl "http://api.proxiesapi.com/?key=API_KEY&url=https://example.com"
У нас есть работающее предложение 1000 бесплатных API-вызовов. Зарегистрируйтесь и получите свой бесплатный API-ключ здесь.
Блог был изначально опубликован здесь: https://www.proxiesapi.com/blog/how-to-scrape-amazon-product-data-and-pricing-usin.html.php