APP下载

深层网页垂直爬虫技术研究综述

2018-08-31广州工商学院电子信息工程系何小明

电子世界 2018年16期
关键词:爬虫数据源相似性

广州工商学院电子信息工程系 何小明

引言

通用爬虫虽已发展多年,技术较为成熟,但仅可采集到具有统一资源定位符(URL)的浅层网页(Surface Web)。随着Web技术的快速发展,越来越多的网页将其数据与业务进行物理分离,仅提供限制性的数据访问接口,使其具有商业价值的数据隐藏到深层网页(Deep Web)背后的网络数据库中。目前,很多爬虫研究者试图设计一个能采集全部深层网页数据的通用爬虫,由于不同深层网页数据加载方式的不同,使得这类深层网页通用爬虫只能采集有限深层网页的数据。为了获得特定主题内容或特定领域的深层网页数据,还需定制开发出专门的深层网页垂直爬虫。

1 深层网页垂直爬虫工作原理

深层网页垂直爬虫是根据深层网页的垂直结构而定制的一个自动提取数据的程序,通过采集深层网页的数据块来分析出用户需要的数据实体。

深层网页垂直爬虫以查询接口或网站导航页面为入口,结合相应的操作策略,通过网页脚本、异步请求、交互操作或页面渲染等动态网页技术加载出完整的深层网页,定位并提取网页页面包含的数据块,再分析出数据实体,并评估采集到的数据是否完备,若未完备,则不断重复该过程,直到数据采集完备,结束爬虫程序的运行。其运行流程如图1所示。在这个过程中,可根据数据实体的分析结果优化爬虫的运行策略,以便反馈与指导后续的工作。

图1 深层网页垂直爬虫运行流程示意图

(1)如何加载出完整的深层网页;

(2)如何定位并抽取网页数据块;

(3)如何分析出数据实体。

深层网页的完整加载决定数据采集的完整性,也是深层网页垂直爬虫定位、抽取网页数据块和分析数据实体的基础。网页数据块的定位与抽取是爬虫采集数据的关键步骤,分析数据实体的方法依赖于所抽取数据块的结构与特征。整个深层网页垂直爬虫的运行策略就是在这三个关键技术上建立的,下面将介绍深层网页垂直爬虫的关键技术及其爬取策略。

2 深层网页垂直爬虫的关键技术

2.1 动态网页的加载

通过超文本传输协议(HTTP),深层网页垂直爬虫从URL处仅可加载出深层网页的静态内容,需结合交互操作、网页脚本、异步请求或页面渲染等动态网页技术,将深层网页内容完整加载。

交互操作是用户对网页元素实施的可加载出深层网页动态内容的操作。常见的交互操作有按键或超链接的点击、文本框的输入与表单的提交[1]、页面或元素的滑动等。网页脚本是为提高Web系统的响应速度而设计的解释性程序,具有跨平台执行的特点,常用于数据验证、多媒体加载与播放、网页元素的事件处理等操作。异步请求[2]是为提高网页交互的流畅性而设计的多线程处理机制,在实际的应用中还具有隐藏数据请求接口、保护重要数据的作用。网页的页面渲染因无法脱离浏览器程序的支持,正逐渐成为一种有效的反爬虫技术。深层网页垂直爬虫通常采用集成浏览器内核的方式来解决网页渲染的限制,常见的浏览器内核有Mozilla Gecko内核、IE内核和开源内核。

2.2 数据块的定位与抽取

深层网页可视为网络数据库的一种视图。由于网页设计风格的不同,网页上的数据已丢失了其存储于数据库中时所具有的数据结构,数据实体被拆分与组合成许多数据块,分布在一个或多个深层网页中。深层网页垂直爬虫需利用基于DOM树[3]、基于页面定位语言或基于CSS选择器的工具定位出深层网页上的数据块,并通过程序自动化或半自动化地抽取出这些数据块。

2.3 数据实体的分析

用户对数据需求的不同,决定数据来源的不同。针对某一数据实体,有的只需采集特定网页下的数据块,有的则需从同领域下不同的深层网页中采集多个数据块。这样从多网页下采集到的多个数据块包含的信息具有片面性且相互之间存在冗余,需将数据块进行分析以提炼出完整的数据实体,所涉及到的分析算法包括页面分类、数据源采样、数据块标注、数据块相似性度量和数据源整合。

导入环节:教师可请学生打一谚语:形容在一个地方两个强者不能相容。在热烈的气氛中,学生齐声说出答案“一山不容二虎”。随后,教师进一步抛疑:是什么原因?学生甲说:“是由于食物不充足导致。”学生乙说:“是由于能量供应出了问题。”教师可留出悬念,在上完新课后再评价。

2.3.1 页面分类

深层网页垂直爬虫在运行的过程中,对查询接口页面、导航页面、索引页面和数据页面等不同类别的网页分别采取不同的处理方式,故需对这些页面进行分类。文献[4]将深层网页标签名称、文本值和默认值等作为语义特征进行提取,通过决策树分类算法生成数据源的分类规则树。文献[5]采用C4.5决策树和朴素贝叶斯相结合的分类方法,并结合反馈机制,能有效地判断爬虫提取的网页信息是否与主题相关。

2.3.2 数据源采样

