是否可以从解析函数中的响应对象中获取请求引用者?
10倍
HTTPReferer
字段由 HTTP 客户端在请求标头中设置,而不是在响应标头中设置,因为此标头告诉服务器客户端从哪里到当前页面。
Referer
收到 http标头作为响应会很奇怪。
但是当谈到 时,在响应的字段中有一个对生成 的对象scrapy
的引用,所以下一个调用结果:Request
Response
request
response.request.headers.get('Referer', None)
Referer
如果在发出请求时设置了标头,则可以包含标头。
上面的问题很久以前就问过了,已经很好回答了。
但是,如果 Rostyslav Dzinko 的答案不适用于您的情况,我想我会添加一个不同的答案。
假设您有 2 种不同的解析器方法:
如果在 parser_B 中无法获取文章列表(列表页)的 url(referer url),您可以在 parser_A 中设置 headers 字段,然后将其发送到 parser_B,如下例所示:
yield scrapy.Request(url=article_page_url, callback=self.parser_B, dont_filter=True, headers={'referer_url': list_page_url})
并且,在 parser_B 方法中,您可以执行以下操作来获取列表页面的 url:
print(response.request.headers.get('referer_url'))
希望这对需要帮助的人有所帮助。