перейти к содержанию

Как очистить данные о товарах Best Buy с помощью Python и Selenium

Best Buy — один из крупнейших розничных продавцов электроники в США. Best Buy предлагает тысячи продуктов в таких категориях, как компьютеры, бытовая техника, видеоигры и т. д., и предлагает кладезь данных для аналитиков и предприятий. В этом подробном руководстве мы расскажем, как получить данные о продуктах Best Buy с помощью Python и Selenium.

Зачем очищать данные о лучших покупках?

Вот некоторые из основных причин, по которым вы можете захотеть очистить данные с веб-сайта Best Buy:

  • Исследование конкурентных цен – Отслеживайте цены Best Buy с течением времени, чтобы оставаться конкурентоспособными.
  • Анализ ассортимента продукции – Посмотрите, на каких категориях и брендах фокусируется Best Buy.
  • Цены на основе местоположения – Проверьте, различаются ли цены Best Buy в зависимости от географического региона.
  • Детальный мониторинг продукта – Отслеживайте изменения в деталях продукта, таких как описание, изображения, рейтинги.
  • Инвентаризационный мониторинг – Проверяйте уровень запасов продуктов в режиме реального времени.

Хотя Best Buy предоставляет некоторые API для доступа к своим данным, они имеют ограничения по масштабу и могут измениться в любое время. Веб-скрапинг позволяет быстро, экономично и без использования API-интерфейсов собирать большие объемы данных Best Buy.

Обзор парсинга

В этом уроке мы будем использовать Python и Selenium. Вот обзор шагов:

  1. Используйте Selenium для загрузки страниц продуктов Best Buy.
  2. Анализируйте HTML-код каждой страницы, чтобы извлечь ключевые данные, такие как заголовок, цена и описание.
  3. Храните очищенные данные в кадре данных Pandas или файле CSV.
  4. Добавьте прокси, чтобы избежать блокировки во время парсинга.

Давайте подробно рассмотрим каждый раздел.

Импорт и настройка

Мы импортируем следующие библиотеки:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC

import pandas as pd

Selenium загрузит веб-страницы, BeautifulSoup проанализирует HTML, а Pandas сохранит очищенные данные.

В качестве браузера мы будем использовать Chrome:

options = webdriver.ChromeOptions() 
options.add_argument("start-maximized")
driver = webdriver.Chrome(options=options)

И мы добавим некоторые условия ожидания Selenium, чтобы страницы могли полностью загрузиться:

wait = WebDriverWait(driver, 20)
wait.until(EC.presence_of_element_located((By.ID, "productTitle")))

Парсинг страниц продуктов

Теперь мы можем очистить страницу продукта Best Buy. Мы извлечем ключевые поля, которые нам нужны:

url = "https://www.bestbuy.com/site/apple-watch-series-8-41mm-gps-cellular-starlight-aluminum-case-with-starlight-sport-band-starlight/6521420.p?skuId=6521420"

driver.get(url)

product = {
    ‘title‘: driver.find_element(By.ID, "productTitle").text,
    ‘price‘: driver.find_element(By.CLASS_NAME, "priceView-customer-price").text,
    ‘rating‘: driver.find_element(By.CLASS_NAME, "c-review-average").text,
    ‘description‘: driver.find_element(By.ID, "longDescription").text
}

Мы можем обернуть это в функцию для очистки любого URL-адреса продукта:

def scrape_product(url):
   driver.get(url)

   product = {
       ‘title‘: ...,
       ‘price‘: ...,
       ...
   }

   return product

И прокрутите список URL-адресов:

products = []

urls = [
    ‘url1‘,
    ‘url2‘,
    ...
]

for url in urls:
    product = scrape_product(url)
    products.append(product)

Это дает нам список хорошо структурированных данных о продуктах от Best Buy!

Хранение скопированных данных

Мы можем хранить очищенные данные Best Buy в кадре данных Pandas:

import pandas as pd 

df = pd.DataFrame(products)
print(df)

Или экспортируйте в файл CSV:

df.to_csv(‘bestbuy_products.csv‘, index=False)

Это позволяет организовать данные для будущего анализа.

Избегайте блокировки

Чтобы избежать блокировки Best Buy во время парсинга, мы можем добавить прокси:

from selenium.webdriver.common.proxy import Proxy, ProxyType

proxy = Proxy()
proxy.proxy_type = ProxyType.MANUAL
proxy.http_proxy = "xxx.xxx.xxx.xxx:xxxx" 

options.proxy = proxy

Ротация разных прокси предотвратит пометку вашего IP-адреса для парсинга.

Еще несколько советов:

  • Добавить случайные задержки между запросами
  • Ротация пользовательских агентов
  • Сгребайте порциями, а не все сразу

Дополнительные методы

В этом руководстве рассматриваются основы, но есть и более продвинутые методы для более крупных парсингов Best Buy:

  • многопоточность – Работайте быстрее, распределяя работу по потокам
  • Селеновая сетка – Распределить парсинг на удаленных узлах Selenium.
  • Скребок API – Использование облачных прокси и решение капчи

Также есть такие инструменты, как Scrapy которые обеспечивают основу для крупных парсинговых проектов.

Очистка этики

При парсинге Best Buy или любого другого сайта обязательно:

  • Следуйте их файлу robots.txt и условиям обслуживания.
  • Избегайте перегрузки их серверов
  • Используйте данные законно и этично

Парсинг общедоступных данных, как правило, законен, но всегда относитесь к парсингу ответственно!

Заключение

В этом руководстве мы увидели, как использовать Python и Selenium для сбора данных о продуктах из Best Buy. Шаги включали:

  • Загрузка страниц с помощью Selenium
  • Разбор HTML с помощью BeautifulSoup
  • Хранение данных в Pandas
  • Добавление прокси во избежание блокировок

Парсинг может предоставить ценную информацию из данных о продуктах Best Buy. Используя правильные методы, вы можете создать парсеры для извлечения всех видов информации с их сайта.

Дайте мне знать, если у вас есть еще вопросы!

Присоединяйтесь к беседе

Ваш электронный адрес не будет опубликован. Обязательные поля помечены * *