В каком файле / месте должен обрабатывать данные Scrapy? - PullRequest
0 голосов
/ 29 января 2019

Scrapy имеет несколько точек / мест, где разрешена обработка очищенных данных: паук , элементы и промежуточное ПО паука .Но я не понимаю, где я должен сделать это правильно.Я могу обработать некоторые очищенные данные во всех этих местах.Не могли бы вы объяснить мне различия между ними в деталях?

Например: промежуточное ПО загрузчика возвращает пауку некоторые данные (число, короткая строка, URL, много HTML, список и другое).И что и где мне с ними делать?Я понимаю, что делать, но не понятно, где это сделать ...

Ответы [ 2 ]

0 голосов
/ 30 января 2019

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

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

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

Как правило, это лучший подход, чем просто использование наследования классов между подклассами Spider.

Как использовать каждый компонент:

  • Загрузчики элементов предназначены для общей логики извлечения (например, селекторы XPath и CSS, регулярные выражения), а также для предварительной и последующей обработки значений полей.

    Например:

    • Если вы писали пауки для веб-сайтов, которые используют какой-то стандартный способ пометки данных для извлечения, например schema.org ,Вы можете написать логику извлечения на загрузчике предметов и повторно использовать ее на пауках.

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

  • Конвейеры элементов предназначены для последующей обработки элементов (не только элемента данные в конкретном пункте).

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

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

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

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

  • Расширения используются для более общих целей.меняется на саму Scrapy.( встроенные расширения )

0 голосов
/ 30 января 2019

Я попытаюсь объяснить в следующем порядке:

Паук - это тот, где вы решаете, какие URL отправлять запросы на

DownloadMiddleware имеетprocess_request метод, который вызывается до того, как сделан запрос к URL, и у него есть process_response метод, который вызывается после получения ответа от этого URL

Конвейер - это то место, где данныеотправляется, когда вы yield словарь от вашего паука

...