使用^{
我希望蜘蛛忽略网站上的所有内部链接,只关注外部链接。在
将响应URL域添加到deny_domains
的Dynamic rules无效。在
你能覆盖OffsiteMiddleware
中的get_host_regex
来过滤掉所有的现场链接吗?还有别的办法吗?在
说明:我希望spider忽略在allowed_domains
中定义的域以及每个已爬网域上的所有内部链接。因此,当爬行器位于该URL上时,必须忽略蜘蛛后跟的每个URL的域。换句话说:当爬虫到达一个像example.com网站,我希望它忽略example.com网站并且只关注不在的网站的外部链接example.com网站.
我的回答没有用“刮痧”这个词。如果你觉得这个回答太离题了,请随意标记。在
但我提供的是一个解决方案来帮助你解决更普遍的问题。在
我在分析google的结果时遇到了类似的问题。我不希望在结果页面上出现的任何样板URL都包含在我的最终URL列表中。我也不希望任何google相关查询字符串出现。使用beauthoulsoup、re模块和requests模块,我能够做到这一点。在
对于你的问题,我想说你只需要漂亮的外表。你需要一个过滤域的函数。函数应该有两个参数,reference和被测url。使用re模块,您可以检查测试url基字符串是否与引用字符串相同;如果是,则可以合理地断定它是内部url。在
您应该使用BeautifulSoup来解析包含
href
的<a>
标记的html。在您可以通过简单地反转
should_follow()
方法创建反向异地中间件:然后在您的
^{pr2}$settings.py
中激活它:现在,
spider.allowed_domains
中的所有域都将被忽略:)相关问题 更多 >
编程相关推荐