我正在尝试使用scrapy
. 我试图将网站 url 列表作为start_urls
,但后来我发现我买不起这么多内存。有没有办法一次设置scrapy
爬取一两个站点?
问问题
3723 次
2 回答
3
您可以尝试使用concurrent_requests = 1
,以免数据过载
http://doc.scrapy.org/en/latest/topics/settings.html#concurrent-requests
于 2013-01-14T08:37:13.447 回答
0
您可以定义一个start_requests方法,该方法遍历对您的 URL 的请求。这应该避免一次将所有起始 URL 保存在内存中的开销,并且是解决您描述的问题的最简单方法。
如果在爬取过程中仍然有很多 URL 供scrapy 保存在内存中,则可以启用持久性支持。
如果你真的想一次只喂几个 URL,这可以通过注册spider_idle信号并在你的回调函数中添加接下来的几个 URL 并引发 DontCloseSpider 来实现。
于 2013-01-13T18:56:39.520 回答