Введение
Веб-скрапинг — это мощный метод сбора данных с веб-сайтов. При работе с современными веб-сайтами электронной коммерции, которые сильно зависят от 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. Я стремлюсь делиться более увлекательным и практичным контентом, который поможет вам оставаться впереди в современном быстро меняющемся мире. Не пропустите мои будущие статьи — подписывайтесь на меня сейчас, и давайте учиться и расти вместе!