爬虫技术的兴起源于海量网络数据的可用性,通过爬虫技术人们可以很容易地获取网络数据,并通过对数据的分析得出有价值的结论。
目前,网络上已经有很多开源的爬虫软件,像Larbin(c++语言实现,只负责网页抓取,不负责解析和存储),Nutch(开源Java 实现的搜索引擎),Heritrix(java开发的单实例的爬虫)。
按照系统结构和实现技术,爬虫可以分为通用网络爬虫,聚焦网络爬虫,增量式网络爬虫和深层网络爬虫。像百度,谷歌就是一种大型复杂的网络通用网络爬虫,通用网络爬虫大多提供基于关键字的收索,难以支持根据语义信息提出的查询,因此,聚焦网络爬虫应运而生。聚焦爬虫将目标定位为抓取某特定主题内容,为面向主题的用户查询准备数据资源。相比之下,增量网络爬虫难度更大,它需要进一步爬取更新的新产生的网页数据,而不重新下载未发生变化的网页。web页面可以分为表层网页和深层网页,通用网络爬虫通常是爬取表层网页,而需要登录或注册的网页就需要深层网络爬虫。常常,爬虫技术是多种技术的交替使用。
在大数据技术中,数据的采集与存储是其核心,而爬虫技术在两大核心技术中占有较大比例。因为python脚本特性,对字符处理十分灵活,较成熟的网络抓取模板,简洁的语言模式,丰富的资源库,相比其它语言而言,可以用很短的代码完成大部分工作。
python爬虫一般经过对网络资源发送请求,获取反馈内容,解析内容,存储内容等几个步骤。而网页的请求方式一般分为GET和POST两种方式,网页通过Request(请求),Response(响应)两个过程实现数据发送和接收。而python强大的函数库,让其爬虫实现变得比较容易。比如urllib库(解决python对互联网的访问),Requests库,基于urllib,实现HTTP的大部分功能(Keep-Alive,连接池,Cookie持久化,内容自解压,HTTP代理,SSL认证,连接超时,Session等很多特性)。
爬虫技术只是大数据技术中的一个分支,它与其它大数据技术一起构成了大数据生态圈,从而为人们的生产生活带来改变。