scrapy 是通用场景下的完整解决方案,把基本的处理流程规范、数据输出、分布式部署、后续运维管理等问题都解决了。 selenium 不属于爬虫框架,用在爬虫上只是作为一个控制浏览器的工具,本质上解决的只是请求和提取数据的逻辑部分。 chrome 扩展实际与 selenium 是一样的,也只是作为一个控制浏览器的工具。 所以很显然,scrapy 和另外两个完全不是同样的东西,前者可以在通用场景下做到简单配置就实现一个完整项目,后两者则需要自己开发除请求和提取数据以外的其他部分。
另外,chrome 扩展和 selenium 虽然都是作为控制浏览器的工具,但由于运行环境的不同,也会存在各自的优劣势场景,实际还是要根据情况使用。比如 chrome 扩展可以直接提供给非技术人员使用,简单粗暴,心智负担低,但如果涉及到写数据库之类的操作就麻烦些,而用 selenium 这种外部程序控制浏览器的方式就不会有这个问题。
@Features #4 哦,都是自用 后两者都是基于浏览器渲染,不方便做大规模爬虫,如果不需要渲染,例如 html 可直接分析,还是纯 cli 效率高 需要渲染的也可用 cef ,不过 cef 在 python 支持不完整,还不怎么好用 还有一个选择是 webkit selenium 用在爬虫我感觉有点跑偏了,可以,但这个总归主要用途是模拟浏览器控制,做自动化更合适
爬虫本质都一样,都是发出 http 请求得到想要的数据。 但面向的需求场景不一样,比如有这样的一个需求: 请采集维基百科特定分类下的所有主题页面,大概 700W 个页面,要求一周内交付数据? - 首先:浏览器插件已经不在考虑范围内了,使用一个浏览器翻完维基百科,你等得了用户可能等不了 - 其次:纯 selenium 处理这类弱反爬的网站也没有什么优势了,且不说无头浏览器的速度慢,如果开 1000 个无头浏览器,一般的也需要海量的内存了。 - 剩下的就是爬虫代码自行编写了,用 scrapy ,或者自己造轮子最后实现类似 scrapy 的框架的功能,对接 ip 池来进行并发爬取。(中间也可能用到 selenium 搭配处理一些反爬策略) 用哪个?看需求吧: - 海量数据+长期需求=自己写爬虫 - 少量数据+临时需求= 数据采集器搞一下交差