这类问题我又碰上了一次。用 Screaming Frog 免费版爬一个 5 万页的站,跑到 2 万页就提示内存不足,配置里的内存从 1G 调到 4G 还是崩。

第一反应是「把图片和大文件一起纳入抓取,响应体占满内存」,验证下来不成立。

把日志和配置对完,能解释这个现象的基本就这几处。免费版单次上限 500 条,数据量一大就撑不住;爬取时开启了 JS 渲染,每个页面都起一个无头浏览器;单次任务不落盘,所有结果都留在内存里。

先按目录分批,控制单次规模

cat urls_part1.txt | wc -l

随后关掉 JS 渲染与资源下载

python crawl.py --no-js --no-images --max-urls 8000

剩下的就是把结果直接导成 CSV 落盘

python crawl.py --export issues.csv --resume

怎么算真的好了,看的是同一批现象。分成六批跑完后,每批峰值内存控制在 2G 以内,全部页面的状态码与标题都完整导出。

提醒一点。大站爬取要按规模和功能取舍,开启 JS 渲染能让内存翻几倍,先跑一遍纯 HTML 的往往已经够用。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189