0

我正在构建一个需要爬取超过 500 万个 url 的爬虫。目前我正在使用以下方式将文件中的所有 url 加载到 start_urls 列表中,我发现它占用了太多内存。

self.start_urls = get_list_from_file(file_path)

所以我想知道是否有一种方法可以将网址一个一个地加载到内存中,这样我就可以保持较低的内存成本。

4

1 回答 1

2

当然,在蜘蛛上使用start_requests方法。例如:

def start_requests(self):
    reader = csv.reader(open('urls.csv'))
    for row in reader:
        url = row[0]
        yield Request(url=url)

另外,让你的get_list_from_file函数作为生成器工作是个好主意。

希望有帮助。

于 2013-07-08T09:01:02.693 回答