【发布时间】:2012-08-21 12:34:58
【问题描述】:
是否可以在解析函数中从响应对象中获取request referrer?
10 倍
【问题讨论】:
是否可以在解析函数中从响应对象中获取request referrer?
10 倍
【问题讨论】:
HTTP Referer 字段由 HTTP 客户端在请求标头中设置,不在响应标头中,因为此标头告诉服务器客户端从哪里到达当前页面。
在响应中收到 http Referer 标头会很奇怪。
但是当谈到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'))
希望这对需要帮助的人有所帮助。
【讨论】: