购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

第2章
大数据的采集

大数据采集是大数据分析和处理的基础,是大数据生命周期的起点。数据蕴含价值,而实现价值的前提是成功地采集到数据,从而进行之后的一系列分析处理。本章将介绍大数据采集的相关知识,包括采集何种数据及怎样采集。

在大数据时代,数据的来源多种多样,有软件系统产生的数据(比如企业的业务系统、互联网平台系统等),有硬件设备产生的数据(如一些传感器、摄像头等物联网设备等)。根据数据存在的位置和组织边界,数据采集的来源可以分为内部数据和外部数据。外部数据又可以被细分为浅网(surface web)数据和深网(deep web)数据。本章将依据数据的不同来源,讲述数据提取、网络爬虫等数据采集方法。

2.1 内部数据

2.1.1 内部数据概述

内部数据是指组织内部由于业务运营而产生的数据。这些组织包括政府部门、企事业单位等,在数字化和智能化迅速发展的今天,为了满足组织的运营需求,这些组织往往会搭建一些支撑其业务运营的系统或平台。内部数据则会随着系统或平台的运行而产生,例如业务数据、财务数据、日志数据等。

1.政府部门内部数据

政府部门内部数据是指为了实现数据驱动决策、驱动管理、驱动创新,集阳光型政府、效能型政府、创新型政府、协同型政府、服务型政府的内涵于一体而建设的系统所产生的数据。这一概念由龙信数据于2012年提出。

公检法、财政、工商、税务、海关、人社、医疗等政府部门及其相关组织机构,出于履行其部门职能和便利市民的需要,通常会搭建各种不同的业务系统。同时,随着移动互联网的普及,相应的手机App和微信小程序等应用程序不断涌现。这些系统产生的内部数据具有种类繁多、价值巨大、可信度高、完整性好、实时性强、实体描述指向性明确具体等特点,通常会被存储在相应的数据中心。

然而,使用政府部门内部数据存在如下挑战。

根据不同的职能定位,不同的政府部门运营和管理的数据往往仅与该部门的独立职能有关,因此每一个政府部门都很难从全局的角度对数据进行关联和顶层设计。大多数政府部门的数据存在数据孤岛的问题,这就表示获取和挖掘全局数据价值的代价昂贵且可行度低。该问题需要更高层面的管理部门加以规划和解决。

不同政府部门的信息基础设施不均衡、数据化程度不同,相同类型的数据在不同级别或不同职能的政府部门所表现的形式和存储格式不同,进行数据集成和分析时存在较大的挑战。

2.企事业单位内部数据

企事业单位内部数据通常源于其自身业务需要而构建的不同业务系统或应用程序,例如企业资源计划系统、办公系统、订单管理系统、在线交易系统、各种交易App等。这些系统或应用程序在达到其建设目标、支持企事业单位业务运营的同时,汇聚了大量相关数据,这些数据以本组织的私有财产的形式存储在单位的服务器或云服务器中。显然这些数据在支撑其建设目标的价值实现方面有很大意义,同时也为组织深入挖掘其价值、实现商务智能提供了重要的数据资料。各个企事业单位通过建立大数据项目实现这些数据的深层次价值需求,但同样面临以下挑战。

不同系统中的数据存在异构性。在系统建设之初并未充分考虑后期大数据集成和大数据项目的需求,各个系统在前期设计时缺乏顶层规划,数据结构不统一、存储方式不一致,这为大数据项目中的数据集成与整合带来很大困难。

在整合不同利益主体的数据时存在非技术难题,例如出于商务原因的数据隐私问题,由于各个系统中的数据反映了业务的所有细节,利益主体的单位或部门不愿其被他人知晓,因此并不希望共享数据。

2.1.2 内部数据的价值

相比于组织外部情况的不确定性,内部数据更容易被获取,但这并不意味着容易获取到的数据其价值就偏低,内部数据蕴含的价值也同样丰富。不论是政府部门还是企事业单位,对其内部数据开展研究分析,都能为组织运营提供价值。

1.政府部门内部数据的价值

开展政府部门内部数据研究,能够推动政府信息公开、透明和社会公正,促进政府管理方法创新,为国家宏观政策制定、国家安全防控、市场经济体制管控、公共卫生服务安全防护、社会发展舆论导向等提供数据支撑,从而创造无限价值。对内部数据进行研究能够提高相关部门的应急能力,如电力部门会实时对其内部数据进行监测并进行分析预测,使得能够更便捷地进行电力资源调度,从而最大限度地保障工业生产和居民生活的用电需求。

