小编典典

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

scrapy

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

根据这个问题,我检查了

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

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

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

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


阅读 919

收藏
2020-04-09

共2个答案

小编典典

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

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

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

2020-04-09
小编典典

简而言之,你需要将此中间件添加到项目的设置文件中。

SPIDER_MIDDLEWARES = {
'scrapy.contrib.spidermiddleware.referer.RefererMiddleware': True,
}

然后,在响应解析方法中,可以使用response.request.headers.get('Referrer', None)来获取引用。

2020-04-09