为SitemapSpider和CrawlSpider中的每个请求添加meta deltafetch_key

时间:2018-11-05 09:15:36

标签: python scrapy scrapinghub

我正在使用scrapinghub的deltafetch功能来从网站获取新页面,而无需请求我已经抓取的网址。

我注意到,在某些网站上,scrapy仍会刮擦带有已访问过的URL的页面。我只需要使用网址就可以替换默认的指纹deltafetch_key。

因为我可以在请求中定义元数据,所以它可以很好地与Spider配合使用。但是,当使用CrawlSpiderSitemapSpider时,我有点卡住了。例如,SitemapSpider有一个_parse_sitemap方法,其中包含Requests,但是我无法真正覆盖它。

我尝试使用自定义DOWNLOADER_MIDDLEWARES,方法是使用process_request并添加request.meta['deltafetch_key'] = xxx。但是以某种方式,在自定义下载程序中间件之前调用了deltafetch Spider中间件。

您有任何想法如何将meta信息添加到RequestCrawlSpider的{​​{1}}中吗?

1 个答案:

答案 0 :(得分:0)

您可以像这样覆盖原始的元数据

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

我从https://github.com/scrapy/scrapy/issues/704那里得到了