2.企事业单位内部数据的价值

开展企事业单位内部数据研究同样能创造很大价值,可以将创造的价值分为两个层面。

帮助企事业了解自身运营情况。企业运营会涉及很多资源,这些资源的详细情况则蕴含在大量的内部数据之中,这也是内部数据的价值之一。通过对这些内部数据进行可视化分析,企业管理人员能够更加直接地了解这些资源,从而更加形象地了解企业的运行情况。这有助于迅速发现和定位问题、及时调整应对策略、降低财务风险等。对内部数据进行研究分析,能够为企业管理和决策制定提供有力的数据支撑。

帮助企事业了解用户情况。企业在为用户提供服务时积累的内部数据也蕴含着丰富价值。对这些数据进行分析,可以将用户和企业服务项目进行串联,从而精确化用户画像,提高企业的服务质量。例如,在电子商务领域,根据对用户浏览商品的记录和购物单记录的分析,有效挖掘用户的偏好,电商公司更加有针对性地为用户推荐合适的产品或服务,提高用户对商家的忠诚度;旅行网站可以提供更合适的旅行路线;二手交易网站可以更精确地匹配符合要求的交易双方。

2.1.3 内部数据的采集

内部数据存储在组织内部的各个业务系统中,随着业务系统的运行而大量积累,例如ERP系统中的数据、客户关系管理系统中的数据等,同时还存在一些财务数据、日志数据等。这些数据在达到其初始的价值期望后,作为数据资产存储在系统的数据库或数据文件中。随着组织数字化程度的提高以及业务系统建设的发展与壮大,各个系统中存储了关于组织运营的全面数据,这些数据反映了组织运营以及与运营密切相关的各种业务状态信息,通过将其关联和集成,可以从中挖掘很有价值的业务知识以辅助企业决策。

内部数据采集应当注意以下问题。

构建数据驱动的应用,推进数据价值的全面实现:以组织自有和自营的数据为中心,围绕组织的价值实现需求,融入与其他组织交互时产生的数据和互联网开放数据等所有可以利用的数据,研发数据驱动的创新应用,挖掘和拓展组织的所有价值实现的可能。

统一数据标准,推动数据共享开放:内部数据建设基础不同、时间不同、业务需求不同、建设的供应商不同等都会导致数据的标准不同。在数据驱动项目建设初期,应尽早考虑数据标准化、数据接口规范化等数据共享集成的需求与设计实现,积极推动组织内数据共享。

重视数据管理,保证数据安全:纷繁复杂的数据存储在不同的系统、数据库和存储设备中,这些数据不一致的问题会导致业务决策失效,使用元数据管理可以避免数据的不一致,并降低数据管理的难度。此外,加强数据安全性的管理也至关重要。在信息社会,掌握组织运营的信息就掌握了组织的经营发展状况等商业机密,因此应当从管理制度、流程和技术手段等多个方面全面保证大数据的安全。

能否对内部数据进行有效的整合是实现其价值的关键。在数据整合中,ETL技术是内部数据集成的重要手段。ETL用于描述数据从数据源经过提取(extract)、转换(transform)并加载(load)至目标数据库的过程,如图2-1所示。获取内部数据是对数据进行整合的第一步,这一步主要涉及数据提取。下面将详细阐述数据提取的概念,数据转换和数据加载则会在之后的章节中详细叙述。

图2-1 ETL示意图

由于内部数据属于组织的私有财产,因此获取内部数据只需要从组织所属的数据库进行提取即可。依据数据库的种类不同,数据提取可以分为关系型数据库提取和非关系型数据库提取。

1.关系型数据库数据提取

从关系型数据库中提取数据一般分为全量提取和增量提取两种方式。

全量提取类似于数据迁移或数据复制,是指将数据源中的表或视图的数据原封不动地从数据库中提取出来,并转换为便于被识别的格式。由于全量提取是对整个数据库的所有数据进行提取,无须进行其他复杂处理,因此提取过程比较直观、简单。但在实际应用中,关系型数据库全量提取应用较少,因为随着系统的运行,系统数据实时增加,全量提取每次均需重复提取上次已经提取的历史数据,继而产生大量冗余数据,最终降低提取效率。而增量提取能够很好地避免这个问题。