同领域下不同深层网页数据源质量的高低会直接影响深层网页垂直爬虫获取数据实体的效率,这就需要对多个数据源进行质量评估。由于数据源包含的数据量太大,难以对所有数据进行评估,在实际操作中,通常用数据源采样算法来降低数据评估的运算量。常用的数据源采样算法可分为挖掘采样算法和随机采样算法。挖掘采样算法是通过Web系统的日志模块来挖掘关键词与数据属性的关联性,从该日志模块中提取出Web系统的高频关键词来完成数据源的采样[6]。由于日志模块通常无法被爬虫访问,导致该类采样算法的实用性较低。随机采样算法是根据文本频率、集合词频和平均词频等统计量来对数据源进行随机采样,可有效地描述数据库内容。

2.3.3 数据块标注

对于同一数据实体,深层网页垂直爬虫从同领域下不同深层网页中采集到的数据块存在多种表述,需对数据块进行标注,归一化的标注描述便于爬虫对数据块进一步分析。常用的数据标注方法有基于页面信息的数据标注算法、基于领域知识的数据标注算法、基于接口模式的数据标注算法和基于结果模式的数据标注算法等。基于页面信息的数据标注算法依赖于数据块所在网页的标签结构。由于深层网页设计风格的多样化,使得网页标签的结构存在多样性,因此该标注算法的实用性较低。基于领域知识的数据标注算法是通过构造相关领域的对象知识模型,利用机器学习算法对数据块进行标注。基于接口模式的数据标注算法和基于结果模式的数据标注算法分别依赖数据查询接口页面和查询结果页面的数据属性,对同一领域内的深层网页的数据块可实现准确的标注[7]。

2.3.4 数据块相似性度量

数据块之间的相似性度量用于识别数据块之间是否存在冗余或互补属性,从而提取出信息完善的数据实体。数据块之间的相似性度量方法可分为基于文本、结构和语义的相似性度量。基于文本相似性度量算法是对数据块的文本进行相似性计算。基于结构相似性度量算法是计算数据块所在网页的标签结构的相似性。基于语义相似性度量算法是从网页的文本提取出语义词汇,通过计算语义词汇的相似度得到数据块的相似性。上述每种数据块相似性度量算法都有各自的特点,实际应用时可结合多种度量算法来提高数据相似性的精度。

2.3.5 数据源整合

若同领域下不同的深层网页提供较高相似度的数据块,则可对这些深层网页的数据源进行整合。数据源整合通常要结合网页页面的结构特征和数据块的语义特征,采用聚类算法或混合特征的方法来完善数据实体,从而实现数据源的整合。文献[8]通过计算不同数据源的数据块属性的相似性,判别出数据块间的共有属性和私有属性,通过组合每个数据实体的共有属性和私有属性来完成多个数据源的整合。

3 深层网页垂直爬虫的爬取策略

深层网络垂直爬虫的数据入口可分为基于关键词查询接口和基于导航分类页面的接口。针对单一领域的深层网页,如电商、社交领域,深层网页垂直爬虫通常以导航分类页面为入口,动态地加载出所有的深层网页。基于关键词查询接口的爬取策略则是深层网络垂直爬虫的主要研究方向,下面重点介绍基于关键词查询接口的爬取策略。

对于以表单作为数据入口的深层网页,通常以词典、统计表等基于领域的本体知识库作为关键词筛选策略。爬虫程序先构建一个关键词词库,词库在关键词筛选策略下动态地变动,爬虫加载出词库中全部关键字对应的深层网页;网页经过分类处理后,爬虫再对分类出的查询结果网页进行数据块的定位、抽取和相似性度量,提炼出完整的数据实体,最后将数据实体进行持久化存储;当关键词所关联的数据实体被持久化存储后,该关键词将被移出词库,重复上述过程直至词库为空,爬虫程序停止工作。

结束语

从互联网技术的发展与应用前景来看,深层网页垂直爬虫将成为采集海量数据的重要工具之一,其技术仍处于待完善的阶段,有很多值得我们深入研究与探讨的课题,如下:

(1)多媒体信息的采集。多媒体数据包含丰富的信息,当前爬虫程序主要采集的数据对象是文本信息,极少去采集多媒体数据本身并进行分析。

(2)反爬虫的干扰。深层网页垂直爬虫面临的另一个挑战就是反爬虫。反爬虫以保护网页数据、避免爬虫过度占用网络带宽为目的来阻止爬虫的运作,爬虫则需采取相应的策略来应对该限制。爬虫与反爬虫之间的这种技术较量,降低了爬虫程序的生命周期,给爬虫开发者带来了极大的技术挑战。

(3)数据价值的挖掘。深层网页垂直爬虫是一种采集数据的工具,其数据的应用价值并未完全体现。目前,大数据、数据挖掘、人工智能、深度学习等技术研究正如火如荼地展开着,这些研究工作都需以海量数据作支撑,而这正是爬虫所能提供的。

除了上述三方面的困难与挑战,深层网页垂直爬虫技术还有很多需要我们改进与完善的方面,这也是我们今后的主要研究内容。希望通过更多研究人员的努力,建立起一个更高效、更智能的深层网页垂直爬虫。

猜你喜欢

爬虫数据源相似性
利用网络爬虫技术验证房地产灰犀牛之说
一类上三角算子矩阵的相似性与酉相似性
基于Python的网络爬虫和反爬虫技术研究
浅析当代中西方绘画的相似性
Web 大数据系统数据源选择*
基于不同网络数据源的期刊评价研究
大数据环境下基于python的网络爬虫技术
低渗透黏土中氯离子弥散作用离心模拟相似性
基于真值发现的冲突数据源质量评价算法
分布式异构数据源标准化查询设计与实现