Использование промежуточного программного обеспечения Spider при использовании фреймворка Scrapy

задняя часть WeChat рептилия Scrapy

Spider Middleware — это инфраструктура ловушек, которая вмешивается в механизм обработки Scrapy Spider. Давайте сначала посмотрим на его архитектуру, как показано на рисунке ниже.

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

Программное обеспечение промежуточного слоя Spider имеет следующие три функции.

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

  • Мы можем обработать Запрос до того, как Запрос, сгенерированный Пауком, будет отправлен Планировщику, то есть до того, как Запрос будет отправлен Планировщику.

  • Мы можем обработать Предмет до того, как Предмет, сгенерированный Пауком, будет отправлен в Конвейер Предметов, то есть до того, как Предмет будет отправлен в Конвейер Предметов.

1. Инструкция по применению

Следует отметить, что Scrapy на самом деле предоставил много промежуточного программного обеспечения Spider, котороеSPIDER_MIDDLEWARES_BASEопределяется этой переменной.

SPIDER_MIDDLEWARES_BASEСодержимое переменной следующее:

{
    'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware': 50,
    'scrapy.spidermiddlewares.offsite.OffsiteMiddleware': 500,
    'scrapy.spidermiddlewares.referer.RefererMiddleware': 700,
    'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware': 800,
    'scrapy.spidermiddlewares.depth.DepthMiddleware': 900,
}

Как и промежуточное ПО Downloader, ПО промежуточного слоя Spider сначала добавляется вSPIDER_MIDDLEWARESНастройки, эта настройка будет с ScrapySPIDER_MIDDLEWARES_BASEСлияние определенного промежуточного программного обеспечения Spider. Затем отсортируйте в соответствии с числовым приоритетом значений ключа, в результате чего получится упорядоченный список. Первое промежуточное ПО ближе всего к движку, а последнее промежуточное ПО ближе всего к пауку.

Основной метод

Встроенное в Scrapy промежуточное ПО Spider предоставляет базовые функции для Scrapy. Если мы хотим расширить его функциональность, нам нужно всего лишь реализовать несколько методов.

Каждое ПО промежуточного слоя Spider определяет класс с одним или несколькими из следующих методов, а основные методы следующие.

  • process_spider_input(response, spider).

  • process_spider_output(response, result, spider).

  • process_spider_exception(response, exception, spider).

  • process_start_requests(start_requests, spider).

Вам нужно реализовать только один из этих методов, чтобы определить промежуточное ПО Spider. Давайте посмотрим на подробное использование этих 4 методов.

1. process_spider_input(response, spider)

Когда ответ обрабатывается промежуточным программным обеспечением Spider,process_spider_input()метод называется.

process_spider_input()Параметры метода следующие.

  • response, является объектом Response, то есть обработанным Response.

  • spider, это объект Паук, то есть Паук, соответствующий Ответу.

process_spider_input()Должен возвращать None или вызывать исключение.

  • Если он возвращает None, Scrapy продолжит обработку ответа, вызывая все остальные компоненты промежуточного слоя Spider до тех пор, пока Spider не обработает ответ.

  • Если он выдает исключение, Scrapy не будет вызывать какие-либо другие промежуточные программы Spider.process_spider_input()метод, при вызове метода Requesterrback()метод.errbackВывод будет повторно введен в промежуточное ПО с использованиемprocess_spider_output()метод для обработки и вызывается, когда он выдает исключениеprocess_spider_exception()обрабатывать.

2. process_spider_output(response, result, spider)

Когда Spider обрабатывает ответ и возвращает результат,process_spider_output()метод называется.

process_spider_output()Параметры метода следующие.

  • response, является объектом Response, то есть ответом, который генерирует выходные данные.

  • result, повторяемый объект, содержащий объекты Request или Item, то есть результаты, возвращаемые Spider.

  • spider, является объектом Spider, то есть Spider, соответствующим его результату.

process_spider_output()Должен возвращать итерируемый объект, содержащий объекты Request или Item.

3. process_spider_exception(response, exception, spider)

Когда Spider или промежуточное ПО Spiderprocess_spider_input()Когда метод выдает исключение,process_spider_exception()метод называется.

process_spider_exception()Параметры метода следующие.

  • response, является объектом Response, то есть ответом, который обрабатывается при возникновении исключения.

  • exception, является объектом Exception, то есть выброшенным исключением.

  • spider, является объектом Spider, то есть Spider, вызвавшим исключение.

process_spider_exception()должен либо вернутьсяNoneили возвращает итерируемый объект, содержащий объекты Response или Item.

  • если он вернетсяNone, Scrapy будет продолжать обрабатывать исключение, вызывая другое промежуточное ПО Spider.process_spider_exception()до тех пор, пока не будет вызвано все ПО промежуточного слоя Spider.

  • Если он возвращает итерируемый объект, другие промежуточные программы Spiderprocess_spider_output()называется метод, другойprocess_spider_exception()не будет называться.

4. process_start_requests(start_requests, spider)

process_start_requests()Метод вызывается с запросом, запущенным пауком в качестве параметра, и процесс выполнения аналогиченprocess_spider_output(), за исключением того, что он не имеет связанного ответа и должен возвращать запрос.

process_start_requests()Параметры метода следующие.

  • start_requests, является итерируемым объектом, содержащим запросы, а именно запросы запуска.

  • spider, является объектом Spider, то есть Spider, которому принадлежат Start Requests.

process_start_requests()Должен вернуть другую итерацию, содержащую объекты запроса.

3. Заключение

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


Этот ресурс был впервые опубликован в личном блоге Цуй Цинцай Цзин Ми:Практическое руководство по разработке веб-краулера на Python3 | Цзин Ми

Если вы хотите узнать больше информации о поисковых роботах, обратите внимание на мой личный публичный аккаунт WeChat: Coder of Attack.

WeChat.QQ.com/Day/5 Это радость VE Z…(автоматическое распознавание QR-кода)