Боты и автоматизация

Учебник Веб-скрейпинг на Python для начинающих

18 уроков · 6 разделов · бесплатно, без регистрации

Полный курс по сбору данных с веб-сайтов на Python — от первого HTTP-запроса до промышленного краулера. Вы освоите библиотеку requests и парсинг HTML стандартными средствами Python, научитесь извлекать данные с помощью BeautifulSoup, работать с динамическими сайтами через Selenium и Playwright и строить масштабные краулеры на Scrapy.

Отдельный акцент — на ответственном скрейпинге: robots.txt, условия использования, правовые ориентиры (hiQ против LinkedIn, CFAA, GDPR) и логика антибот-защит. Многие примеры запускаются прямо в браузере на стандартной библиотеке Python.

Курс «Веб-скрейпинг на Python» состоит из 6 разделов и 18 уроков: Основы веба и HTTP для скрейпинга, requests и разбор HTML, Разбор HTML с BeautifulSoup, Динамические сайты: Selenium и Playwright, Scrapy: промышленный краулинг и Этика, закон и антибот-защиты. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Основы веба и HTTP для скрейпинга

    1. Что такое веб-скрейпинг и когда он нужен

      Введение в веб-скрейпинг на Python: что такое скрейпинг, чем он отличается от парсинга и API, из каких этапов состоит и когда его стоит применять.

    2. HTTP под капотом: запросы, ответы и коды статуса

      Как устроен протокол HTTP для веб-скрейпинга: методы GET и POST, заголовки, коды статуса 200/403/429, разбор URL через urllib.parse.

    3. Структура HTML и DOM-дерево

      Как устроен HTML для скрейпинга: теги, атрибуты, классы, DOM-дерево. Разбор страницы стандартным модулем html.parser прямо в браузере.

  2. 2 requests и разбор HTML

    1. Библиотека requests: первые запросы

      Как отправлять HTTP-запросы в Python с помощью requests: GET, заголовки, параметры, таймауты, raise_for_status и сессии. Лучшие практики скрейпинга.

    2. Извлечение данных стандартной библиотекой

      Парсинг HTML без внешних библиотек: извлечение ссылок через html.parser и поиск e-mail регулярными выражениями re. Работает прямо в браузере.

    3. Работа с URL: ссылки и параметры пагинации

      Как скрейперу обрабатывать URL в Python: urljoin для относительных ссылок, urlencode и urlunparse для пагинации каталога. Примеры работают в браузере.

  3. 3 Разбор HTML с BeautifulSoup

    1. BeautifulSoup: парсинг HTML по-человечески

      Знакомство с BeautifulSoup (bs4): построение дерева из HTML, методы find и find_all, поиск по тегу, классу и атрибутам, извлечение текста.

    2. CSS-селекторы и навигация по дереву

      Поиск элементов в BeautifulSoup через CSS-селекторы (select, select_one) и навигация по дереву: find_parent, find_next_sibling. Сбор данных в список.

    3. Сбор данных в таблицу: CSV и JSON

      Как собрать спарсенные данные в список словарей и сохранить в CSV/JSON стандартными модулями Python. Чистка и нормализация текста, защита от пустых полей.

  4. 4 Динамические сайты: Selenium и Playwright

    1. Динамические сайты: почему requests не хватает

      Почему на SPA-сайтах (React, Vue) данных нет в исходном HTML и requests видит пустой каркас. Два пути: скрытый JSON-API или управление браузером.

    2. Selenium 4: автоматизация браузера

      Скрейпинг динамических сайтов с Selenium 4: запуск headless-браузера, поиск элементов по CSS, явные ожидания WebDriverWait вместо time.sleep, driver.quit.

    3. Playwright: современный браузерный скрейпинг

      Playwright для скрейпинга динамики: запуск Chromium, авто-ожидание элементов, query_selector_all, перехват сетевых ответов для получения скрытого JSON-API.

  5. 5 Scrapy: промышленный краулинг

    1. Scrapy: фреймворк для масштабного краулинга

      Знакомство со Scrapy: пауки (Spider), start_urls, метод parse, yield данных и Request, response.follow для пагинации, экспорт через -o, DOWNLOAD_DELAY.

    2. Архитектура Scrapy: путь запроса по конвейеру

      Как устроен Scrapy внутри: движок, паук, планировщик (Scheduler), загрузчик (Downloader), Item Pipeline и middleware. Цикл краулинга и дедупликация URL.

    3. Вежливый Scrapy: robots.txt, задержки, AutoThrottle

      Настройки ответственного краулинга в Scrapy: ROBOTSTXT_OBEY, DOWNLOAD_DELAY, CONCURRENT_REQUESTS, AUTOTHROTTLE, честный USER_AGENT и HTTPCACHE.

  6. 6 Этика, закон и антибот-защиты

    1. robots.txt и условия использования

      Как читать и уважать robots.txt при скрейпинге: Disallow, Allow, Crawl-delay, проверка через urllib.robotparser. Отличие robots.txt от Terms of Service.

    2. Законность и этика скрейпинга

      Правовые аспекты веб-скрейпинга: прецедент hiQ против LinkedIn и CFAA, публичные vs защищённые данные, GDPR и CCPA для персональных данных, авторские права, этика.

    3. Антибот-защиты: как сайты ловят ботов

      Как работают антибот-системы (Cloudflare, DataDome): анализ User-Agent и заголовков, частоты запросов, TLS/JA3-отпечатков, JavaScript-челленджей и поведения.

py
Курс по теме
Пройдите курс «Python с нуля» — по шагам, с проверкой
8 уроков · ~14 ч · теория, упражнения и экзамен с бейджем
Открыть курс →