用scrapy逐个抓取网站列表

时间:2013-01-12 19:19:09

标签: python screen-scraping web-crawler scrapy

我正在尝试使用scrapy抓取网站列表。我试图把网站网址列表作为start_urls,但后来我发现我用这么多的内存。有没有办法一次设置scrapy抓取一个或两个网站?

2 个答案:

答案 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。