Kobayashi
2022-04-19 05:49:38 +08:00
这还用选吗,当然是 Scrapy 。爬虫不需要可视化,这是伪需求,懂 XPath 和 CSS 选择器语法就够了。
说 requests 的可能是没写过大量爬虫,爬虫从来都不是一个 HTTP 下载+HTML 解析问题。当你做大量爬取时,你要考虑各种其他设计:
1. 队列,生成的待爬取 URL 越来越多,需要队列存储待爬
2. 队列是支持先入先出还是先入后出,直接对应深度优先爬取和广度优先爬取
3. 爬取中断了如何恢复,是支持队列固化还是使用 Redis 做队列
4. 如何针对被爬 URL 去重,同样去重指纹怎么固化
5. 避免频率过高爬取时,钱多直接上代理池,免费先做并发控制、人工时延。或者多开几台机器搞分布式。
6. 人工时延是针对 IP 还是 host ,要不要加随机抖动
7. 如果不考虑 IP 被封,高并发爬取是线程池还是异步。
8. 对于偶发的网络问题导致的 HTTP 请求失败,要不要加入自动重试。
9. 或者更扯淡一点,为了避免发散爬取时进入对方蜜罐爬取大量无用连接,耗尽连接池。如何做深度控制。
10. ……
还有各种各样的问题,Scrapy 和 Scrapy 插件提供了现成的解决方案。