爬虫的基本概念
1. 网络爬虫的组成
网络爬虫由控制结点、爬虫结点、资源库构成,如图1 所示:
图1 网络爬虫的控制节点和爬虫节点结构的关系
可以看到,网络爬虫中可以有多个控制节点,每个控制节点下可以有多个爬虫节点,控制节点之间可以互相通信,同时,控制节点和其下的各爬虫节点之间也可以进行互相通信,属于同一个控制节点下的各爬虫节点间,亦可以互相通信。
控制节点,也叫做爬虫的中央控制器,主要负责根据URL地址分配线程,并调用爬虫节点进行具体的爬行。
爬虫节点会按照相关的算法,对网页进行具体的爬行,主要包括下载网页以及对网页的文本进行处理,爬行后,会将对应的爬行结果存储到对应的资源库中。
2. 网络爬虫的类型,
1) 通用网络爬虫
也叫做全网爬虫,通用网络爬虫爬取的目标在全互联网中。其爬取的目标数据是巨大的,并且爬行的范围也是非常大的,正是由于其爬取的数据是海量数据,故而对于这类爬虫来说,其爬取的性能要求是非常高的。这种网络爬虫主要应用于大型搜索引擎中,有非常高的应用价值。
2) 聚焦网络爬虫
也叫主题爬虫,顾名思义,聚焦网络爬虫是按照预先定义好的主题有选择地进行网页爬取的一种爬虫。聚焦网络爬虫不像通用网络爬虫一样将目标资源定位在全互联网中,而是将爬取的目标网页定位在相关主题的页面中,此时可以大大节省爬虫爬取时所需的带宽资源和服务器资源。聚焦网络主要应用在对特定信息的爬取中,主要为某一类特定人群提供服务。
3) 增量式网络爬虫
所谓增量式,对应着增量式更新。增量式更新指的是在更新的时候只更新改变的地方,而未改变的地方则不更新,所以增量式网络爬虫,在爬取网页的时候,只爬取内容发生变化的网页或者新产生的网页,对于未发生内容变化的网页,则不会爬取。增量式网络爬虫在一定程度上能够保证所爬取的页面,尽可能使新页面。
4) 深层网络爬虫
要介绍深层网络爬虫,我们首先要介绍一下网页的相关知识:
1.静态网页
所谓静态网页,就是网页里面没有程序代码,不会被服务器执行。这种网页通常在服务器以扩展名.htm或.html存储,表示里面的内容是以HTML语言编写的。
HTML语言是由许多叫做标注(Tag)的元素组成的。这种语言指示了文字、图形等元素在浏览器上面的配置、样式以及这些元素实际上是存放于因特网上的哪个地方(地址),或点选了某段文字或图形后,应该要连接到哪一个网址。我们在浏览这种扩展名为.htm的网页的时候,网站服务器不用执行任何程序就会把档案传给客户端的浏览器直接进行解读。所以除非网站设计师更新网页档案的内容,否则网页的内容是不会因为执行程序而出现不同内容的。
2.深层页面和表层页面
网页按存在方式分类,可以分为表层页面和深层页面。所谓表层页面,指的是不需要提交表单,使用静态的链接就能够到达的静态页面;而深层页面是需要提交一定的关键词之后才能获取的页面。在互联网中,深层页面数量往往比表层页面多得多
3网络爬虫表单填写
网络爬虫表单填写有两种类型:①基于领域知识的表单填写,就是建立一个填写表单的关键词库,在需要填写的时候,根据语义分析选择对应的关键词进行填写;②基于网页结构分析的表单填写,简单来说,这种填写方式一般是领域知识有限的情况下使用,这种方式会根据网页结构进行分析,并自动填写表单。
最后,我们总结一下,深层网络爬虫,就是爬取互联网中的深层页面的爬虫。
3. 网络爬虫的“技能”有什么?
网络爬虫技能总览图
网络爬虫可以代替手工做很多事情,比如可以用于做搜索引擎,也可以爬取网站上面的图片,比如有些朋友将某些网站上的图片全部爬取下来,集中进行浏览,同时,网络爬虫也可以用于金融投资领域,比如可以自动爬取一些金融信息,并进行投资分析等。
有时,我们比较喜欢的新闻网站可能有几个,每次都要分别打开这些新闻网站进行浏览,比较麻烦。此时可以利用网络爬虫,将这多个新闻网站中的新闻信息爬取下来,集中进行阅读。
有时,我们在浏览网页上的信息的时候,会发现有很多广告。此时同样可以利用爬虫将对应网页上的信息爬取过来,这样就可以自动的过滤掉这些广告,方便对信息的阅读与使用。
有时,我们需要进行营销,那么如何找到目标客户以及目标客户的联系方式是一个关键问题。我们可以手动地在互联网中寻找,但是这样的效率会很低。此时,我们利用爬虫,可以设置对应的规则,自动地从互联网中采集目标用户的联系方式等数据,供我们进行营销使用。
有时,我们想对某个网站的用户信息进行分析,比如分析该网站的用户活跃度、发言数、热门文章等信息,如果我们不是网站管理员,手工统计将是一个非常庞大的工程。此时,可以利用爬虫轻松将这些数据采集到,以便进行进一步分析,而这一切爬取的操作,都是自动进行的,我们只需要编写好对应的爬虫,并设计好对应的规则即可。
除此之外,爬虫还可以实现很多强大的功能。总之,爬虫的出现,可以在一定程度上代替手工访问网页,从而,原先我们需要人工去访问互联网信息的操作,现在都可以用爬虫自动化实现,这样可以更高效率地利用好互联网中的有效信息。