又爱又恨的蜘蛛

阅读量:2085

定义:网络爬虫crawler,又被称为蜘蛛spider、机器人robots,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本 随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。

为了解决上述问题,抓取相关网页资源的爬虫程序应运而生。与搜索引擎不同的是,搜索引擎不仅包含了爬虫程序,还包含检索、查询等程序。


蜘蛛机器人


两种主要的爬虫分类

通用爬虫 通用网络爬虫又称全网爬虫(Scalable Web Crawler),爬行对象从一些种子 URL 扩充到整个 Web,主要为门户站点搜索引擎和大型 Web 服务提供商采集数据。 由于商业原因,它们的技术细节很少公布出来。

这类网络爬虫的爬行范围和数量巨大,对于爬行速度和存储空间要求较高,对于爬行页面的顺序要求相对较低,同时由于待刷新的页面太多,通常采用并行工作方式,但需要较长时间才能刷新一次页面。

虽然存在一定缺陷,通用网络爬虫适用于为搜索引擎搜索广泛的主题,有较强的应用价值。

通用网络爬虫的结构大致可以分为

1.页面爬行模块

2.页面分析模块

3.链接过滤模块

4.页面数据库

5.URL队列

6.初始URL集合

通用网络爬虫会采取一定的爬行策略

1.深度优先策略

2.广度优先策略

聚焦爬虫

聚焦网络爬虫又称主题网络爬虫,是指选择性地爬行那些与预先定义好的主题相关页面的网络爬虫。

和通用网络爬虫相比,聚焦爬虫只需要爬行与主题相关的页面,极大地节省了硬件和网络资源,保存的页面也由于数量少而更新快,还可以很好地满足一些特定人群对特定领域信息的需求。

聚焦网络爬虫和通用网络爬虫相比,增加了两个模块:

链接评价模块

内容评价模块

聚焦爬虫爬行策略实现的关键是评价页面内容和链接的重要性,不同的方法计算出的重要性不同,由此导致链接的访问顺序也不同。

其爬行策略如下有

基于内容评价

基于链接结构评价

基于增强学习

基于语境图增量式网络爬虫


面临的问题

重复页面:截止到 2007 年底,Internet 上网页数量超出 160 亿个,研究表明接近 30%的页面是重复的

动态页面:客户端、服务器端脚本语言的应用使得指向相同 Web 信息的 URL 数量呈指数级增长

上述特征使得网络爬虫面临一定的困难,主要体现在 Web 信息的巨大容量使得爬虫在给定时间内只能下载少量网页。

一些研究表明没有哪个搜索引擎能够索引超出 16%的Internet 上 Web 页面,即使能够提取全部页面,也没有足够的空间来存储。 为提高爬行效率,爬虫需要在单位时间内尽可能多的获取高质量页面,是它面临的难题之一。

当前有五种表示页面质量高低的方式:

页面与爬行主题之间的相似度

页面在 Web 图中的入度大小

指向它的所有页面平均权值之和

页面在 Web 图中的出度大小

页面的信息位置


并行性问题

为了提高爬行速度,网络通常会采取并行爬行的工作方式,随之引入了新的问题:

重复性:并行运行的爬虫或爬行线程同时运行时增加了重复页面

质量问题:并行运行时,每个爬虫或爬行线程只能获取部分页面,导致页面质量下降

通信带宽代价:并行运行时,各个爬虫或爬行线程之间不可避免要进行一些通信

并行运行时,网络爬虫通常采用三种方式:

独立方式:各个爬虫独立爬行页面,互不通信

动态分配方式:由一个中央协调器动态协调分配 URL 给各个爬虫

静态分配方式:URL 事先划分给各个爬虫


其他分类/span>

增量式网络爬虫 指对已下载网页采取增量式更新和只爬行新产生的或者已经发生变化网页的爬虫,它能够在一定程度上保证所爬行的页面是尽可能新的页面。

