学习
实践
活动
工具
TVP
写文章

坑惨马蜂窝的爬虫,到底是个什么东西?

前两天一篇《估值175亿的旅游独角兽,是一座僵尸和水军构成的鬼城?》刷爆了人们的时间线,随后的两篇文章继续引发大家的持续性关注。

作为一个不正经的科普号,我们先不管马蜂窝是不是「鬼城」,当我们坐下来思考这几篇文章的时候就会发现,无论是马蜂窝刷评论的团队还是揭露真相的数据团队,他们都运用了一种技术——爬虫,那么爬虫到底是个什么东西?

爬虫的定义很简单,对于普通人来说,就是自动化版本的复制黏贴

比如说你想写个什么感谢信 or 申请书,先想到的就是打开搜索引擎,搜索一下「申请书」,然后多打开几个网页,复制这个网页的第一段,ctrl+C 另一个网页的第二段,缝缝补补下来就写好了。

对于个人来说,普通的复制黏贴就够用了,但是你想做个网站,自己又懒得写原创,怎么办?当然是写个自动化工具自动 Ctrl+C & Ctrl+V 啦。

「爬虫」是个非常形象的名字,如果把网络比成蜘蛛网,那在网络上抓取信息的就像一只蜘蛛,综合一下就叫爬虫了(实际上爬虫的英文名就叫 spider)。

自动化的复制黏贴对使用者来说是好事,但是对与原创者和网站来说就不是什么好事了。

对于网站来说,流量和服务器资源都是耗钱的。比如说号称支持「八星出轨」的微博,一有大的流量新闻就挂了,这个「挂」的意思就是访问量太多,服务器忙不过来返回数据。

爬虫其实不是一门高深的技术,有很多人会用,控制不好的话就会一直访问服务器。

每年的三四月份各大资讯类网站将会引起一阵流量高峰,为什么呢?

因为快毕业了,很多计算机专业数据专业的毕业生写论文,没数据只能写个爬虫爬。但是应届生爬虫写的很烂,一不小心就陷入死循环一直爬,对网站来说是其实是个负担。

对于来势汹汹的爬虫大军,网站当然不能坐以待毙,会想一些法子误导爬虫,比如说老牌互联网公司携程网

对于一个商业网站,价格是非常重要的资源。对于同一件商品,友商比你便宜一块钱,你这里就会少很多的成交量,所以大家都会变着法子保护商品价格。

我刚刚看一下携程网的机票显示的是 1369,但网站源码是这个样子的:

我们可以看到在尖括号标签里的数字有 8 个:93019613,就是没有 1369,其实携程很聪明,把 8 个数字在显示上通过隐藏和改变位置来保护价格,这大大加大了爬虫解析的难度,因为你得搞清楚携程这里的混淆算法才能得到正确答案。

我们再看携程网的另一个例子,还是 1369 的价格,网站源码是这样的:

显示的是 6247,这次是 4 个数字了,但是和 1369 一点儿关系都没有,因为携程直接改了这个网页的字体,正常的字体应该是左侧的,携程改成了右侧。

如果想抓取数据,你还得解析字体库,找出字符和正常价格之间的映射关系,这无疑加大了爬虫的难度。

上面说的都是守方高筑墙,但是有时候攻方水平很垃圾就没办法了。比如说前两天有人在某头条上看到这么一条新闻,有人就觉得罗老师这次成了。

实际上呢,这是某头条爬取微博的的数据,但没有抓取上下文才搞出这种乌龙。

还有很多反爬虫的例子,比如说检测到爬虫就真假数据混合在一起返回,各种托马斯360回旋人眼都认不出来的验证码,专供爬虫的“FXXK SPIDER”的网页,新手很容易就被这些老手们忽悠,爬虫和反爬虫就是一场技术与成本的对抗,永远不会休战。

最后分享:打小报告的爬虫

PS:大家打赏是对于我文章的认可,非常感谢大家的喜爱,但我还是想说我已经有女朋友了,就不要打赏一些暧昧的数字了

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181029G1V6LW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券