前两天一篇《估值175亿的旅游独角兽,是一座僵尸和水军构成的鬼城?》刷爆了人们的时间线,随后的两篇文章继续引发大家的持续性关注。
作为一个不正经的科普号,我们先不管马蜂窝是不是「鬼城」,当我们坐下来思考这几篇文章的时候就会发现,无论是马蜂窝刷评论的团队还是揭露真相的数据团队,他们都运用了一种技术——爬虫,那么爬虫到底是个什么东西?
爬虫的定义很简单,对于普通人来说,就是自动化版本的复制黏贴。
比如说你想写个什么感谢信 or 申请书,先想到的就是打开搜索引擎,搜索一下「申请书」,然后多打开几个网页,复制这个网页的第一段,ctrl+C 另一个网页的第二段,缝缝补补下来就写好了。
对于个人来说,普通的复制黏贴就够用了,但是你想做个网站,自己又懒得写原创,怎么办?当然是写个自动化工具自动 Ctrl+C & Ctrl+V 啦。
「爬虫」是个非常形象的名字,如果把网络比成蜘蛛网,那在网络上抓取信息的就像一只蜘蛛,综合一下就叫爬虫了(实际上爬虫的英文名就叫 spider)。
自动化的复制黏贴对使用者来说是好事,但是对与原创者和网站来说就不是什么好事了。
对于网站来说,流量和服务器资源都是耗钱的。比如说号称支持「八星出轨」的微博,一有大的流量新闻就挂了,这个「挂」的意思就是访问量太多,服务器忙不过来返回数据。
爬虫其实不是一门高深的技术,有很多人会用,控制不好的话就会一直访问服务器。
每年的三四月份各大资讯类网站将会引起一阵流量高峰,为什么呢?
因为快毕业了,很多计算机专业数据专业的毕业生写论文,没数据只能写个爬虫爬。但是应届生爬虫写的很烂,一不小心就陷入死循环一直爬,对网站来说是其实是个负担。
对于来势汹汹的爬虫大军,网站当然不能坐以待毙,会想一些法子误导爬虫,比如说老牌互联网公司携程网。
对于一个商业网站,价格是非常重要的资源。对于同一件商品,友商比你便宜一块钱,你这里就会少很多的成交量,所以大家都会变着法子保护商品价格。
我刚刚看一下携程网的机票显示的是 1369,但网站源码是这个样子的:
我们可以看到在尖括号标签里的数字有 8 个:93019613,就是没有 1369,其实携程很聪明,把 8 个数字在显示上通过隐藏和改变位置来保护价格,这大大加大了爬虫解析的难度,因为你得搞清楚携程这里的混淆算法才能得到正确答案。
我们再看携程网的另一个例子,还是 1369 的价格,网站源码是这样的:
显示的是 6247,这次是 4 个数字了,但是和 1369 一点儿关系都没有,因为携程直接改了这个网页的字体,正常的字体应该是左侧的,携程改成了右侧。
如果想抓取数据,你还得解析字体库,找出字符和正常价格之间的映射关系,这无疑加大了爬虫的难度。
上面说的都是守方高筑墙,但是有时候攻方水平很垃圾就没办法了。比如说前两天有人在某头条上看到这么一条新闻,有人就觉得罗老师这次成了。
实际上呢,这是某头条爬取微博的的数据,但没有抓取上下文才搞出这种乌龙。
还有很多反爬虫的例子,比如说检测到爬虫就真假数据混合在一起返回,各种托马斯360回旋人眼都认不出来的验证码,专供爬虫的“FXXK SPIDER”的网页,新手很容易就被这些老手们忽悠,爬虫和反爬虫就是一场技术与成本的对抗,永远不会休战。
最后分享:打小报告的爬虫
PS:大家打赏是对于我文章的认可,非常感谢大家的喜爱,但我还是想说我已经有女朋友了,就不要打赏一些暧昧的数字了
领取专属 10元无门槛券
私享最新 技术干货