如何将头添加到Scrapy CrawlSpider请求?


问题内容

我正在使用CrawlSpider类来爬网网站,并且我想修改每个请求中发送的标头。具体来说,我想将引荐添加到请求中。

根据这个问题,我检查了

response.request.headers.get('Referer', None)

在我的响应解析函数中,并且Referer标题不存在。我认为这意味着没有在请求中提交引荐来源网址(除非网站未返回请求,我不确定)。

我一直无法弄清楚如何修改请求的标头。同样,我的蜘蛛是从CrawlSpider派生的。覆盖CrawlSpider的值_requests_to_followprocess_request为规则指定回调将不起作用,因为此时引用者不在范围内。

有人知道如何动态修改请求标头吗?


问题答案:

可以使用参数REFERER手动传递给每个请求headers

yield Request(parse=..., headers={'referer':...})

RefererMiddleware 做同样的事情,自动从先前的响应中获取引用网址。