爬虫简介

关于本文档的PDF版请转至百度网盘链接

PDF版本更清晰

链接:https://pan.baidu.com/s/19_Nl_-ob_ecK-zYDjU4dVQ 密码:so58

爬虫简介

目录

爬虫简介1

什么是爬虫?2

产生背景?2

关键技术概述?2

分类?2

通用网络爬虫。2

聚焦网络爬虫:2

增量式网络爬虫3

Deep Web爬虫3

爬取目标分类3

基于目标网页特征:3

基于目标数据模式3

基于领域的概念4

网页搜索策略4

广度优先搜索4

最佳优先搜索4

深度优先搜索4

网页分析算法4

拓扑分析算法4

网页内容分析算法5

难点6

爬行策略很难的原因:6

万物有度,合理取舍6

网络爬虫体系结构6

1、需要高结构的爬虫6

2、URL一般化7

3、身份识别7

网络爬虫的组成7

控制器7

解析器7

资源库7

 


 

 

什么是爬虫?

按照规格这自动获取万维网信息。

 

产生背景?

采集结构化数据

 

关键技术概述?

从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前网页上抽取重要部分。

 

分类?

通用网络爬虫。

对象从一些种子URL扩展至到整个web。主要用于门户扎念搜索引擎和大型web服务商。

爬虫结构大致分为:页面爬行模块、页面分析模块、链接过滤模块、页面数据库、URL队列、初始URL集合。

策略:深度优先策略、广度优先策略。

 

聚焦网络爬虫:

又称主体爬虫,选择性的爬行与预先定义好的主题相关页面的网络爬虫。与通用网络爬虫相比,可以极大的节省了硬件和网络资源,保存需要的网页。满足特定的需求。

1、基于内容评价的爬行策略:将用户输入的查询词作为主题,包含查询词的页面被视为与主题相关,局限性在于无法评价页面与主题相关度的高低。但是经过Herserovie对Fish Search算法进行了改进,提出Sharksearch算法,利用空间向量模型计算页面与主题的相关度大小。

2、基于链接结构评价的爬行策略:Web页面作为一种半结构化文档,包含很多信息,可用来评价链接重要性。Pagerank算法每次选择pagerank值较大的页面中的链接来访问。另一种是HITS方法,计算Authority权重和hub权重,并以此决定链接的访问顺序。

3、基于增强学习的爬行策略:rennie和mccallum将增强学习引入聚焦爬虫,利用贝叶斯分类器,根据整个网页文本和链接文本对超链接进行分类,为每个链接计算出重要性。从而决定链接的访问顺序。

4、基于语境图的爬行策略:Diligenti等人提出来了一种通过建立语境图学习网页之间的相关度,训练一个机器学习系统,通过该系统计算当前页面到相关web页面的距离,距离越近的页面中的链接优先访问。印度理工大学和IBM研究中心的研究人员开发了一个典型的聚焦网络爬虫。该爬虫对主题的定义不是采用关键词也不是加权矢量,而是一组具有相同主题的网页。它包含两个重要的模块:一个是分类器,用来计算所爬行的页面与主题的相关程度,确定是否与主题相关;另一个是净化器,用来识别通过较少的链接连接到大量相关页面的中心页面。

 

增量式网络爬虫

增量式爬虫是指对已下载网页采取增量式更新和只爬行新产生的或者已经发生变化网页的爬虫,它能够在一定程度上保证所爬行的页面是尽可能新的页面。与周期性爬行和刷新页面的网络爬虫相比,增量式爬虫止水在需要的时候爬行新产生或发生更新的页面,不重新下载没有发生变化的页面。可有效减少数据下载量,及时更新以爬行的网页,减小时间和空间上的消耗,但是增加了爬行算法的复杂度和实现难度。增量式网络爬虫的体系结构包含爬行模块、排序模块、更新模块、本地页面集、待爬行URL集以及本地页面URL集。

 

Deep Web爬虫

Web页面按存在方式可以分为表层网页(surface web)和深层网页(Deep Web,也称为Invisible Web Pages或Hidden Web)。表层网页是指传统搜索引擎可以索引的页面,以超链接可以到达的静态网页为主构成的Web页面。Deep Web是那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的web页面。例如那些用户注册后才可见的网页就属于Deep Web。

 

爬取目标分类

爬取目标的描述和定义是决定网页分析算法与URL搜索策略如何制定的基础。

