大数据时代的“宠儿”——爬虫技术
Posted 南京有嘉科技
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据时代的“宠儿”——爬虫技术相关的知识,希望对你有一定的参考价值。
很多人说我们这些搞软件的人,总喜欢把虚拟世界里的事物跟现实中的东西扯上关系。这点我真不否认,脱离了现实,我们伟大的创举还有何意义?
“爬虫”就是个例子,它对于我们开发人员而言,就是一段用来自动化采集网站数据的程序,结果跟现实中的虫子扯上了关系。
在这个数据横流的互联网时代,创业型公司如雨后春笋般的崛起,而大数据则可以帮他们迅速生产垂直化数据资料库,提供给用户使用。同时也让老板们更容易看清未来的方向,制定发展策略。
这些数据采集下来都很庞大,那究竟要这些数据有什么用呢?
直接用于机器学习,分析用户的兴趣爱好和行为。
获取淘宝店铺信用,直接用于新平台的用户信用及身份验证。
获取各个商城物品价格,为用户提供市场场最低价。
获取酒店、图书的(价格、简介、评论),做垂直化平台的基础数据库。
请原谅我用国家电网设备资产运维精益管理系统(PMS)举个例子,比如说我们想统计南京哪些地方经常会出现故障,哪些地方设备故障会重复出现、通常这些故障受哪些因素影响等。如果利用爬虫技术,事情就有了很好解决方案。我们只需要编写一个7*24小时运行的分布式爬虫,自动化采集配网抢修数据,将整个南京的95598停电工单全部抓取下来。再通过数据清洗,使内容标准化,让这些数据成为我们的基础资料库就行了。看到这里内心是不是已经有点小激动?
由此可见,爬虫技术已经成为我们每个开发人员最基本的技能,同时也是步入中高级开发不得不涉足的内容。为什么这么说呢?因为开发一个像样的爬虫,需要你了解的东西还真不少:
学习任意一门开发语言:C#、NodeJs、Python、Java、C++。
学习网页前端脚本语言:javascript、html、CSS。
学习HTTP协议、正则表达式、数据库、代理切换等相关知识。
学习多线程并发抓取、任务调度、消息队列、分布式爬虫、图像识别、模拟键鼠、NoSql。
我仿佛看到了你一脸懵懂的表情!你真的没有看错,这些技术只是冰山一角。不过也不用担心,初中级的爬虫只需要学会前三点就可以了。要想开发出更高级的爬虫,第四点是必须会的,同时为了追求极致的性能,还需要研究开源浏览器内核的相关项目。
我们的爬虫之所以被封杀,肯定是因为对方找到了运行特征。因此只需要修改爬虫的运行方式及特征,让其操作与普通用户的相似就可以了。一般爬虫会有哪些特征和运行方式呢?
User-Agent:主要用来将我们的爬虫伪装成浏览器。
Cookie:主要用来保存爬虫的登录状态。
连接数:主要用来限制单台机器与服务端的连接数量。
通常来说,只要我们控制好了上面这4个东西,反爬虫组那边就较难找到我们的运行特征。
爬虫工作的方式可以归纳为两种:深度优先、广度优先。
深度优先就是一个连接一个连接的向内爬,处理完成后再换一下一个连接,这种方式对于我们来说缺点很明显。广度优先就是一层一层的处理,非常适合利用多线程并发技术来高效处理,因此我们也用广度优先的抓取方式。
我们想要提高并发数量怎么办呢?当然是使用代理IP和VPN,假设反爬虫组限制单台IP连接数不能超过50,那我们增加一个代理IP就相当于可以多并发50个爬虫出去,在带宽足够的情况下,10个有效的代理IP就可以让爬虫的性能提到一个新的高度,有没有感觉到大数据已经在向你招手?
有人说代理也可以被检测出来,那是因为你还不太了解代理,代理服务器有很多种,而且真有不能被检测出来的代理,它的运行方式如下:
以上是关于大数据时代的“宠儿”——爬虫技术的主要内容,如果未能解决你的问题,请参考以下文章