我正在构建一个需要抓取超过500万网址的抓取工具。目前我正在使用以下方式将文件中的所有网址加载到start_urls列表中,我发现它占用了太多内存。
self.start_urls = get_list_from_file(file_path)
所以我想知道是否有一种方法可以将url逐个加载到内存中,这样我就可以降低内存成本。
答案 0 :(得分:1)
当然,在蜘蛛上使用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
函数作为生成器工作是个好主意。
希望有所帮助。