而网页分析算法和候选URL排序算法是决定搜索引擎所提供的服务形式和爬虫网页抓取行为的关键所在,这两部分紧密相关。

基于目标网页特征:

1、预先给定的初始抓取种子样本;

2、预先给定的网页分类目录与分类目录对应的种子样本,如Yahoo!分类结构等;

3、通过用户行为确定的抓取目标样例,分为:

    A、用户浏览过程中显示标注的抓取样本;

    B、通过用户认知挖掘得到的访问模式及相关样本。

其中,网页特征可以是网页的内容特征,也可以是网页的链接结构特征,等等。

基于目标数据模式

基于目标数据模式的爬虫针对的是网页上的数据,所抓取的数据一般要符合一定的模式,或者可以转化或映射为目标数据模式。

基于领域的概念

另一种描述方式是建立目标领域的本体或词典,用于从语义角度分析不同特征在某一主题中的重要参数。

 

网页搜索策略

网页的抓取策略可以分为深度优先、广度优先和最佳优先三种。深度优先在很多情况下会导致爬虫的陷入(trapped)问题,目前最常见的是广度优先和最佳优先方法。

广度优先搜索

广度优先搜索策略是指在抓取的过程中,在完成当前层次的搜索后,才进行下一层次的搜索。该算法的设计和实现相对简单。在目前覆盖尽可能多的网页,一般使用广度优先搜索的方法。也有跟多研究将广度优先搜索策略应用于聚焦爬虫中。其基本思想是认为与初始URL在一定链接距离内的网页具有主题相关性的概念很大。另一种方法是将广度优先搜索与网页过滤技术结合使用

最佳优先搜索

最佳优先搜索按照一定的网页分析算法,预测候选URL与目标网页的相似度,或与主题的相关性,并选取评价最好的一个或几个URL进行抓取。它只访问经过网页分析算法预测为“有用”的网页。存在的一个问题是,在爬虫抓取路径上的很多相关网页可能被忽略,因为最佳优先策略是一种局部最优搜索算法。因此需要将最佳优先结合具体的而应用进行改进,以跳出局部最优点。

深度优先搜索

深度优先搜索策略从起始网页开始,选择一个URL进入,分析这个网页中的URL,选择一个再进入。如此一个链接一个链接地抓取下去,直到处理完一条路线之后再处理下一条路线。深度优先策略设计较为简单。然而门户网站提供的链接往往最具价值,PageRank也很高,但每深入一层,网页价值和PageRank都会相应地有所下降。这暗示了重要网页通常距离种子较近,而过度深入抓取到的网页却价值很低。同时这种策略抓取深度直接影响着抓取命中率及抓取效率,对抓取深度是该种策略的关键。相对于其他两种策略而言,此种策略很少被使用。

 

网页分析算法

网页分析算法可以归纳为基于网络拓扑、基于网页内容和基于用户访问行为三种类型。

拓扑分析算法

基于网页之间的链接,通过已知的网页或数据,来对于其有直接或间接链接关系的对象(可以是网页或网站等)作出评价的算法。分为网页粒度、网站粒度和网页块粒。

1、网页粒度的分析算法

PageRank和HITS算法时最常见的链接分析算法,两者都是通过对网页间链接度的递归和规范化计算,得到每个网页的重要度评价。PageRank算法虽然考虑了用户访问行为的随机性和Sink网页的存在,但忽略了绝大多数用户访问时带有目的性,及网页和链接与查询主题的相关性。针对这个问题,HITS算法提出了两个关键的概念:权威型网页(authority)和中心型网页(hub)。

基于链接的抓取的问题是相关页面主题团之间的隧道现象,即很多在抓取路径上偏离主题的网页也指向目标网页,局部评价策略中断了在当前路径上的抓取行为。

2、网站粒度的分析算法

网站粒度的资源发现和管理策略也比网页粒度更加简单有效。网站粒度的爬虫抓取的关键之处在于站点的划分和站点等级(SiteRank)的计算。

附带一个优点,常见的PageRank造假难以对siteRank

3、网页块粒度的分析算法

