在过去的一个月里,我一直在使用Scrapy进行我已经开始的网络抓取项目。
此项目涉及在主页上可以访问的单个域名中下拉所有网页的完整文档内容。使用Scrapy写这个很容易,但它运行得太慢了。在2-3天内,我只能下载100,000页。
我已经意识到我最初认为Scrapy不适用于此类抓取的概念本身就是显而易见的。
我开始把注意力集中在Nutch和Methabot上,希望能有更好的表现。在抓取过程中我需要存储的唯一数据是网页的完整内容,最好是页面上的所有链接(但即便如此,也可以在后期处理中完成)。
我正在寻找一种速度很快并且使用许多并行请求的爬虫。
答案 0 :(得分:5)
这是我的服务器而不是Scrapy的错。服务器可能没有您想要的那么快,或者可能是(或网站管理员)检测到此连接/ cookie的爬行和限制速度。 你用代理吗?这可能会减慢爬行速度。 这可能是Scrapy的智慧,如果你将爬行过于密集,你可能会被禁止使用此服务器。对于我的C ++ handwritten crawler,我人为地设置了每秒1个请求的限制。但是这个速度对于1个线程来说足够了(1 req * 60秒* 60分钟* 24小时= 86400 req / day)。如果您有兴趣,可以发送电子邮件至whalebot.helmsman {AT} gmail.com。
答案 1 :(得分:2)
Scrapy允许您在its settings中确定并发请求的数量和请求之间的延迟。
答案 2 :(得分:0)
你知道瓶颈在哪里吗?正如whalebot.helmsman所指出的那样,限制可能不在Scrapy本身,而是在你正在抓取的服务器上。
首先应该找出瓶颈是网络还是CPU。