仅允许在Broad Scrapy Web爬网中使用内部链接

时间:2014-04-08 16:50:42

标签: python url web-scraping filtering scrapy

我正在使用Scrapy来抓取数千个网站。我有一大堆要抓取的域名。一切正常,只是爬虫也遵循外部链接,这就是为什么它爬行太多域而不是必要的。我已经尝试在SGMLlinkextractor中使用“allow_domains”,但是当我解析一个庞大的域列表时,这不起作用。

所以我的问题是:如何限制广泛的scrapy爬行到内部链接?

任何想法都非常感激。

更新:问题是由allow_domains列表引起的,该列表太大而无法处理scrapy

2 个答案:

答案 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]
相关问题