增量提取是指提取自上次提取结束之后数据库表中新增、修改、删除的数据。对于增量提取而言,如何捕获变化的数据是关键,对捕获方法通常有两个要求,即数据增量提取的准确性和性能。其中准确性是指能够将业务系统中的变化数据准确地捕获;性能是指尽量减少对业务系统造成的压力,避免影响现有业务系统的运行。数据增量提取中常用的捕获变化数据的方法有触发器方法、时间戳方法、全表对比方法和日志对比方法。

(1)触发器方法

在待提取的数据库表上建立需要的触发器(trigger),通常需建立插入、修改、删除三个触发器,每当源表中的数据发生变化,就会触发相应的触发器,将变化的数据写入一个临时表,提取线程进行数据增量获取时从临时表中提取数据。触发器方法的优点是数据提取性能较好,缺点是要求在业务数据库中建立触发器,对业务系统有一定的性能影响。

(2)时间戳方法

时间戳(time stamp)方法是一种基于递增数据比较的数据增量捕获方式,是指在源表上增加一个时间戳字段,如图2-2所示,系统更新修改表数据的同时修改时间戳字段的值。当进行数据提取时,通过比较系统时间与时间戳字段的值,来提取时间戳在上次增量提取时间之后的数据。有些数据库支持时间戳的自动更新,即表中其他字段的数据发生改变时自动更新时间戳字段的值;有些数据库不支持时间戳的自动更新,这就要求业务系统在更新业务数据时手动更新时间戳字段。同触发器方法类似,基于时间戳的增量提取方法性能较好,数据提取逻辑相对清楚简单,但对业务系统具有很大的侵入性(需加入额外的时间戳字段),尤其对于不支持时间戳自动更新的数据库,它要求业务系统进行额外的更新时间戳字段的操作。此外,该方法无法捕获在时间戳建立以前数据的删除和修改操作,对数据准确性有一定的影响。

图2-2 时间戳数据增量提取示意图

(3)全表对比方法

典型的全表对比方法采用MD5校验码。事先为待提取的表建立一个结构相似的MD5临时表,该临时表记录源表主键以及根据所有字段的数据计算得到的MD5校验码。每次进行数据提取时,对源表和MD5临时表进行MD5校验码的比对,从而确定源表中的数据是新增、修改还是删除,同时更新MD5校验码。

MD5方式的优点是对源系统的侵入性较小(仅需要建立一个MD5临时表)。但缺点同样显而易见,与基于触发器和时间戳的数据增量提取方法中的主动通知不同,MD5方式采用被动全表数据比对,因而性能较差。当表中不含主键或唯一列且含有重复记录时,MD5方式的准确性较差。

(4)日志对比方法

通过分析数据库自身的日志来判断变化的数据。Oracle的变化数据捕获(Change Data Capture,CDC)技术是该方面的代表。CDC特性在Oracle9i数据库中被引入,它能够帮助用户识别自上次提取之后发生变化的数据。利用CDC技术,在对源表进行新增、修改或删除等操作的同时可提取变化的数据,并将数据存储在数据库的变化表中。这样就能捕获发生变化的数据部分,然后利用数据库视图以一种可控的方式提供给目标系统。

CDC体系结构基于发布/订阅模式,发布者捕获变化数据并提供给订阅者,订阅者使用从发布者处获得的变化数据。CDC系统通常拥有一个发布者和多个订阅者。发布者首先需要识别捕获变化数据的源表,然后捕获变化的数据并将其存储在特别创建的变化表中,同时控制订阅者对变化数据的访问。订阅者需要明确自己感兴趣的变化数据,接着创建一个订阅者视图来访问经发布者授权后可以访问的变化数据。CDC分为同步模式和异步模式;同步模式实时捕获变化数据并存储到变化表中,发布者与订阅者均位于同一数据库;异步模式则以Oracle流复制技术为基础,从redo log中读取日志记录以捕获变化数据。

2.非关系型数据库数据提取

ETL处理的数据源除关系型数据库外,还可能是txt、xls、xml等格式的文件。对文件数据的提取通常为全量提取,每次提取前可保存文件的时间戳或计算文件的MD5校验码,以便在下次提取时进行比对,如果相同则说明数据未发生变化,因而可忽略本次提取。

