非结构化数据提取方案
非结构化数据提取方法研究
对于主题搜索抓取来说,通常都是以一部分与主题密切相关的网 页URL作为种子URL开始进行抓取。而网络爬虫的的抓取离原来的种子 网页越远,则偏离主题的可能性就越大,所以使用广度优先策略要比 深度优先策略的效果好很多。 对主题信息搜索策略的优化 广度优先策略与Location Metric算法在主题搜索抓取中,虽然 能够很好的保证主题抓取的有效性,但对于主题网页抓取的覆盖度却 在很大程度上限制了。为了更好的发掘网络中的主题资源,从而达到 对主题信息搜索算法的优化,这就是Fish-Search算法。该算法的主 题思想是将网络信息抓取看做鱼在觅食的过程,相关的主题网页信息 作为鱼的食物,只有鱼获取了食物才能变得强壮,才能继续生存,当 没有食物时,鱼将变得虚弱直到死亡。该算法根据所抓取的网页的相 关性进行判断,如果网页与所抓取的主题信息相关,则将网页中的 URL生命加1,但不高于所设定的最高生命值。如果网页与所抓取的的 主题无关,则URL生命减1。最后判断网页中URL的生命值,如果为0则 丢弃,不再对其进行抓取。 Fish-Search算法具有模式简单,并且能 够动态搜索。
初始URL地址
Todu队列
解析URL
Visited集合
新解析出的URL
非结构化数据提取方法研究
(2)协议处理器:该层是网络爬虫的基础,处于整个爬虫
系统的最底层,主要负责利用各种网络协议来实现网页数 据的采集工作。常用的网络协议有HTTP,HTTPS和FTP,目 前网络协议以HTTP为主,因此也正是出于这样的考虑,本 文所设计的网络爬虫目前只支持HTTP协议的数据传输。
(1)URL队列:URL队列中的URL记录来自两处,一处是种子URL,这些URL主要是用户预先 定义的网页链接;另一处就来自于爬虫在爬取后续网页过程中,不断从后续网页中获取的 URL。爬虫程序启动后,首先会从种子URL开始抓取,采用队列的先进先出原则。采用这种 方式有利于实现广度优先的抓取策略,从了巧妙的避开了深度优先抓取策略的容易偏离主 题的特点,提高了抓取网页的主题相关度。URL队列的管理大体如下图所示:
非结构化数据提取方法研究
(3)URL解析 :主要负责从新抓取的网页中获取Meta或者HREF等标记的语义 信息,获取URL,并对这些新获取到的URL进行过滤。过滤主要是指将包含图片 ,声音和视频或者广告等为目标的URL进行删除,还有一个重要的工作是要将抓 取到的URL与Visited队列(历史表)进行对比,或发现有访问过的URL,也将其 予以删除,避免了重复抓取 。 由于网页内容最终都以文本形式存在,所以使用正则表达式来提取URL, 在这个过程中通常对正则表达式的要求较高,这里给出一个正则表达式: herf=([\””|\’]?)\s*(?<Url>((http[s]?://[^\””\’s>]+)|([^#()\””\’s>]+)))\s*[\””|\’]?[^>]*> 这个正则表达式能够准确的提取出网页中的标准URL,即HTML中“herf=” 后面的绝对或相对的URL。这其中也不乏有些广告或者垃圾链接,就需要对这些 URL进行过滤。最后再将获取的URL推送到URL Todo队列中。
非结构化数据提取方法研究
PageRank算法的基本思想是如果网页a有一个指向网页b的链接, 则网页b拥有a的一部分重要度,如果页面b被页面 a , a … a 所链接 1 2 n ,而 c 是页面 a 的链出链接数量,设d为削弱因子,则页面p的 i i PageRank值为:IR(p)=(1-d)+d[∑(IR( a )/ c )],IR( a)初始值为1,通 i i 过不断迭代,最后求得该页面的PageRanki值。 Location Metric算法是通过网页的URL来分析确定页面的重要性 的,比如URL的域名,com要比net或其他重要:URL的前缀, 要比要重要;URL的层数, 要比/xx要重要等等。Location Metric 算法直接思想就是对URL进行分析,使得抓取都会集中在主题附近, 而不至于偏离的很远,所以这种算法更适合于垂直搜索中的主题信息 提取。所以这类算法跟网络爬虫设计者的喜好有一定关系。
非结构化数据提取方法研究
网络爬虫体系结构
为了达到对专题数据的提取目标,需要有针对性的从Web服务器上爬取所需要的 网页,提取出所需数据保存到数据库中 ,下面就பைடு நூலகம்本文所设计的网络爬虫结构图:
种子URL 待爬取的URL URL解析
URL队列
获取HTML文件
Robots.txt解析
协议处理器
Http/Https/Ftp处理
非结构化数据提取方法研究
HTTP服务器响应头包含一些有用的信息,如响应 码,服务器类型等信息。下面就是一个典型的HTTP服务 器响应头: HTTP /1.1 200 OK
Content-Length: 119 Content-Type: text/html Connection: keep-alive Server: Microsoft-IIS/5.0 Date: Sun,19 Mar 2010 19:39:05 GTM Last-Modified: Sat , 18 Mar 2010 09:15:50 GMT Via: 1.1 webcache (NetCache NetApp/6.0.1P3)
非结构化数据提取方法研究
robots.txt语法很简单,主要就以小面的两行代码进行叙述: User-agent: * Disallow: User-agent:这句主要用于描述网络爬虫的名字。如果 User-agent的值为*,则说明任何爬虫程序都需要遵守该 协议。 如果有多条 User-agent记录,这就说明有多个网 络爬虫需要遵守该协议 。 Disallow:这句代码用于描述网络爬虫不能访问的URL。这 个URL可以是绝对路径的,也可以是相对路径的。倘若文 件Disallow项的值为空,那么所有的爬虫都可以爬取该网 站的数据。
非结构化数据提取方法研究
2、网络爬虫(Web Crawler)
无论是通用搜索引擎,还是主题搜索引擎,网络爬虫在其中都扮演 着重要的角色。网络爬虫是搜索引擎获取网页的主要工具,搜索引擎通
常在网络爬虫所抓取的网页中对用户的搜索进行匹配,从而得到搜索结
果提供给用户。网络爬虫的搜索策略是网络爬虫的实现关键,是搜索引 擎的核心技术,同时也是通用搜索与主题搜索的最大区别所在。
非结构化数据提取方法研究
这里对采用HTTP协议的网页收集步骤简要描述一下 , 具体流程如下:
根据 URL 与之 建立 联系 组装 HTTP 协议头 是否超时 是 否 分析 应答 信号 获取 页面 信息 获取 页面 内容
➣ 根据URL,解析出站点地址跟端口号,并与之建立连接 ; ➣ 组装HTTP协议请求头,发送到目标站点,如果在一定时间段内未得到任 何应答信号,就放弃对该页面的抓取,如果获得了应答信号,就需要对该 应答信号进行分析,进入下一步骤 ; ➣ 这一步骤主要是通过状态码来进行判断,如果是2XX,就说明正确返回 页面;如果是301或者302,就说明页面重定向,就需要从应答头中提取新 的URL,返回上一步;如果是别的代码(如404,表示网页找不到),就说 明链接失败了。 ➣ 通过应答头,找出页面类型,长度等网页信息; 获取页面内容。
非结构化数据提取方法研究
网络爬虫对HTTP协议的模拟
网络爬虫的基本功能就是利用网络协议爬取网络资 源,而网络资源又是Web服务器上的各种格式的文件,一 般通过HTTP协议和Web服务器打交道。
Http请求
客户端
服务器端
Http响应
客户端发起一个一个到服务器上的指定端口(默认端 口为80)的HTTP请求,服务器端按照指定格式返回网页或 者其他网络资源 。网络爬虫也是一种HTTP客户端。
下面就网络爬虫的几个关机技术进行说明:
非结构化数据提取方法研究
对robot禁止协议的支持
网络爬虫抓取网页,不同于一般的访问,如果控制不 好,则会引起网站服务器负担过重。05年,淘宝网就因为 雅虎搜索引擎的网络爬虫抓取其数据引起过淘宝网服务器 的不稳定。 那么网站是否就无法和网络爬虫交流呢?其实不然, 每个网络爬虫都有自己的名字,网络爬虫进入一个网站, 首先会去访问一个放置在服务器根目录下的一个 robots.txt文件,用于标识此网络爬虫的身份。网络爬虫 在抓取网页的时候会发送一个请求,这个请求中就有一个 字段为User-agent,例如Googl。
下图即为网络爬虫的基本结构图:
初始URL地址列表 请求网页 新解析出的 URL
互联网
解析网页
存储系统
非结构化数据提取方法研究
主题网络爬虫比通用网络爬虫的抓取范围要小,但是 主题网络爬虫在实现上也具有很大难度: 首先是网络爬虫对网络中信息资源的分布结构都是未 知的,不能很好的预测网页抓取的方向,保证抓取的网页 都是集中于所想要的主题;其次,网页数量每天都会激增 ,而且其中将近25%的网页会在一天之内变化,因此网络 爬虫非常必要优先抓取重要的网页,而这很大程度上决定 于网络爬虫的搜索抓取策略。
非结构化数据提取方法研究
爬虫对robots.txt协议的处理流程如下:
查找robots.txt文件 文件存在与否 是 读取User-agent 否 否 清空Disallow缓存
允许所有爬虫访问 是 读取Disallow 存入Disallow缓存
跳出
当然,robots.txt只是网络爬虫的一种协议,如果有的爬虫设计者不遵 守这一协议,那么网络管理者本身也无法阻止爬虫对网站数据的爬取操作 ,不过一般的网络爬虫设计者也都会遵守这一协议。
非结构化数据提取方法研究
robots.txt是一个纯文本文件,这个文件一般放在网 站服务器的根目录下,网站管理员可以通过robots.txt来 定义哪些目录网络爬虫不能访问,或者哪些目录对于某些 特定的网络爬虫不能访问。例如有些网站的可执行文件目 录和临时文件目录不希望被爬虫爬到,那么网站管理员就 可以把这些目录定义为拒绝访问目录。 爬虫进入这个网站,就会到根目录下找寻这个 robots.txt文件,如果找到了该文件,就会遵守该协议的 内容,如果没有找到该文件就会跳过这步,然后抓取网站 数据。