是否可以在parse函数中从response对象中获取请求引用?
10倍
发布于 2012-08-21 20:40:45
HTTP Referer字段是由HTTP客户端在请求报头中设置的,而不是在响应报头中设置的,因为这个报头告诉服务器客户端从哪里来到当前页面。
在响应中接收http Referer报头是相当奇怪的。
但是当谈到scrapy时,在response的request字段中有一个对生成Response的Request对象的引用,所以下一个调用的结果是:
response.request.headers.get('Referer', None)可以包含Referer头部,如果它是在发出请求时设置的。
发布于 2018-10-11 16:45:42
上面的问题很久以前就被提出了,并且已经得到了很好的回答。
然而,我想我应该添加一个不同的答案,以防Rostyslav的答案不适用于您的情况。
假设你有两种不同的解析器方法:
如果您在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'))希望这对那些需要帮助的人有所帮助。
https://stackoverflow.com/questions/12054958
复制相似问题