2.2 外部数据

2.2.1 外部数据概述

外部数据是指对于本组织而言,其他组织或个人所属的数据,包括国家数据和互联网数据。由于数据的归属不同,获取外部数据的方式自然与内部数据存在不同。

1.国家数据

国家可以从更高层面、更宏观角度获取和掌握数据,也可以出台一系列法律法规和制度等规范化采集所需要的数据。国家层面的数据多为宏观的、趋势性的统计数据,由国家统计局代表发布,例如国内生产总值、居民消费价格指数、生产价格指数、工业生产增长速度、固定资产投资、社会消费品零售总额、粮食产量、城乡居民收入与支出,以及相关的标准、法律和法规等。国家数据的来源通常包括政府数据开放平台、国家相关部门统计信息网站,以及国外数据开放网站等。

2.互联网数据

互联网数据是指通过不同的互联网应用产品积累在互联网中的各类数据。这些数据以不同的形式存储在不同组织的硬件设备中,由于互联网开放共享的原则,任何人均可通过浏览网页或使用App的方式访问这些数据。互联网数据通常分布在以下资源中。

(1)门户网站

门户网站以媒体属性发布新闻、评论、报道等,例如搜狐、新浪、网易等。

(2)政府部门网站

政府部门网站即政府部门公开发布数据的网站,例如中央及各省市的政府网,以及国家统计局、国家发展改革委、国家卫生健康委等官方网站。

(3)社交网站

社交网络(social network)是指个人之间的关系网络,基于社交网络思想建立的网站即社交网站(Social Networking Site,SNS)。SNS也可以表示社会化网络服务(Social Network Service),即专指帮助人们建立社交网络的互联网应用服务。

社交网站出于其媒体属性和社会属性,允许用户发表自媒体信息,在提供用户社交服务的同时记录用户的言论、轨迹等数据。这些数据具有一定的实时性和针对性,对于发现舆情有很大的价值。社交网站和社交软件统称为社交网络。社交网络的发展验证了“六度分隔理论”(six degrees of separation),即“在人际关系脉络方面,一个人必然能够通过不超过六位中间人间接与世上任一人相识”。个体的社交圈会不断扩大和重叠,并最终形成大的社交网络,在此类通过对“朋友的朋友是朋友”原则的实现而得到发展的线上社交网络中,Facebook和微信具备一定的代表性。

(4)电商网站

电商网站是指企业、机构或个人在互联网中建立的站点,是其开展电商业务的基础设施和信息平台、实施电商业务的交互窗口,以及从事电商业务的手段。电商网站出于营销的目的,允许用户自由查询、采购商品并发布评论,这些数据具备实时性和真实性。

电商网站包含多种模式,其由于面对的用户群体各不相同,所以推广方式存在很大区别。常见的电子商务模式有B2B、B2C和C2C,其中B2B以阿里巴巴等大型门户网站为代表,B2C以京东、当当等知名电商企业为代表,C2C则以淘宝为代表。

(5)论坛

论坛通常指公告板系统(Bulletin Board System,BBS)。BBS最早用于公布股市价格等信息,最初版本甚至不包含文件传输的功能,仅能在苹果计算机上运行。早期的BBS与一般街头和校园内的公告板性质相同,只是通过计算机传播或获得消息。直到个人计算机开始普及,人们尝试将苹果计算机上的BBS转移到个人计算机,BBS由此开始普及。近年来,论坛如雨后春笋般出现并迅速发展壮大,其功能也得到很大扩充。现在的论坛几乎涵盖了人们生活的各个方面,每个人都能找到感兴趣或需要了解的专题论坛,而各类网站、综合性门户网站或功能性专题网站也都青睐于开设自己的论坛,以促进网络用户之间的交流,增强互动性并丰富网站的内容。

互联网数据的形式众多,此处不再一一罗列。互联网数据中沉淀着大量反映用户偏好和与事件发展趋势相关的信息。更重要的是,这些数据均以共享开放的原则存在于互联网中,因此被采集的可能性较大。但是由于各个网站的建设水平不同,考虑到用户的体验,网站的模板结构存在较大差异。此外,互联网数据多以文本、表格、图片和视频等非结构化数据的形式存在,因此采集和应用存在一定的难度。