和周期性爬行和刷新页面的网络爬虫相比,增量式爬虫只会在需要的时候爬行新产生或发生更新的页面,并不重新下载没有发生变化的页面,可有效减少数据下载量,及时更新已爬行的网页,减小时间和空间上的耗费,但是增加了爬行算法的复杂度和实现难度。增量式网络爬虫的体系结构[包含爬行模块、排序模块、更新模块、本地页面集、待爬行 URL 集以及本地页面URL 集。

增量式爬虫有两个目标:保持本地页面集中存储的页面为最新页面和提高本地页面集中页面的质量。

为实现第一个目标,增量式爬虫需要通过重新访问网页来更新本地页面集中页面内容,常用的方法有:

1) 统一更新法:爬虫以相同的频率访问所有网页,不考虑网页的改变频率;

2) 个体更新法:爬虫根据个体网页的改变频率来重新访问各页面;

3) 基于分类的更新法:爬虫根据网页改变频率将其分为更新较快网页子集和更新较慢网页子集两类,然后以不同的频率访问这两类网页。

为实现第二个目标,增量式爬虫需要对网页的重要性排序,常用的策略有:

广度优先策略、PageRank 优先策略等。IBM 开发的 WebFountain是一个功能强大的增量式网络爬虫,它采用一个优化模型控制爬行过程,并没有对页面变化过程做任何统计假设,而是采用一种自适应的方法根据先前爬行周期里爬行结果和网页实际变化速度对页面更新频率进行调整。北京大学的天网增量爬行系统旨在爬行国内 Web,将网页分为变化网页和新网页两类,分别采用不同爬行策略。

为缓解对大量网页变化历史维护导致的性能瓶颈,它根据网页变化时间局部性规律,在短时期内直接爬行多次变化的网页 ,为尽快获取新网页,它利用索引型网页跟踪新出现网页。 Deep Web 爬虫 Web 页面按存在方式可以分为表层网页(Surface Web)和深层网页(Deep Web,也称 Invisible Web Pages 或 Hidden Web)。

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

2000 年 Bright Planet 指出:Deep Web 中可访问信息容量是 Surface Web 的几百倍,是互联网上最大、发展最快的新型信息资源 。

Deep Web 爬虫体系结构包含六个基本功能模块 (爬行控制器、解析器、表单分析器、表单处理器、响应分析器、LVS 控制器)和两个爬虫内部数据结构(URL 列表、LVS 表)。 其中 LVS(Label Value Set)表示标签/数值集合,用来表示填充表单的数据源。

Deep Web 爬虫爬行过程中最重要部分就是表单填写,包含两种类型:

1) 基于领域知识的表单填写:此方法一般会维持一个本体库,通过语义分析来选取合适的关键词填写表单。 Yiyao Lu[25]等人提出一种获取 Form 表单信息的多注解方法,将数据表单按语义分配到各个组中 ,对每组从多方面注解,结合各种注解结果来预测一个最终的注解标签;郑冬冬等人利用一个预定义的领域本体知识库来识别 Deep Web 页面内容,同时利用一些来自 Web 站点导航模式来识别自动填写表单时所需进行的路径导航。

2) 基于网页结构分析的表单填写: 此方法一般无领域知识或仅有有限的领域知识,将网页表单表示成 DOM 树,从中提取表单各字段值。

Desouky 等人提出一种 LEHW 方法,该方法将 HTML 网页表示为DOM 树形式,将表单区分为单属性表单和多属性表单,分别进行处理;孙彬等人提出一种基于 XQuery 的搜索系统,它能够模拟表单和特殊页面标记切换,把网页关键字切换信息描述为三元组单元,按照一定规则排除无效表单,将 Web 文档构造成 DOM 树,利用 XQuery 将文字属性映射到表单字段。 Raghavan 等人提出的 HIWE 系统中,爬行管理器负责管理整个爬行过程,分析下载的页面,将包含表单的页面提交表单处理器处理,表单处理器先从页面中提取表单,从预先准备好的数据集中选择数据自动填充并提交表单,由爬行控制器下载相应的结果页面。

文章热搜

官方客服 400-666-3155
友情链接

微信公众号

微信小程序

© 2020 dxm.so 《中华人民共和国增值电信业务经营许可证》编号: 川B2-20170249号 ICP证: 蜀ICP备14008752号 四川省成都市青羊区光华北三路98号光华中心D栋1609