非结构化数据提取方案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
非结构化数据提取方法研究
内容提要
非结构化数据提取概述 网络爬虫(Web Crawler)的设计 数据提取算法的设计 原型系统的实现 总结
非结构化数据提取方法研究
1、前言
随着Internet上信息的爆炸式增长,万维网(World Wide Web ,WWW)已经成为全球目前最大的、最重要的信息资源共享平台。 在万维网上每时每刻都在动态刷新的web页中,蕴藏着大量的可为我 们所用的数据。未来,数据被认为是与自然资源、人力资源一样重 要的战略资源,隐含巨大的经济价值。而且由于目前从Web上采集 到的数据 85% 以上是非结构化和半结构化的数据,如何快速、准确 地从这些Web页中找到并提取出我们所需要的信息,己经成为当前最 热门的研究课题之一。同时,随着Web数据提取技术研究的不断深入 ,基于Web的非结构化数据提取的开发与应用也已成为软件市场关注 的一个热点。 本文针对基于.NET技术实现的非结构化数据提取方法需要解决 的几个关键问题,包括网络爬虫,数据提取规则的建立以及数据存 储技术等进行了深入的研究。
非结构化数据提取方法研究
(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的前缀, www.sina.com.cn要比sports.sina.com.cn要重要;URL的层数, www.sina.com.cn要比www.sina.com.cn/xx要重要等等。Location Metric 算法直接思想就是对URL进行分析,使得抓取都会集中在主题附近, 而不至于偏离的很远,所以这种算法更适合于垂直搜索中的主题信息 提取。所以这类算法跟网络爬虫设计者的喜好有一定关系。
非结构化数据提取方法研究
这里对采用HTTP协议的网页收集步骤简要描述一下 , 具体流程如下:
根据 URL 与之 建立 联系 组装 HTTP 协议头 是否超时 是 否 分析 应答 信号 获取 页面 信息 获取 页面 内容
➣ 根据URL,解析出站点地址跟端口号,并与之建立连接 ; ➣ 组装HTTP协议请求头,发送到目标站点,如果在一定时间段内未得到任 何应答信号,就放弃对该页面的抓取,如果获得了应答信号,就需要对该 应答信号进行分析,进入下一步骤 ; ➣ 这一步骤主要是通过状态码来进行判断,如果是2XX,就说明正确返回 页面;如果是301或者302,就说明页面重定向,就需要从应答头中提取新 的URL,返回上一步;如果是别的代码(如404,表示网页找不到),就说 明链接失败了。 ➣ 通过应答头,找出页面类型,长度等网页信息; 获取页面内容。
非结构化数据提取方法研究
网络爬虫对HTTP协议的模拟
网络爬虫的基本功能就是利用网络协议爬取网络资 源,而网络资源又是Web服务器上的各种格式的文件,一 般通过HTTP协议和Web服务器打交道。
Http请求
客户端
服务器端
Http响应
客户端发起一个一个到服务器上的指定端口(默认端 口为80)的HTTP请求,服务器端按照指定格式返回网页或 者其他网络资源 。网络爬虫也是一种HTTP客户端。
下图即为网络爬虫的基本结构图:
初始URL地址列表 请求网页 新解析出的 URL
互联网
解析网页
存储系统
非结构化数据提取方法研究
主题网络爬虫比通用网络爬虫的抓取范围要小,但是 主题网络爬虫在实现上也具有很大难度: 首先是网络爬虫对网络中信息资源的分布结构都是未 知的,不能很好的预测网页抓取的方向,保证抓取的网页 都是集中于所想要的主题;其次,网页数量每天都会激增 ,而且其中将近25%的网页会在一天之内变化,因此网络 爬虫非常必要优先抓取重要的网页,而这很大程度上决定 于网络爬虫的搜索抓取策略。
非结构化数据提取方法研究
robots.txt语法很简单,主要就以小面的两行代码进行叙述: User-agent: * Disallow: User-agent:这句主要用于描述网络爬虫的名字。如果 User-agent的值为*,则说明任何爬虫程序都需要遵守该 协议。 如果有多条 User-agent记录,这就说明有多个网 络爬虫需要遵守该协议 。 Disallow:这句代码用于描述网络爬虫不能访问的URL。这 个URL可以是绝对路径的,也可以是相对路径的。倘若文 件Disallow项的值为空,那么所有的爬虫都可以爬取该网 站的数据。
非结构化数据提取方法研究
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协议的处理流程如下:
查找robots.txt文件 文件存在与否 是 读取User-agent 否 否 清空Disallow缓存
允许所有爬虫访问 是 读取Disallow 存入Disallow缓存
跳出
当然,robots.txt只是网络爬虫的一种协议,如果有的爬虫设计者不遵 守这一协议,那么网络管理者本身也无法阻止爬虫对网站数据的爬取操作 ,不过一般的网络爬虫设计者也都会遵守这一协议。
非结构化数据提取方法研究
网络爬虫体系结构
为了达到对专题数据的提取目标,需要有针对性的从Web服务器上爬取所需要的 网页,提取出所需数据保存到数据库中 ,下面就是本文所设计的网络爬虫结构图:
种子URL 待爬取的URL URL解析
URL队列
获取HTML文件
Robots.txt解析
协议处理器
Http/Https/Ftp处理
(1)URL队列:URL队列中的URL记录来自两处,一处是种子URL,这些URL主要是用户预先 定义的网页链接;另一处就来自于爬虫在爬取后续网页过程中,不断从后续网页中获取的 URL。爬虫程序启动后,首先会从种子URL开始抓取,采用队列的先进先出原则。采用这种 方式有利于实现广度优先的抓取策略,从了巧妙的避开了深度优先抓取策略的容易偏离主 题的特点,提高了抓取网页的主题相关度。URL队列的管理大体如下图所示:
非结构化数据提取方法研究
2、网络爬虫(Web Crawler)
无论是通用搜索引擎,还是主题搜索引擎,网络爬虫在其中都扮演 着重要的角色。网络爬虫是搜索引擎获取网页的主要工具,搜索引擎通
常在网络爬虫所抓取的网页中对用户的搜索进行匹配,从而得到搜索结
果提供给用户。网络爬虫的搜索策略是网络爬虫的实现关键,是搜索引 擎的核心技术,同时也是通用搜索与主题搜索的最大区别所在。
非结构化数据提取方法研究
搜索抓取策略
目前搜索抓取策略主要包括广度优先(Breadth First)、深度优先(Depth First)和最优先策略(Best First),三者都源于图的遍历算法。 广度优先和深度优先策略是相对较基础,也是较简单 的网页搜索抓取策略。广度优先搜索抓取策略是优先抓取 同一阶层的网页,或者优先抓取最先发现的URL。深度优 先搜索抓取策略是优先抓取相邻网页,这里的相邻是以网 页中的URL作为链接。 目前最优先策略是各类网络爬虫较为常用的搜索抓取 策略,最优先策略是根据特定需要而制定的策略,其中最 重要的就是网页的重要度计算。主要是PageRank算法和 Location Metric算法。
非结构化数据提取方法研究
robots.txt是一个纯文本文件,这个文件一般放在网 站服务器的根目录下,网站管理员可以通过robots.txt来 定义哪些目录网络爬虫不能访问,或者哪些目录对于某些 特定的网络爬虫不能访问。例如有些网站的可执行文件目 录和临时文件目录不希望被爬虫爬到,那么网站管理员就 可以把这些目录定义为拒绝访问目录。 爬虫进入这个网站,就会到根目录下找寻这个 robots.txt文件,如果找到了该文件,就会遵守该协议的 内容,如果没有找到该文件就会跳过这步,然后抓取网站 数据。
初始URL地址
Todu队列
解析URL
Visited集合
新解析出的URL
非结构化数据提ຫໍສະໝຸດ Baidu方法研究
(2)协议处理器:该层是网络爬虫的基础,处于整个爬虫
系统的最底层,主要负责利用各种网络协议来实现网页数 据的采集工作。常用的网络协议有HTTP,HTTPS和FTP,目 前网络协议以HTTP为主,因此也正是出于这样的考虑,本 文所设计的网络爬虫目前只支持HTTP协议的数据传输。
非结构化数据提取方法研究
对于主题搜索抓取来说,通常都是以一部分与主题密切相关的网 页URL作为种子URL开始进行抓取。而网络爬虫的的抓取离原来的种子 网页越远,则偏离主题的可能性就越大,所以使用广度优先策略要比 深度优先策略的效果好很多。 对主题信息搜索策略的优化 广度优先策略与Location Metric算法在主题搜索抓取中,虽然 能够很好的保证主题抓取的有效性,但对于主题网页抓取的覆盖度却 在很大程度上限制了。为了更好的发掘网络中的主题资源,从而达到 对主题信息搜索算法的优化,这就是Fish-Search算法。该算法的主 题思想是将网络信息抓取看做鱼在觅食的过程,相关的主题网页信息 作为鱼的食物,只有鱼获取了食物才能变得强壮,才能继续生存,当 没有食物时,鱼将变得虚弱直到死亡。该算法根据所抓取的网页的相 关性进行判断,如果网页与所抓取的主题信息相关,则将网页中的 URL生命加1,但不高于所设定的最高生命值。如果网页与所抓取的的 主题无关,则URL生命减1。最后判断网页中URL的生命值,如果为0则 丢弃,不再对其进行抓取。 Fish-Search算法具有模式简单,并且能 够动态搜索。
下面就网络爬虫的几个关机技术进行说明:
非结构化数据提取方法研究
对robot禁止协议的支持
网络爬虫抓取网页,不同于一般的访问,如果控制不 好,则会引起网站服务器负担过重。05年,淘宝网就因为 雅虎搜索引擎的网络爬虫抓取其数据引起过淘宝网服务器 的不稳定。 那么网站是否就无法和网络爬虫交流呢?其实不然, 每个网络爬虫都有自己的名字,网络爬虫进入一个网站, 首先会去访问一个放置在服务器根目录下的一个 robots.txt文件,用于标识此网络爬虫的身份。网络爬虫 在抓取网页的时候会发送一个请求,这个请求中就有一个 字段为User-agent,例如Google网络爬虫的标识为 GoogleBot,Baidu网络爬虫的标识为BaiDuSpider等。
内容提要
非结构化数据提取概述 网络爬虫(Web Crawler)的设计 数据提取算法的设计 原型系统的实现 总结
非结构化数据提取方法研究
1、前言
随着Internet上信息的爆炸式增长,万维网(World Wide Web ,WWW)已经成为全球目前最大的、最重要的信息资源共享平台。 在万维网上每时每刻都在动态刷新的web页中,蕴藏着大量的可为我 们所用的数据。未来,数据被认为是与自然资源、人力资源一样重 要的战略资源,隐含巨大的经济价值。而且由于目前从Web上采集 到的数据 85% 以上是非结构化和半结构化的数据,如何快速、准确 地从这些Web页中找到并提取出我们所需要的信息,己经成为当前最 热门的研究课题之一。同时,随着Web数据提取技术研究的不断深入 ,基于Web的非结构化数据提取的开发与应用也已成为软件市场关注 的一个热点。 本文针对基于.NET技术实现的非结构化数据提取方法需要解决 的几个关键问题,包括网络爬虫,数据提取规则的建立以及数据存 储技术等进行了深入的研究。
非结构化数据提取方法研究
(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的前缀, www.sina.com.cn要比sports.sina.com.cn要重要;URL的层数, www.sina.com.cn要比www.sina.com.cn/xx要重要等等。Location Metric 算法直接思想就是对URL进行分析,使得抓取都会集中在主题附近, 而不至于偏离的很远,所以这种算法更适合于垂直搜索中的主题信息 提取。所以这类算法跟网络爬虫设计者的喜好有一定关系。
非结构化数据提取方法研究
这里对采用HTTP协议的网页收集步骤简要描述一下 , 具体流程如下:
根据 URL 与之 建立 联系 组装 HTTP 协议头 是否超时 是 否 分析 应答 信号 获取 页面 信息 获取 页面 内容
➣ 根据URL,解析出站点地址跟端口号,并与之建立连接 ; ➣ 组装HTTP协议请求头,发送到目标站点,如果在一定时间段内未得到任 何应答信号,就放弃对该页面的抓取,如果获得了应答信号,就需要对该 应答信号进行分析,进入下一步骤 ; ➣ 这一步骤主要是通过状态码来进行判断,如果是2XX,就说明正确返回 页面;如果是301或者302,就说明页面重定向,就需要从应答头中提取新 的URL,返回上一步;如果是别的代码(如404,表示网页找不到),就说 明链接失败了。 ➣ 通过应答头,找出页面类型,长度等网页信息; 获取页面内容。
非结构化数据提取方法研究
网络爬虫对HTTP协议的模拟
网络爬虫的基本功能就是利用网络协议爬取网络资 源,而网络资源又是Web服务器上的各种格式的文件,一 般通过HTTP协议和Web服务器打交道。
Http请求
客户端
服务器端
Http响应
客户端发起一个一个到服务器上的指定端口(默认端 口为80)的HTTP请求,服务器端按照指定格式返回网页或 者其他网络资源 。网络爬虫也是一种HTTP客户端。
下图即为网络爬虫的基本结构图:
初始URL地址列表 请求网页 新解析出的 URL
互联网
解析网页
存储系统
非结构化数据提取方法研究
主题网络爬虫比通用网络爬虫的抓取范围要小,但是 主题网络爬虫在实现上也具有很大难度: 首先是网络爬虫对网络中信息资源的分布结构都是未 知的,不能很好的预测网页抓取的方向,保证抓取的网页 都是集中于所想要的主题;其次,网页数量每天都会激增 ,而且其中将近25%的网页会在一天之内变化,因此网络 爬虫非常必要优先抓取重要的网页,而这很大程度上决定 于网络爬虫的搜索抓取策略。
非结构化数据提取方法研究
robots.txt语法很简单,主要就以小面的两行代码进行叙述: User-agent: * Disallow: User-agent:这句主要用于描述网络爬虫的名字。如果 User-agent的值为*,则说明任何爬虫程序都需要遵守该 协议。 如果有多条 User-agent记录,这就说明有多个网 络爬虫需要遵守该协议 。 Disallow:这句代码用于描述网络爬虫不能访问的URL。这 个URL可以是绝对路径的,也可以是相对路径的。倘若文 件Disallow项的值为空,那么所有的爬虫都可以爬取该网 站的数据。
非结构化数据提取方法研究
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协议的处理流程如下:
查找robots.txt文件 文件存在与否 是 读取User-agent 否 否 清空Disallow缓存
允许所有爬虫访问 是 读取Disallow 存入Disallow缓存
跳出
当然,robots.txt只是网络爬虫的一种协议,如果有的爬虫设计者不遵 守这一协议,那么网络管理者本身也无法阻止爬虫对网站数据的爬取操作 ,不过一般的网络爬虫设计者也都会遵守这一协议。
非结构化数据提取方法研究
网络爬虫体系结构
为了达到对专题数据的提取目标,需要有针对性的从Web服务器上爬取所需要的 网页,提取出所需数据保存到数据库中 ,下面就是本文所设计的网络爬虫结构图:
种子URL 待爬取的URL URL解析
URL队列
获取HTML文件
Robots.txt解析
协议处理器
Http/Https/Ftp处理
(1)URL队列:URL队列中的URL记录来自两处,一处是种子URL,这些URL主要是用户预先 定义的网页链接;另一处就来自于爬虫在爬取后续网页过程中,不断从后续网页中获取的 URL。爬虫程序启动后,首先会从种子URL开始抓取,采用队列的先进先出原则。采用这种 方式有利于实现广度优先的抓取策略,从了巧妙的避开了深度优先抓取策略的容易偏离主 题的特点,提高了抓取网页的主题相关度。URL队列的管理大体如下图所示:
非结构化数据提取方法研究
2、网络爬虫(Web Crawler)
无论是通用搜索引擎,还是主题搜索引擎,网络爬虫在其中都扮演 着重要的角色。网络爬虫是搜索引擎获取网页的主要工具,搜索引擎通
常在网络爬虫所抓取的网页中对用户的搜索进行匹配,从而得到搜索结
果提供给用户。网络爬虫的搜索策略是网络爬虫的实现关键,是搜索引 擎的核心技术,同时也是通用搜索与主题搜索的最大区别所在。
非结构化数据提取方法研究
搜索抓取策略
目前搜索抓取策略主要包括广度优先(Breadth First)、深度优先(Depth First)和最优先策略(Best First),三者都源于图的遍历算法。 广度优先和深度优先策略是相对较基础,也是较简单 的网页搜索抓取策略。广度优先搜索抓取策略是优先抓取 同一阶层的网页,或者优先抓取最先发现的URL。深度优 先搜索抓取策略是优先抓取相邻网页,这里的相邻是以网 页中的URL作为链接。 目前最优先策略是各类网络爬虫较为常用的搜索抓取 策略,最优先策略是根据特定需要而制定的策略,其中最 重要的就是网页的重要度计算。主要是PageRank算法和 Location Metric算法。
非结构化数据提取方法研究
robots.txt是一个纯文本文件,这个文件一般放在网 站服务器的根目录下,网站管理员可以通过robots.txt来 定义哪些目录网络爬虫不能访问,或者哪些目录对于某些 特定的网络爬虫不能访问。例如有些网站的可执行文件目 录和临时文件目录不希望被爬虫爬到,那么网站管理员就 可以把这些目录定义为拒绝访问目录。 爬虫进入这个网站,就会到根目录下找寻这个 robots.txt文件,如果找到了该文件,就会遵守该协议的 内容,如果没有找到该文件就会跳过这步,然后抓取网站 数据。
初始URL地址
Todu队列
解析URL
Visited集合
新解析出的URL
非结构化数据提ຫໍສະໝຸດ Baidu方法研究
(2)协议处理器:该层是网络爬虫的基础,处于整个爬虫
系统的最底层,主要负责利用各种网络协议来实现网页数 据的采集工作。常用的网络协议有HTTP,HTTPS和FTP,目 前网络协议以HTTP为主,因此也正是出于这样的考虑,本 文所设计的网络爬虫目前只支持HTTP协议的数据传输。
非结构化数据提取方法研究
对于主题搜索抓取来说,通常都是以一部分与主题密切相关的网 页URL作为种子URL开始进行抓取。而网络爬虫的的抓取离原来的种子 网页越远,则偏离主题的可能性就越大,所以使用广度优先策略要比 深度优先策略的效果好很多。 对主题信息搜索策略的优化 广度优先策略与Location Metric算法在主题搜索抓取中,虽然 能够很好的保证主题抓取的有效性,但对于主题网页抓取的覆盖度却 在很大程度上限制了。为了更好的发掘网络中的主题资源,从而达到 对主题信息搜索算法的优化,这就是Fish-Search算法。该算法的主 题思想是将网络信息抓取看做鱼在觅食的过程,相关的主题网页信息 作为鱼的食物,只有鱼获取了食物才能变得强壮,才能继续生存,当 没有食物时,鱼将变得虚弱直到死亡。该算法根据所抓取的网页的相 关性进行判断,如果网页与所抓取的主题信息相关,则将网页中的 URL生命加1,但不高于所设定的最高生命值。如果网页与所抓取的的 主题无关,则URL生命减1。最后判断网页中URL的生命值,如果为0则 丢弃,不再对其进行抓取。 Fish-Search算法具有模式简单,并且能 够动态搜索。
下面就网络爬虫的几个关机技术进行说明:
非结构化数据提取方法研究
对robot禁止协议的支持
网络爬虫抓取网页,不同于一般的访问,如果控制不 好,则会引起网站服务器负担过重。05年,淘宝网就因为 雅虎搜索引擎的网络爬虫抓取其数据引起过淘宝网服务器 的不稳定。 那么网站是否就无法和网络爬虫交流呢?其实不然, 每个网络爬虫都有自己的名字,网络爬虫进入一个网站, 首先会去访问一个放置在服务器根目录下的一个 robots.txt文件,用于标识此网络爬虫的身份。网络爬虫 在抓取网页的时候会发送一个请求,这个请求中就有一个 字段为User-agent,例如Google网络爬虫的标识为 GoogleBot,Baidu网络爬虫的标识为BaiDuSpider等。