外部数据根据其所属页面的访问需求不同,可以分为浅网数据和深网数据。

2.2.2 浅网数据

1.浅网数据概述

倘若将互联网类比成一个城市,那么这个城市有面向所有人开放的公共空间,比如街道、公园等,无论是谁都可以访问,这便是浅网。浅网是指传统搜索引擎可以索引的页面,即以超链接可以链接访问的静态网页为主构成的页面。

浅网可能包含文档、图片、媒体文件等数据,这就是浅网数据。在免费、免注册或免安装其他软件的情况下,任何人都可以通过搜索引擎或超链接访问浅网并查看浅网数据。

2.浅网数据的价值

浅网数据蕴藏着丰富的价值,充分应用浅网数据有助于个人或组织对专注的领域有更加深刻的认识,并提供学习、工作上的便利。例如在深度学习领域,不论是计算机视觉板块还是自然语言处理板块,在进行模型训练时都需要大量的文本、图片或视频作为数据集。这些丰富的数据在搜索引擎上可以直接被查看到,属于浅网数据。这些浅网数据可以为相关研究提供数据支持。同样,由政府部门发布的大量统计数据可以为工作带来便利,通过分析相关数据,可以挖掘行业发展趋势等重要信息,这些信息则是众多行业领域扩展业务与开拓市场的突破点。

3.浅网数据的采集

浅网数据采集的主要工具是网络爬虫。网络爬虫又称网页蜘蛛、网络机器人,是一种按照一定规则自动爬取互联网信息的程序或脚本。传统网络爬虫从获取一个或若干初始网页的统一资源定位符(Uniform Resource Locator,URL)开始,在爬取网页的过程中不断从当前页面抽取新的URL放入队列,直到满足一定的停止条件。有些网络爬虫的工作流程较为复杂,需要借助网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待爬取的URL队列,然后根据一定的搜索策略从队列中选择下一步要爬取的网页URL。重复上述过程,直至达到系统的某一条件时停止。另外,所有被爬取的网页将被系统存储,对其进行分析、过滤并建立索引,以便后续进行查询和检索,该过程得到的分析结果还可能为今后的爬取过程提供反馈和指导。

研究表明,互联网近30%的页面为重复页面,动态页面的存在以及客户端、服务器端脚本语言的应用,使得指向相同Web信息的URL数量呈指数级增长。上述特征使网络爬虫面临一定的困难,主要体现为Web信息的巨大容量导致网络爬虫在给定时间内只能下载少量网页。Lawrence和Giles的研究表明,没有搜索引擎能够索引超过16%的Web页面,即使能够爬取全部页面,也没有足够的空间存储。

为了提高爬取效率,网络爬虫需要在有限的时间内获取尽可能多的高质量页面。因此网络爬虫通常采取并行爬行的工作方式,然而这又产生了重复获取(爬虫或爬行线程同时运行时增加了重复页面)、质量问题(每个爬虫或爬行线程只能获取部分页面,导致页面质量下降)、通信带宽代价(各个爬虫或爬行线程之间不可避免地要进行通信)等一系列新问题。

并行爬行时,网络爬虫通常采用三种方式:独立方式(各个爬虫独立爬行页面,互不通信)、动态分配方式(由一个中央协调器动态地为各个爬虫协调分配URL)、静态分配方式(将URL事先划分给各个爬虫)。可以根据爬取页面的质量选择不同的并行爬行算法的标准。

目前有六种表示爬取页面质量的方式,具体如下:

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

Backlink:页面在Web图中的入度大小。

PageRank:指向其所有页面平均权值之和。

Forwardlink:页面在Web图中的出度大小。

Location:页面的信息位置。

Parallel:并行性问题。

网络爬虫在获取外部数据时能够起到非常大的作用,下面对网络爬虫进行详细介绍。

(1)网络爬虫爬取流程

如图2-3所示,网络爬虫爬取首先开始于一个精心挑选的种子URL列表,将其作为爬取的链接入口。当网络爬虫访问这些网页时,识别出页面中所有需要的网页链接,并将其加入待爬取URL队列,然后从中取出待爬取URL,解析DNS并获得主机IP,接着将URL对应的网页下载并存储于已下载网页库,同时将这些URL放入已爬取URL队列。此后再从待爬取URL队列中取出网页链接并按照固定的策略循环访问,直到待爬取URL队列为空。

