首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scrapy:如何打印request referrer

问Scrapy:如何打印request referrer
EN

Stack Overflow用户
提问于 2012-08-21 20:34:59
回答 2查看 10.4K关注 0票数 19

是否可以在parse函数中从response对象中获取请求引用?

10倍

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-21 20:40:45

HTTP Referer字段是由HTTP客户端在请求报头中设置的,而不是在响应报头中设置的,因为这个报头告诉服务器客户端从哪里来到当前页面。

在响应中接收http Referer报头是相当奇怪的。

但是当谈到scrapy时,在response的request字段中有一个对生成Response的Request对象的引用,所以下一个调用的结果是:

代码语言:javascript
复制
response.request.headers.get('Referer', None)

可以包含Referer头部,如果它是在发出请求时设置的。

票数 42
EN

Stack Overflow用户

发布于 2018-10-11 16:45:42

上面的问题很久以前就被提出了,并且已经得到了很好的回答。

然而,我想我应该添加一个不同的答案,以防Rostyslav的答案不适用于您的情况。

假设你有两种不同的解析器方法:

  1. one解析器(让我们称之为parser_A)只是解析文章列表(列表页)来提取链接信息,而others.
  2. Another解析器(让我们称之为parser_B)从目标文章(文章页)中提取文章信息。

如果您在parser_B中无法获取文章列表(列表页)的url (referer url),可以在parser_A中设置headers字段,然后将其发送到parser_B,如下例所示:

代码语言:javascript
复制
yield scrapy.Request(url=article_page_url, callback=self.parser_B, dont_filter=True, headers={'referer_url': list_page_url})

在parser_B方法中,您可以执行以下操作来获取列表页面的url:

代码语言:javascript
复制
print(response.request.headers.get('referer_url'))

希望这对那些需要帮助的人有所帮助。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12054958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档