这是一个爬虫肆掠横行的年代,且看各种爬虫教学视频,付费课程大行其道,甚至搭着数据分析和大数据一起,着实很紧俏,话说笔者也是这个行业的一个资深的爬虫老人了,在此也不罗嗦,趁着今天有闲就把爬虫的各种道道,技术流派和渊源给你梳理讲讲。
话说这世上本没有爬虫,只是因为有了web,才有了爬虫,是的,目前市面上说的爬虫基本上是针对web的,甚至很多技术栈和框架也是围绕web技术趋势建造的,但只是其一,目前也有很多围绕app来做的爬虫,当然实现起来也就更难了,这里后面会细细道来,其实在谈数据采集之前,我们应该先思考另外一个问题,为何采集爬取数据,只有回答了这个问题,才能理解为什么爬虫这个行业这么火爆,在严刑峻法之前依然有这么多前仆后继,我是这么理解的,围绕数据采集有以下使用场景,且有利益输送,在列举之前,不得不说,这是一个大数据的时代,数据就是价值就是金钱(你肯定反驳那不一定非得爬呀,只能说你太年轻,有数据的公司太少了,毕竟不是BAT:
1)、搜索引擎公司,不得不说,谷歌百度等搜索引擎公司是最大的爬虫公司,只不过别人找到了目前截止目前信息时代数据最好的变现商业产品而已。 2)、舆情分析,这绝对是爬虫数据被综合利用设计后很好的实现场景之二,比如百度,谷歌,搜狗,微博等排行榜或者舆情分析产品。 3)、导购,价格监测,运营助手,或者横向数据聚合的公司等,以此为生的产品衍生的小公司就不一一列举了。 4)、黑产,灰产,刷量,排行榜,搬砖等,比如前期被判刑的美剧天堂还是什么公司就是这样的,这样的个人,团伙也是不少的。 总之以此爬虫,拿别人的数据价值来为自己赚钱即是人性,所以你很难说把这个行业给消灭掉,话说还有很多公司是希望自己的产品被人爬呢?只要在法律的准绳之内,遵循robots协议,大家还是可以很好的玩耍的。
反正已经啰嗦了这么多,我们还是继续来说爬虫和大数据的关系吧,上面也讲了,真的有很好的数据覆盖面的公司毕竟不多,讲到了数据,以我有限的经验来说,企业的数据无非有以下几个来源: 1)、数据库(这里的数据库是泛指,有可能是文件,关系型数据库或列存储数据)里数据,包括自己的业务数据,价值密度应该最高的。 2)、埋点数据,当前以友盟,百度,talkingdata等为首的web或者app埋点数据厂商,当然也可以自己开发埋点数据工具来收集数据。 3)、日志数据,包括系统,应用,网络等数据,价值密度相对较小,这里也涉及到很多技术,后面公司会单独来聊聊。 4)、爬虫或者外部采集数据,对,网络采集数据作为企业内部数据一个很好的补充,也是有相当价值的,这也是为什么很多公司有专门的爬虫公司一职。
好了,大致讲了爬虫的价值体现和应用场景,下面该来聊聊,爬虫具体的实现技术了,不管是纵向爬虫还是横向爬虫,且他们的技术侧重点以及延伸都不太一样,而且本篇文章作为后续爬虫的漫谈,不会说的太细致,只是帮助大家勾勒出爬虫整体的轮廓;
1、python语言家族的爬虫框架推荐 a)、谈到爬虫具体的实现框架,我首推python语言家族的scrapy,没有之一,当之无愧的爬虫一哥,作为爬虫框架,他可扩展性,易用性,稳定程度都极佳,如果非得找一点缺陷,那就是性能和分布式这块相对单薄了一点,但作为底层的数据抓取已经可以胜任一般企业的爬虫需求,这里推荐一个组合 scrapy + scrapyd + celery,味道极佳,至于具体如何操作,后续的公号文章会一一道来。 b)、第二推荐的当然是pyspider,作为国内大神开源的爬虫框架也是可圈可点,小巧,易用,高效,但在稳定性和可扩展以及功能丰富程度上上在我看来不及scrapy。 以上两个是我极力推荐的两个python爬虫框架,至于其他工具或者类库,比如requests/xpath等页面请求解析库等更是数不胜数,具体场景捡适当的来补充即可。
2、java作为第二大爬虫家族语言,框架也是信手拈来。 其实以我看,jvm体系下的编程语言,特别是java,目前还没有一款统一天下的爬虫框架,比如webmagic,spiderman2,crawler4j,Gecco,SeimiCrawler等,至于以上的每个java爬虫框架我基本都有涉猎,其中个人觉得spiderman2作为学习java是一个不错的框架,代码范式和风格很漂亮。
3、go和nodejs作为爬虫框架,也有不错的框架,但相较python和java还是逊色不少。
好了,这篇文章就先写到这里,本来计划一篇文章写完漫谈篇,但如此看来,内容太多,放到下篇继续了,下一篇将为你介绍我眼里美好的爬虫系统应该是怎么样的。