我正在使用Scrapy来抓取数千个网站。我有一大堆要抓取的域名。一切正常,只是爬虫也遵循外部链接,这就是为什么它爬行太多域而不是必要的。我已经尝试在SGMLlinkextractor中使用“allow_domains”,但是当我解析一个庞大的域列表时,这不起作用。
所以我的问题是:如何限制广泛的scrapy爬行到内部链接?
任何想法都非常感激。
更新:问题是由allow_domains列表引起的,该列表太大而无法处理scrapy
答案 0 :(得分:1)
OffsiteMiddleware是你应该考虑使用的:
class scrapy.contrib.spidermiddleware.offsite.OffsiteMiddleware
过滤掉网址范围之外的网址请求 蜘蛛。
此中间件会过滤掉主机名不在的每个请求 蜘蛛的allowed_domains属性。
答案 1 :(得分:0)
我可以通过修改SGMLlinkextractor来解决问题。我在返回链接之前添加了这两行:
domain = response.url.replace("http://","").replace("https://","").split("/")[0]
links = [k for k in links if domain in k.url]