我正在尝试使用scrapy
抓取网站列表。我试图把网站网址列表作为start_urls
,但后来我发现我用这么多的内存。有没有办法一次设置scrapy
抓取一个或两个网站?
答案 0 :(得分:2)
您可以尝试使用concurrent_requests = 1
,这样就不会超载数据
http://doc.scrapy.org/en/latest/topics/settings.html#concurrent-requests
答案 1 :(得分:0)
您可以定义一个start_requests方法,该方法会迭代对您网址的请求。这样可以避免一次性将所有起始URL保存在内存中,这是解决您所描述问题的最简单方法。
如果在抓取过程中仍有大量scrapy要保留在内存中,您可以enable persistence support。
如果你真的只想一次只为几个URL提供scrapy,可以通过注册spider_idle信号来实现,在你的回调函数中添加下几个URL并引发DontCloseSpider。