Базовый API¶
В этом разделе описывается основной API Scrapy, предназначенный для разработчиков расширений и промежуточного ПО.
Crawler API¶
Основной точкой входа в API Scrapy является объект Crawler
, передаваемый расширениям с помощью метода класса from_crawler
. Данный объект обеспечивает доступ ко всем основным компонентам Scrapy, и это единственный способ для расширений получить к ним доступ и подключить их функциональность к Scrapy.
Extension Manager отвечает за загрузку и отслеживание установленных расширений и настраивается с помощью параметра EXTENSIONS
, который содержит словарь всех доступных расширений и их порядок, аналогичный тому, как вы настраиваете промежуточное ПО загрузчика.
- class scrapy.crawler.Crawler(spidercls, settings)¶
Для объекта Crawler необходимо создать экземпляр подкласса
scrapy.Spider
и объектаscrapy.settings.Settings
.- settings¶
Менеджер настроек этого краулера.
Это используется расширениями и промежуточным ПО для доступа к настройкам Scrapy этого поискового робота.
Для получения информации о настройках Scrapy см. Настройки.
Для получения информации об API см. класс
Settings
.
- signals¶
Менеджер сигналов этого краулера.
Используется расширениями и промежуточным программным обеспечением для подключения к функциональности Scrapy.
Для ознакомления с сигналами см. Сигналы.
Для получения информации об API см. класс
SignalManager
.
- stats¶
Сборщик статистики этого краулера.
Используется расширениями и промежуточным ПО для записи статистики их поведения или доступа к статистике, собранной другими расширениями.
Для получения информации о сборе статистики см. Сбор статистики.
Для получения информации об API см. класс
StatsCollector
.
- extensions¶
Менеджер расширений, который отслеживает включенные расширения.
Большинству расширений не требуется доступ к этому атрибуту.
Для получения информации о расширениях и списка доступных расширений для Scrapy см. Расширения.
- engine¶
Механизм выполнения, который координирует основную логику сканирования между планировщиком, загрузчиком и пауками.
Некоторому расширению может потребоваться доступ к механизму Scrapy, чтобы проверить или изменить поведение загрузчика и планировщика, хотя это расширенное использование, и данный API ещё не стабилен.
- spider¶
Паук в данный момент ползёт. Это экземпляр класса паука, предоставленный при создании поискового робота, и он создаётся после аргументов, указанных в методе
crawl()
.
- crawl(*args, **kwargs)¶
Запускает поисковый робот, создавая экземпляр своего класса паука с заданными аргументами
args
иkwargs
, при этом запускает механизм выполнения.Возвращает отложенный объект, который запускается, когда сканирование завершается.
API настроек¶
- scrapy.settings.SETTINGS_PRIORITIES¶
Словарь, который устанавливает имя ключа и уровень приоритета настроек по умолчанию, используемых в Scrapy.
Каждый элемент определяет точку входа в настройки, давая ей кодовое имя для идентификации и целочисленный приоритет. При установке и извлечении значений в классе
Settings
более высокие приоритеты имеют больший приоритет над меньшими.SETTINGS_PRIORITIES = { 'default': 0, 'command': 10, 'project': 20, 'spider': 30, 'cmdline': 40, }
Подробное описание каждого источника настроек см. в разделе: Настройки.
SpiderLoader API¶
- class scrapy.spiderloader.SpiderLoader¶
Данный класс отвечает за получение и обработку классов пауков, определенных в проекте.
Пользовательские загрузчики пауков можно использовать, указав их путь в настройках проекта
SPIDER_LOADER_CLASS
. Они должны полностью реализовать интерфейсscrapy.interfaces.ISpiderLoader
, чтобы гарантировать безошибочное выполнение.- from_settings(settings)¶
Данный метод класса используется Scrapy для создания экземпляра класса. Он вызывается с текущими настройками проекта и загружает пауков, найденных рекурсивно в модулях настройки
SPIDER_MODULES
.- Параметры
settings (
Settings
instance) – настройки проекта
- load(spider_name)¶
Получить класс Spider с заданным именем. Он будет искать в ранее загруженных пауках класс паука с именем
spider_name
и вызовет KeyError, если он не найден.- Параметры
spider_name (str) – имя класса паука
- list()¶
Получить имена доступных в проекте пауков.
- find_by_request(request)¶
Перечислите имена пауков, которые могут обработать данный запрос. Будет пытаться сопоставить URL-адрес запроса с доменами пауков.
- Параметры
request (
Request
instance) – запрошенный запрос
API сигналов¶
API сборщика статистики¶
В модуле scrapy.statscollectors
доступно несколько сборщиков статистики, и все они реализуют API сборщика статистики, определенный классом StatsCollector
(от которого все они наследуются).
- class scrapy.statscollectors.StatsCollector¶
- get_value(key, default=None)¶
Возвращает значение для данного ключа статистики или значение по умолчанию, если оно не существует.
- get_stats()¶
Получить всю статистику бегущего в данный момент паука в словаре.
- set_value(key, value)¶
Устанавливает заданное значение для данного ключа статистики.
- set_stats(stats)¶
Заменить текущую статистику с помощью словаря, переданного в аргументе
stats
.
- inc_value(key, count=1, start=0)¶
Увеличивает значение заданного ключа статистики на заданное количество, принимая заданное начальное значение (если оно не задано).
- max_value(key, value)¶
Устанавливайте данное значение для данного ключа, только если текущее значение для того же ключа меньше, чем значение. Если для данного ключа нет текущего значения, оно всегда устанавливается.
- min_value(key, value)¶
Устанавливайте данное значение для данного ключа, только если текущее значение для того же ключа больше, чем value. Если для данного ключа нет текущего значения, оно всегда устанавливается.
- clear_stats()¶
Очистить всю статистику.
Следующие методы не являются частью api сбора статистики, но вместо этого используются при реализации настраиваемых сборщиков статистики:
- open_spider(spider)¶
Открыть данного паука для сбора статистики.
- close_spider(spider)¶
Закрыть данного паука. После того, как это вызвано, больше нельзя будет получить доступ или собрать конкретную статистику.