图2-3 网络爬虫爬取流程

(2)网络爬虫组成

网络爬虫的系统框架主要由控制器、解析器、资源库三个部分组成。

控制器是网络爬虫的中央控制器,主要负责根据系统传输的URL链接分配线程,然后启动该线程调用爬虫爬取网页。

解析器是网络爬虫的主体部分,主要负责下载网页、处理网页文本(例如使用过滤功能处理)、提取特殊HTML标签、分析数据等。

资源库主要用于存储网页中下载的数据记录,并提供生成索引的目标源。大中型数据库产品有Oracle、SQL Server等。

(3)网络爬虫策略

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

1)广度优先搜索策略。如图2-4所示,广度优先搜索策略是指在爬取过程中,在完成当前层次的搜索后才进行下一层次的搜索。该策略的设计和实现相对简单。目前为了覆盖尽可能多的网页,通常使用广度优先搜索策略。也有许多研究将广度优先搜索策略应用于聚焦网络爬虫,策略的基本思想是假定与初始URL在一定链接距离内的网页具有主题相关性的概率较大。另外一种方法是将广度优先搜索策略与网页过滤技术结合使用,先用广度优先搜索策略爬取网页,再将其中的无关网页过滤掉。这些方法的缺点在于,随着爬取网页的增多,大量的无关网页被下载并过滤,降低了算法的效率。

图2-4 广度优先搜索策略

2)深度优先搜索策略。如图2-5所示,深度优先搜索策略是指从起始网页开始,选择其中一个URL进入,如此从一个链接到另一个链接地爬取,直到处理完毕一条路径后再处理下一条路径。深度优先搜索策略的设计较为简单。门户网站提供的链接往往最具价值,PageRank也较高,但每深入一层,网页价值和PageRank均会相应下降。这就表示重要网页通常距离种子较近,而过度深入爬取的网页价值较低。同时,该策略的爬取深度直接影响爬取命中率以及爬取效率,因而爬取深度是该策略的关键。相较于其他两种策略,该策略很少使用。

图2-5 深度优先搜索策略

3)最佳优先搜索策略。最佳优先搜索策略按照一定的网页分析算法,预测候选URL与目标网页的相似度或与主题的相关性,选取评价最好的一个或多个URL进行爬取,即只访问网页分析算法预测为“有用”的网页。然而该策略存在的一个问题是,由于最佳优先搜索策略是一种局部最优搜索算法,爬虫爬取路径上的许多相关网页可能被忽略,因此需要将最佳优先搜索策略结合具体的应用进行改进,以跳出局部最优点。研究表明,这样的闭环调整可以将无关网页的数量降低30%~90%。

(4)网络爬虫分类

网络爬虫按照系统结构和实现技术,大致可以分为通用网络爬虫(general purpose web crawler)、聚焦网络爬虫(focused web crawler)、增量式网络爬虫(incremental web crawler)、深层网络爬虫(deep web crawler)等类型。实际的网络爬虫系统通常由多种爬虫技术结合实现。此处主要介绍前三种类型。

1)通用网络爬虫。通用网络爬虫又称全网爬虫(scalable web crawler),爬取对象范围从种子URL扩展到整个Web,主要为门户网站搜索引擎和大型Web服务提供商采集数据。出于商业原因,其技术细节很少公布。该类网络爬虫的爬取范围广且数量巨大,对爬取速度和存储空间要求较高,对爬取页面的顺序则要求较低,同时由于待爬取页面较多,通常采用并行工作的方式,但需要较长时间才能刷新一次页面。虽然存在一定缺陷,通用网络爬虫依然适用于为搜索引擎搜索广泛的主题,且有较强的应用价值。

通用网络爬虫的结构大致可以分为页面爬取模块、页面分析模块、链接过滤模块、页面数据库、URL队列、初始URL集合等部分。为了提高工作效率,通用网络爬虫会采取一定的爬取策略,常用的爬取策略有深度优先搜索策略和广度优先搜索策略。

2)聚焦网络爬虫。聚焦网络爬虫又称为主题网络爬虫(topical web crawler),是指有选择性地爬取与预定义主题相关的页面的网络爬虫。由于聚焦网络爬虫只需要爬取与主题相关的页面,从而极大地节省了硬件和网络资源,存储的页面也由于数量较少而更新较快,同时可以很好地满足一些特定人群对特定领域信息的需求。

