Добавление мета deltafetch_key для каждого запроса в SitemapSpider и CrawlSpider - PullRequest
0 голосов
/ 05 ноября 2018

Я использую функцию deltafetch от scrapinghub, чтобы получать новые страницы с веб-сайта, не запрашивая URL, которые я уже просмотрел.

Я заметил, что на некоторых веб-сайтах scrapy по-прежнему отбрасывает страницы с уже посещенным URL. Мне пришлось заменить отпечаток пальца по умолчанию deltafetch_key, просто используя URL.

Отлично работает с scrapy Spider, так как я могу определять мета в запросах. Однако при использовании CrawlSpider и SitemapSpider я немного застрял. Например, у SitemapSpider есть метод _parse_sitemap, который включает Requests, но я не могу переопределить его.

Я пытался использовать пользовательский DOWNLOADER_MIDDLEWARES, используя process_request и добавляя request.meta['deltafetch_key'] = xxx. Но каким-то образом промежуточное программное обеспечение deltafetch spider вызывается раньше, чем пользовательское промежуточное ПО загрузчика.

У вас есть идеи, как добавить meta информацию к Request из CrawlSpider и SitemapSpider?

1 Ответ

0 голосов
/ 05 ноября 2018

вы можете переопределить исходную мету что-то вроде этого

r.meta['original_meta'] = response.meta

я получил это от https://github.com/scrapy/scrapy/issues/704

...