Введение

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

Настройка селена

Selenium — это популярная библиотека веб-тестирования, которая может взаимодействовать с веб-сайтами, насыщенными JavaScript. Во-первых, вам нужно установить Selenium и веб-драйвер для предпочитаемого вами браузера. В этом примере мы будем использовать веб-драйвер Chrome.

1 — Установите Селен:

pip install selenium

2 — Загрузите Chrome WebDriver и добавьте его путь в системную переменную PATH или укажите путь в своем скрипте.

Очистка списка продуктов

Мы создадим функцию для извлечения информации о продукте из примера веб-сайта электронной коммерции. Замените example.com URL-адресом целевого веб-сайта.

import time
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

def scrape_products(page_url):
    options = Options()
    options.headless = True
    driver = webdriver.Chrome(executable_path='/path/to/chromedriver', options=options)
    driver.get(page_url)
    time.sleep(5)
    soup = BeautifulSoup(driver.page_source, 'html.parser')
    driver.quit()
    products = []
    product_cards = soup.find_all('div', class_='product-card')
    for card in product_cards:
        title = card.find('h2', class_='product-title').text
        price = card.find('span', class_='product-price').text
        products.append({'title': title, 'price': price})
    return products

Обработка нумерации страниц

Создайте функцию для очистки нескольких страниц, перебирая каждую страницу и вызывая функцию scrape_products.

def scrape_all_pages(base_url, total_pages):
    all_products = []
    for page_num in range(1, total_pages + 1):
        page_url = f"{base_url}?page={page_num}"
        print(f"Scraping page {page_num}: {page_url}")
        products = scrape_products(page_url)
        all_products.extend(products)
    return all_products

Пример парсинга

Замените example.com URL-адресом целевого веб-сайта и укажите общее количество страниц, которые вы хотите очистить.

base_url = "https://www.example.com/products"
total_pages = 5
all_products = scrape_all_pages(base_url, total_pages)
print(all_products)

Хранение данных

После сбора данных о продукте вы можете сохранить их в Pandas DataFrame и сохранить в файл CSV.

import pandas as pd

df = pd.DataFrame(all_products)
df.to_csv("products.csv", index=False)

Заключение

В этой статье мы продемонстрировали, как использовать Selenium и BeautifulSoup для очистки нескольких страниц списков продуктов с веб-сайта электронной коммерции с большим количеством JavaScript. Объединив эти мощные библиотеки, вы сможете преодолеть проблемы, связанные с современными веб-технологиями, и собрать ценные данные для анализа или других целей.

Если вы нашли эту статью ценной или проницательной, я был бы очень признателен за вашу поддержку, подписавшись на меня, Джонатан Мондо, здесь, на Medium. Я стремлюсь делиться более увлекательным и практичным контентом, который поможет вам оставаться впереди в современном быстро меняющемся мире. Не пропустите мои будущие статьи — подписывайтесь на меня сейчас, и давайте учиться и расти вместе!