只允许scrapy内的内部链接

时间:2011-12-06 23:29:33

标签: python web-scraping scrapy

我有一个我想要删除的网址列表 - 其中3000个。

我想在每个网址上深入三个级别,但我不想转到外部网址 - 只在我的开始列表的域内链接。

我知道如果我只想使用几个网址来执行此操作,我只需填充allowed_domains列表。

然而,当你达到3000个网址时,allowed_domains列表对于Scrapy来说太大了(据我所知,它会把它变成一个大的RegEx)所以它会中断......

有什么想法吗?

“规则”列表中的某些内容会很好。 rules = (Rule(SgmlLinkExtractor(allow = (<local_links_only??>)) ,callback = 'parse_item'),)

或Offsite中间件中的某些内容 - 无论如何要获取引用链接?

或批量完成工作?一次获得50个网址?是否有任何钩子允许这样的事情 - 我可以看到start_requests - 但我没有回复finish_requests之类的东西可以用来填充start_urls列表吗?

1 个答案:

答案 0 :(得分:2)

  1. 使用DepthMiddleware控制请求深度。
  2. 使用allow_domains来避免使用外部网址。
  3. 调整concurrent settings以获得更好的性能。