相对于通用网络爬虫,聚焦网络爬虫还需要解决以下三个主要问题。

对爬取目标的描述或定义。

对网页或数据的分析与过滤。

对URL的搜索策略。

和通用网络爬虫相比,聚焦网络爬虫增加了链接评价模块以及内容评价模块。聚焦网络爬虫爬取策略实现的关键是评价页面内容和链接的重要性,不同方法计算得到的重要性不同,由此导致链接的访问顺序也不同,需要按照重要性的顺序爬取网页。下面将对爬取策略进行介绍。

基于内容评价的网页爬取策略:DeBra将文本相似度的计算方法引入网络爬虫,提出了Fish Search算法。该算法将用户输入的查询词作为主题,包含查询词的页面被视为与主题相关,其局限性在于无法评估页面与主题的相关度。Herseovic对Fish Search算法进行改进,提出了Shark Search算法,利用空间向量模型计算页面与主题的相关度。

基于链接结构评价的网页爬取策略:Web页面作为一种半结构化文档,包含很多结构信息,可用于评价链接重要性。PageRank算法最初用于搜索引擎信息检索中对查询结果进行排序,也可用于评价链接重要性,具体做法是每次选择PageRank值较大的页面中的链接进行访问。另一个利用Web结构评价链接价值的方法是HITS方法,该方法计算已访问页面的Authority权重和Hub权重,并以此决定链接的访问顺序。

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

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

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

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

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

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

个体更新法:爬虫根据个体网页的变化频率重新访问各页面。

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

为了实现第二个目标,增量式网络爬虫需要对网页的重要性进行排序,常用的策略有广度优先搜索策略、PageRank优先策略等。IBM开发的WebFountain是一个功能强大的增量式网络爬虫,它采用一个优化模型控制爬虫爬取过程,并不对页面变化过程进行任何统计假设,而是根据之前爬虫在爬取周期内的结果和网页实际变化速度以一种自适应的方式对页面更新频率进行调整。北京大学的天网增量爬行系统旨在爬取国内We b,将网页分为变化网页和新网页两类,并分别采用不同的爬取策略。为了缓解维护大量网页变化历史导致的性能瓶颈,该系统根据网页变化时间的局部性规律,在短时期内直接爬取多次变化的网页。同时为了尽快获取新网页,该系统利用索引型网页来跟踪新出现的网页。

2.2.3 深网数据

1.深网数据概述

同样将互联网类比作一个城市,除去浅网这样的开放区域,城市中还有数量众多的私人区域。这些私人区域往往需要门票、钥匙或通行证才能进入访问,倘若只站在公共区域眺望,则看不到这些区域里面的情况,这些私人区域便被称为深网。

深网主要是指大部分内容无法通过静态链接获取的、隐藏在搜索表单后的、信息内容存储在检索数据库中并且仅响应直接查询请求的网页,其内容多为结构化的数据库信息。例如在用户注册后才可见的网页内容即属于深网内容。Bright Planet于2000年指出,深网中可访问信息的容量是浅网的上百倍,是互联网中容量最大、发展最快的新型信息资源。如图2-6所示,可以看到深网在互联网中的所占内容。据估计,深网内容占全部互联网内容的96%,包括学术论文数据库、病历、财务记录、法律文件、科学报告、政府报告、仅限订阅的信息和组织特定存储库中的内容等。深网中存在一些隐藏更深的内容,称为暗网(dark web)内容,包括TOR(The Onion Router)等信息。其中TOR是实现匿名通信的自由软件,用户可以通过TOR接达由全球志愿者免费提供、包含6000多个中继器的覆盖网络,从而达到隐藏真实地址、避免网络监控及流量分析的目的。TOR用户的互联网活动(包括浏览在线网站、论坛文章以及即时消息等通信形式)较难追踪。TOR的设计初衷在于保障用户的个人隐私,以及不受监控地进行秘密通信的自由和能力。

图2-6 互联网内容示意图

深网信息通常包含以下几个部分。

1)由于缺乏被指向链接而未被搜索引擎索引的页面。

2)需要注册或其他限制才能访问的内容。

3)通过填写表单形成对后台在线数据库的查询而得到的动态页面。

