2

我正在尝试使用scrapy. 我试图将网站 url 列表作为start_urls,但后来我发现我买不起这么多内存。有没有办法一次设置scrapy爬取一两个站点?

4

2 回答 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 回答