我需要抓取大型列表网址,这是我对start_urls的实际变量:
start_urls = [url.strip() for url in open('urls.txt','r').readlines()]
当我执行crowl系统杀死scrapy以查找丢失的内存时,是否可以对scrapy进行流文件?没有加载内存上的所有网址?
答案 0 :(得分:2)
错误#1:<meta HTTP-EQUIV="Expires" CONTENT="-1">
。文件可以是任意大的,此操作将完全读入内存。既然你正在迭代它,删除.readlines()
是绝对安全的:
readlines()
错误#2:使用list而不是迭代器。列表仍然完全存储在内存中;迭代器按需使用(只存储一个元素)。如果您不多次迭代此列表,则更改为迭代器应该是安全的:
start_urls = [url.strip() for url in open('urls.txt','r')]