4)Web中可访问的非网页文件,例如图片文件、PDF和Word文档等。

深网信息通常具有以下特点。

1)深网信息与信息需求、市场和领域高度相关。

2)深网信息是互联网中增长最快的新信息类型。

3)深网信息大多存储在专题数据库中,95%的深网信息可以从公共获取且无须付费。

暗网内容此处不做展开。

2.深网数据的价值

深网中的信息比浅网更专更深,其全部价值是浅网的1000~2000倍。由于深网通常需要登录、验证码等操作才能查看,因此深网数据具有定制的特点,而这也是其价值所在。例如学术论文数据库、企业数据库等深网数据,通常都蕴藏着丰富的价值,对这些数据进行分析学习,有助于在短时间内深入某一专业。

3.深网数据的采集

深网数据用于表述无法通过搜索引擎搜索的、每次访问页面的内容均为响应用户请求而由数据库中的数据生成的动态网页的内容。深网数据也可以通过网络爬虫获取。深网爬虫可以是自行设计的、针对某个深网的个性化爬虫程序,也可以是相对通用的深网爬虫程序。

深网数据采集任务包含两个子任务,即识别查询接口和自动填写表单需要的接口参数。具体可以分为以下步骤。

1)通过多种方法解析HTML表单或对HTML表单进行语法分析以自动发现深网数据资源,该部分工作可以由人工分析或通过设计程序实现自动化分析。

2)将HTML表单与特定领域关联以实现表单的自动填写。

3)进行领域无关探测,即基于采样迭代式地从查询结果中获取查询关键字,从而以较少的查询次数获取尽可能多的查询结果。

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

深网爬虫程序爬行过程中最重要的部分就是表单填写,包含以下两种类型。

1)基于领域知识的表单填写:该方法一般维持一个本体库,通过语义分析选取合适的关键词填写表单。一种获取Form表单信息的多注解方法是将数据表单按语义分配到各个组,对每个组从多方面注解,结合多种注解结果预测一个最终的注解标签;另一种方法是利用一个预定义的领域本体知识库识别深网页面内容,同时利用一些来自We b站点的导航模式识别自动填写表单时所需的路径导航。

2)基于网页结构分析的表单填写:该方法一般不涉及领域知识或仅涉及有限的领域知识,将网页表单表示为文档对象模型(Document Object Model,DOM)树,从中提取表单各字段值。还有方法将HTML网页表示为DOM树形式,将表单区分为单属性表单和多属性表单分别进行处理。一种基于XQuery的搜索系统能够模拟表单和特殊页面标记之间的切换,将网页关键字的切换信息描述为三元组,按照一定规则排除无效表单,将We b文档构造为DOM树,利用XQuery将文本属性映射到表单字段。

在某些爬虫系统中,爬取控制器负责管理整个爬行过程,分析下载的页面,将包含表单的页面提交至表单处理器处理。表单处理器从页面中提取表单,然后从预先准备的数据集中选择数据自动填充并提交表单,由爬取控制器下载相应的结果页面存储到资源库。

总结

本章主要讨论大数据采集的来源,包括内部数据和外部数据,通过分析从各种来源获取的数据,可以发现数据中蕴含的规律,实现数据的价值,进而指导科学决策。内部数据的采集方法主要是通过对组织内部数据库进行数据提取;外部数据主要为互联网数据,可以通过网络爬虫获取。互联网数据按照页面生成内容的不同形式分为浅网数据和深网数据。浅网数据可以通过静态网络爬虫获取,获取时需要考虑数据的重要性和与主题的相关性;深网数据获取则比较复杂,需要设计专业的深网爬虫程序,通过识别数据接口、填写接口表单内容的方式获取。

习题

1.数据的获取来源包括哪些部分?

2.获取内部数据存在哪些问题?

3.网络爬虫主要分为哪几类?

4.请简要描述爬虫工作流程。

5.【多选】以下哪些属于外部数据?(  )

A.新浪平台发布的新闻消息

B.国家发展改革委发布的关于经济开发的文件

C.淘宝第三季度用户消费偏好统计

D.百度贴吧中的个人评论 2FlxMelX2dBDm94EXbc0oxQfy2WDvcH7ov0xZJS9EtaoDp+nTRPkk7ZZuiyzmZ8Y

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开