在一个页面中,往往含有多个指向其他页面的链接,这些链接中只有一部分是指向主题相关页面的,或根据网页的链接锚文本表明其具有较高的重要性。但是,在PageRank和HITS算法中,没有对这些链接区分,因此常常给网页分析带来广告噪声链接的干扰。在网页块级别(block?level)进行链接分析的算法的基本思想史通过VIPS网页分割算法将网页分为不同的网页块(pageblock),然后对这些网页块建立page?to?block和block?to?page的链接矩阵,?分别记为Z和X。于是,在page?to?page图上的网页块级别的PageRank为?W?p=X×Z;?在block?to?block图上的BlockRank为?W?b=Z×X。已经有人实现了块级别的PageRank和HITS算法,并通过实验证明,效率和准确率都比传统的对应算法要好。

网页内容分析算法

基于网页内容的分析算法指的是利用网页内容(文本、数据等资源)特征进行的网页评价。网页的内容从原来的以超文本为主,发展到后来动态页面(或称为Hidden Web)数据为主,后者的数据量约为直接可见页面数据(PIW,Publicly Indexable Web)的400~500倍。另一方面,多媒体数据、Web Service等各种网络资源形式也日益丰富。因此,基于网页内容的分析算法也从原来的较为单存的文本检索方法,发展为涵盖网页数据抽取、机器学习、数据挖掘、语义理解等多种方法的综合应用。

本节根据网页数据形式的不同,将基于网页内容的分析算法,归纳以下三类:第一种针对以文本和超链接为主的无结构或结构很简单的网页;第二种针对从结构化的数据源(如RDBMS)动态生成的页面,其数据不能直接批量访问;第三种针对的数据界于第一和第二类数据之间,具有较好的结构,显示遵循一定模式或风格,且可以直接访问。

基于文本的网页分析算法

1) 纯文本分类与聚类算法

很大程度上借用了文本检索的技术。文本分析算法可以快速有效的对网页进行分类和聚类,但是由于忽略了网页间和网页内部的结构信息,很少单独使用。

2) 超文本分类和聚类算法

根据网页链接网页的相关类型对网页进行分类,依靠相关联的网页推测该网页的类型。

 

难点

爬行策略很难的原因:

1、巨大的数据量;

2、他更快的更新频率;

3、动态页面的产生

基于这些原因,爬虫问题变得举步维艰。巨大的数据量说明爬虫在给定时间内只可以抓取部分,因而需要设置爬取的优先级,这样才能够优先爬取重要数据。

快速更新的问题导致下载的时候可能又有新的网页更新被添加,因此需要特定的算法来解决。

动态页面也是很复杂的,比如说一个信息使用三种格式,两种分类方式,那么他的访问方式就有6中可能性,如果再增加的话那么会产生指数迭代的效果。因此为了获取不同的内容,必须筛选无穷仅有微小变化的组合。

万物有度,合理取舍

资源不是无限的,爬虫需要考虑下一步访问的策略:

1、选择策略,决定下载的页面

2、重新访问材料,什么时候重新访问;

3、避免给站点造成负载;

4、并行策略,协同分布式抓取

选择策略:

    重新访问策略,需要考虑时间成本,这里采用新鲜度、过时性来综合解决。

更新算法应对:

统一策略:特定的网站群使用相同的频率

正比策略:对变化越多的网页,重新访问的频率越高。网页访问的频率和网页变化的频率直接相关。

平衡性礼貌策略:

为了不使得网站瘫痪,这样得不偿失,因此需要考虑爬虫平衡性能。

1、网路资源;

2、服务器超载;

3、质量糟糕的爬虫;

这部分有root.txt协议来规定访问限制。

 

网络爬虫体系结构

1、需要高结构的爬虫

一个人的成功不能算成功,能折断一根筷子的力气也不叫力气,如果一个爬虫只能够爬取十个数据就go die(狗带)了,那么要他干啥,辛辛苦苦写代码还不如直接肉身爬虫来的准、快、有效呢。因此,高性能的爬虫是有必要的,系统设计、I/O和网络效率,健壮性、简易性也是需要考虑的。

 

2、URL一般化

URL需要避免重复爬取,为了使URL一致,全部转化为小写字符,去除逗号,非空路径,末尾加反斜杠等规范。

 

3、身份识别

    网络爬虫根据http请求的用户代理(user agent)字段向网络服务器表明身份。

 

网络爬虫的组成

控制器

负责系统过来的URL链接,分配县城,启动线程调用爬取网页的过程。

解析器

解析器具有下载网页、对文本进行筛选处理的功能

资源库

就是数据存储的位置,也就是数据库。