← Ко всем open source проектам

Scrapy

scrapy/scrapy

Scrapy — Python-фреймворк для веб-обходчиков и извлечения структурированных данных с сайтов.

Форки 11,705
Автор scrapy
Язык Python
Лицензия BSD-3-Clause
Обновлено 2026-06-27

Что это такое

Scrapy — зрелый Python-фреймворк для веб-обходчиков и извлечения данных. Он помогает описать, какие страницы посещать, как разбирать ответы, какие ссылки продолжать обходить и куда сохранять структурированный результат.

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

Как устроен обходчик

В Scrapy основная единица — spider. Он получает начальные адреса, разбирает ответы и возвращает элементы данных или новые запросы. Дальше фреймворк управляет очередью, загрузкой страниц и прохождением результата по конвейеру обработки.

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

Простой spider

Пример показывает минимальную структуру: класс обходчика, стартовые адреса и извлечение заголовков со страницы.

Язык: Python
import scrapy

class QuotesSpider(scrapy.Spider):
    name = "quotes"
    start_urls = ["https://quotes.toscrape.com"]

    def parse(self, response):
        for quote in response.css("div.quote"):
            yield {
                "text": quote.css("span.text::text").get(),
                "author": quote.css("small.author::text").get(),
            }

Что внутри репозитория

В репозитории есть ядро фреймворка, загрузчик, планировщик, пауки, конвейеры, экспорт данных, middleware, документация и тесты. Scrapy покрывает полный путь от запроса до сохраненного результата.

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

Сильные стороны

Сильная сторона — зрелость. Scrapy давно используется в Python-экосистеме, поэтому вокруг него есть документация, расширения и понятные паттерны.

Вторая сильная сторона — архитектура для больших обходчиков. Очередь запросов, конвейеры и настройки помогают не превращать сбор данных в набор случайных функций.

Ограничения

Scrapy не отменяет правовые и этические ограничения. Нужно уважать правила сайта, частоту запросов, условия использования и приватность данных.

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