Ответ
Для веб-парсинга в Python существует несколько ключевых библиотек, каждая из которых решает свою задачу:
-
Requests — для выполнения HTTP-запросов.
- Назначение: Получение HTML-кода страницы, отправка данных форм, работа с заголовками и cookies.
- Особенность: Не исполняет JavaScript. Получает только статический контент, который отдает сервер.
-
BeautifulSoup4 (BS4) — для извлечения данных из HTML и XML.
- Назначение: Парсинг полученного HTML-кода, навигация по DOM-дереву, поиск элементов по тегам, классам и другим атрибутам.
- Особенность: Работает в связке с
requests. Очень удобный и простой API для новичков.
Пример связки
requestsиBeautifulSoup:import requests from bs4 import BeautifulSoup url = "https://example.com" response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') # Найти все заголовки h1 на странице title = soup.find('h1').text print(title) -
Selenium — для автоматизации браузера.
- Назначение: Работа с динамическими сайтами, где контент генерируется с помощью JavaScript.
- Особенность: Управляет реальным браузером (Chrome, Firefox), что позволяет ему выполнять JS, нажимать на кнопки и имитировать действия пользователя. Работает медленнее, чем
requests.
Пример с
Selenium:from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get("https://example.com") # Найти элемент, который мог быть добавлен динамически dynamic_element = driver.find_element(By.CSS_SELECTOR, "div.dynamic-content") print(dynamic_element.text) driver.quit() -
Scrapy — полноценный фреймворк для веб-парсинга.
- Назначение: Создание сложных и быстрых "пауков" (crawlers) для обхода и сбора данных с множества страниц.
- Особенность: Асинхронный, имеет встроенные механизмы для обработки данных (pipelines), управления прокси и user-agent.