关于scrapy设置domain,仍然会爬取其他网站

重定向的响应不遵循allowed_domains #1042

 打开
tarunlalwani 开了这个问题 on 7 Feb 2015 ·4条评论

注释

项目
还没有
4名参与者
@tarunlalwani@Granitosaurus@Digenis@红苹果
@tarunlalwani

嗨,

如果我们添加allowed_domains并将来自同一个域的url重定向到另一个域,那么该域的结果也会得到处理,我相信应该对其进行过滤

allowed_domains =('www.knowledgeinbox.com',)

url =“ http://www.knowledgeinbox.com/books/ ”

该网址重定向到www.tarlabs.com结果仍然传递给我只对knowledgeinbox.com感兴趣的函数。不知道这是故意的,因为根据我的理解它的错误

请让我知道你的想法

问候,
塔伦

@Granitosaurus
贡献者

Granitosaurus 评论 on 8 Feb 2015

我不认为这是一个错误。蜘蛛无法知道链接是否被重定向,直到链接在请求队列中被调用。

您可以设置蜘蛛设置REDIRECT_ENABLED = False来禁用重定向。

@tarunlalwani

我不是说它不应该遵循重定向。我所说的是,它最终下载了一个不在allowed_domain中的URL并调用parse_item。我们正在使用规则自动添加要处理的链接。我认为,即使重定向到另一个域,我认为我的回调将不会被调用。禁用重定向不是一个解决方案,因为它会禁用同一个域内的有效重定向

@Digenis
贡献者

Digenis 评论说 on 8 Feb 2015

使用allowed_domains的OffsiteMiddleware实现为spidermiddleware。
不仅它在中间件堆栈中的地位阻止它过滤重定向,而且它的实现。
您需要在重定向中间件之后放置一个downlaoder中间件。

由于其简单的实现,
可以将其重构
为具有spider和downloader中间件的方法的更抽象的东西

有没有人反对上游的OffsiteMiddleware的这种重构?
我会用它。

@红苹果
贡献者

redapple 评论 on 16 Sep 2016

相关:#2241

@红苹果 redapple 增加了 增强 讨论 标签 on 16 Sep 2016

posted @ 2017-12-07 17:26  dajjjj  阅读(53)  评论(0)    收藏  举报