Как я должен выбрать input_processor и output_processor в scrapy, я не вижу различий между ними, так как они собираются в конечном итоге конвейер - PullRequest
0 голосов
/ 28 февраля 2019

В документации говорится, что процессор ввода обрабатывает извлеченные данные сразу после их получения, когда процессор вывода вызывается с ранее собранными данными (и обрабатываются с использованием процессора ввода).Результатом обработчика вывода является окончательное значение, которое присваивается элементу.

Как мне выбрать input_processor и output_processor в scrapy, я сейчас очень запутался.

Кроме того, есть личто-то отличается между определением процессора в классе itemloader или в поле?

1 Ответ

0 голосов
/ 01 марта 2019

Ключевым отличием является то, что процессор ввода работает с каждым списком выбранных значений отдельно , тогда как процессор вывода работает с списком всех этих значений, возвращаемых процессорами ввода.Это различие не очевидно, когда вы присоединяете только один селектор к полю.Однако, если вы добавите несколько селекторов (как в их примере ), вы заметите это.Другими словами, в подобном сценарии вы можете принять окончательное решение о том, какие значения выбрать, если у вас есть доступ к всем значениям.

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

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

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

Относительно того, где вы определяете процессоры: это влияет на порядок приоритетов (как упомянуто здесь ) Но большая часть этого действительно вступает в игру только тогда, когда вы начинаете повторно использовать процессоры и загрузчики для разных элементов и хотите, чтобы некоторые из них были переопределены.Для одного предмета и одного загрузчика нет реальной практической разницы.

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