本人接触爬虫及其相关技术已经有大概一年半的时间。虽然为了吃饭不得不从事爬虫相关工作,但实际上个人是比较不喜欢这个行业的。这篇文章主要是写给想要从事这个行业的人,让新人可以知道这个行业都在做什么以及未来发展如何,当然也欢迎同行和大牛的指正。
这篇文章是一个综述性质的文章,首先会 “简要” 介绍一下爬虫技术的历史;然后在第二部分,我会介绍自己接触过的一些当前常用的网络内容爬取技术;最后写一些关于这个行业未来个人的看法。
由于我本身不是从事搜索引擎这种大规模爬虫研发的,所以第二部分更关注的是一些破解技术,而不是例如高并发、爬取策略、缓存等这类大规模爬虫技术;同时也不关注 IoT 领域的爬虫技术发展。第三部分的核心观点是:我不建议有志之士进入这个行业。
网络爬虫(web crawler、spider)这个名字本身就是来源于搜索引擎的原理:利用网页之间的链接,网络程序可以从一个网站发现新的网站,同时对网页内容进行解析、存储、赋权等操作。
在互联网发展的早期(大约 2005 年前),谷歌、百度等公司迅速成为行业巨头,其成功可以说是搭建在爬虫技术之上的。
与此同时或稍晚一些,一些中小公司开始利用爬虫技术来自动获取网络上公开的数据,但当时对于爬虫的热情程度,远不及最近几 (10?) 年。
随着大数据、人工智能概念的普及,很多创业公司或者打其旗号,或者想在相关领域脱颖而出。数据哪里来呢?绝大多数是来自于爬取。另一方面,随着互联网相关产业的发展,有很多项目研发模式都是依托于爬虫技术的。比如一些新想法的快速验证,项目冷启动的数据来源等等。越来越多的公司会把注意力集中在自己擅长的领域,至于数据哪里来,答案还是爬取。
一个典型的例子是今日头条早期,当时头条还没有做 UGC 业务,大量的新闻数据来自于网易、新浪等传统的新闻网站,而头条的技术人员专注于将个性化投放做到行业领先,成功吃掉了这些传统新闻网站的大部分用户。
也有一些本身就是基于爬虫的产品,例如机票比价的服务,淘宝历史价格追溯的服务 (早年我还在用 360 浏览器的时候有这个功能,不知道现在还有没有了)。此外,互联网激烈的竞争导致产品的数据对标分析近乎常态,你的对手不可能把数据给你吧,那对标数据哪里来?一个字:爬。
以上总总,可见爬虫技术一路走来,可以说是当今互联网一个非常重要的技术组成了。据估计,目前网络上的流量超过 50% 都是爬虫!(具体出处我已经找不到了)
然而戏剧性的是,虽然爬虫技术的应用场景如此广泛,相比于前端、后端、算法等岗位,爬虫工程师的收入可以说是很低的,从心理上来说也是位于鄙视链的底端!
我们经常和产品说的一句话是:PC 页爬取的需求基本都能做。
这是由于早期的互联网产品形态和技术原因,PC 站爬取整体难度并不大,或者说相对于移动端来说并不大。从产品形态来说,PC 站很多无需登录即可访问大部分内容,且PC 站需要搜索引擎访问以提高其搜索排名,这使得其内容更容易获取(相比较移动端普遍需要登录且不需要给搜索引擎提供便利);技术上来说,PC 站使用的是浏览器加载 html、js 和 css 的方式,相关技术比较成熟,学习曲线平缓,调试工具丰富,且对应的操作系统安全性考量不如移动端高。
PC 站的数据来源一般来说有以下三种:
针对 PC 页常见的反爬手段和对应措施:
移动端相较于 PC 页爬取的几个难点如下:
目前我接触过的(基本都是同事做的)移动端抓取技术主要包括:
保证软件良好运行的核心是控制软件的复杂度与不确定性,控制复杂度类似于骑马手持缰绳,而控制不确定性类似于把马圈在栅栏里。
抓取这件事本身,就是不确定性非常高的事情:反爬策略、对方接口迭代、对方数据结构改变、目标内容下线。所以说依赖抓取的产品,本身存在不稳定性的风险,所以在产品提需求时,一定要确定这是短期需求还是长期需求;如果是长期需求,需要看看是否有别的方式可以弥补不确定性。如果在讨论需求的时候不考虑这些,就很容易将自身置于泥潭之中。
在可以预见的未来,爬虫的需求是会越来越强烈的。这是个数据需求如此强烈的时代,低成本获取数据的诱惑实在是太大了!正如盗版行业不会被消灭一样,爬虫的需求也具备不灭性。即便爬取难度随着时间正逐渐升高,且这个行业背负着道德和法律的双重风险,老板和技术负责人们依旧会不停地产出爬取需求的新点子!
正如第二章介绍的,PC 爬取难度远低于移动端。但从当前互联网产品的发展来看,未来高用户量产品必将继续向移动端发展,很多产品甚至 PC 站只保留海报和 APP 下载功能了!
个人电脑产生之初是作为工具被研发出来,随着发展逐渐变为娱乐设备,未来必然将再次退化为工具。而一方面工具将和用户身份相互绑定,另一方面作为工具的网页很难引起大家的爬取需求。
所以虽然 PC 站的爬取技术很成熟,但未来是没什么用的! 而移动端技术难度又比较大,虽然随着需求的强烈程度增加,抓取难度肯定会下降,不过这要过多久呢?五年还是十年?到那个时候,互联网的行业风向又将在哪里呢?
The future of web scraping is actually linked with the future of web!
目前已经知道的人工智能在爬虫领域的发展包括以下方面:
未来人工智能技术会在爬虫领域有更多的应用,毕竟新技术各行各业都迫切地需要拿来解决自己的痛点问题。
从前文我们可以看出,爬虫技术的难度越来越高,同时还有较高的道德和法律风险。这使得未来,会出现几个比较大的爬虫供应商,这些集中式的爬虫机构,钻研爬虫技术,承担各种风险,当然也会有高额的利润作为回报。
实际上,目前国内已经有类似的厂商,并且我也接触过。虽然并不光鲜,但绝对是未来的发展趋势。
工具软件与手机厂商似乎和爬虫没什么关系,他们两者看起来也没什么关联。但他们的共同点是:通过某种方法绕过了爬虫的常见困难,直接采集用户数据,而且可以操作得更加肆无忌惮。
我见过的某公众号助手,同时也兼做公众号流量数据提供商,虽然两者可能没什么直接联系,但至少这是一条能拿到其他厂商核心数据的可行和有效途径。
而手机厂商可以绕过设备、用户的壁垒,各个软件可以说是对其门户大开,想做一些数据采集类的工作,简直轻而易举!
我对这个行业的看法很简单:有志之士不应该进入这一行业。
有人可能反驳说,爬虫也可以技术做得很深入啊,技术面很广啊等等诸如此类。但我想问:如果人生每天只是用来破解别人的防护措施,这样的人生有什么意义?
这本质上和知道茴字有四种写法没什么区别:都毫无意义!除了让自己觉得自己好像很 nb。更不用说爬虫这个行业的道德负担和法律风险。如果只是混口吃食还行,想作为自己的事业还是算了吧,我敢保证那样的话将是个无趣的人生。
有志之士应该做什么?应该像乔布斯一样创造改变世界的产品,应该和马斯克一样把人生目标定位在火星移民,应该如比尔盖茨一样为了世界疫苗普及贡献自己的力量。
或许这些都太虚了,但作为一个人,至少不要让自己堕入黑暗而不自知。