Базовый 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)

Закрыть данного паука. После того, как это вызвано, больше нельзя будет получить доступ или собрать конкретную статистику.