
出版社: 清华大学
原售价: 39.00
折扣价: 29.64
折扣购买: R语言与网络舆情处理
ISBN: 9787302482574
无
第3章网络舆情信息采集及R爬虫的实现 3.1网络舆情信息采集的基本原理 3.1.1网络爬虫及其主要类型 舆情分析的基础是数据。数据从哪里来?目前舆情分析所使用的数据大都是通过网络爬虫从互联网各个媒体抓取的,这些媒体主要包括新闻、论坛、博客、微博、微信、贴吧、社区等。毫无疑问,网络爬虫是舆情分析必备的武器。 网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型: 通用网络爬虫(General Purpose Web Crawler)、聚焦网络爬虫(Focused Web Crawler)、增量式网络爬虫(Incremental Web Crawler)、深层网络爬虫(Deep Web Crawler)。实际的网络爬虫系统通常是几种爬虫技术相结合实现的。 1. 通用网络爬虫 通用网络爬虫又称全网爬虫,爬行对象从一些种子URL扩充到整个Web,主要为门户站点搜索引擎和大型Web服务提供商采集数据。由于商业原因,它们的技术细节很少公布出来。这类网络爬虫的爬行范围和数量巨大,对于爬行速度和存储空间要求较高,对于爬行页面的顺序要求相对较低,同时由于待刷新的页面太多,通常采用并行工作方式,但需要较长时间才能刷新一次页面。虽然存在一定缺陷,通用网络爬虫适用于为搜索引擎搜索广泛的主题,有较强的应用价值。 通用网络爬虫的结构大致可以分为页面爬行模块、页面分析模块、链接过滤模块、页面数据库、URL队列、初始URL集合几个部分。为提高工作效率,通用网络爬虫会采取一定的爬行策略。常用的爬行策略有深度优先策略、广度优先策略。 (1) 深度优先策略: 其基本方法是按照深度由低到高的顺序,依次访问下一级网页链接,直到不能再深入为止。爬虫在完成一个爬行分支后返回到上一链接节点进一步搜索其他链接。当所有链接遍历完后,爬行任务结束。这种策略比较适合垂直搜索或站内搜索,但爬行页面内容层次较深的站点时会造成资源的巨大浪费。 (2) 广度优先策略: 此策略按照网页内容目录层次深浅来爬行页面,处于较浅目录层次的页面首先被爬行。当同一层次中的页面爬行完毕后,爬虫再深入下一层继续爬行。这种策略能够有效控制页面的爬行深度,避免遇到一个无穷深层分支时无法结束爬行的问题,实现方便,无须存储大量中间节点,不足之处在于需较长时间才能爬行到目录层次较深的页面。 2. 聚焦网络爬虫 聚焦网络爬虫又称主题网络爬虫,是指选择性地爬行那些与预先定义好的主题相关页面的网络爬虫。和通用网络爬虫相比,聚焦爬虫只需要爬行与主题相关的页面,极大地节省了硬件和网络资源,保存的页面也由于数量少而更新快,还可以很好地满足一些特定人群对特定领域信息的需求。 聚焦网络爬虫和通用网络爬虫相比,增加了链接评价模块以及内容评价模块。聚焦爬虫爬行策略实现的关键是评价页面内容和链接的重要性,不同的方法计算出的重要性不同,由此导致链接的访问顺序也不同。常用的爬行策略包括: 基于内容评价的爬行策略、基于链接结构评价的爬行策略、基于增强学习的爬行策略、基于语境图的爬行策略。 (1) 基于内容评价的爬行策略: DeBra将文本相似度的计算方法引入到网络爬虫中,提出了Fish Search算法,它将用户输入的查询词作为主题,包含查询词的页面被视为与主题相关,其局限性在于无法评价页面与主题相关度的高低。Herseovic对Fish Search算法进行了改进,提出了Sharksearch算法,利用空间向量模型计算页面与主题的相关度大小。 (2) 基于链接结构评价的爬行策略: Web页面作为一种半结构化文档,包含很多结构信息,可用来评价链接重要性。PageRank算法最初用于搜索引擎信息检索中对查询结果进行排序,也可用于评价链接重要性,具体做法就是每次选择PageRank值较大页面中的链接来访问。另一个利用Web结构评价链接价值的方法是HITS方法,它通过计算每个已访问页面的Authority权重和Hub权重,来决定链接的访问顺序。 (3) 基于增强学习的爬行策略: Rennie和McCallum将增强学习引入聚焦爬虫,利用贝叶斯分类器,根据整个网页文本和链接文本对超链接进行分类,为每个链接计算出重要性,从而决定链接的访问顺序。 (4) 基于语境图的爬行策略: Diligenti等人提出通过建立语境图(Context Graphs)学习网页之间的相关度,训练一个机器学习系统,通过该系统可计算当前页面到相关Web页面的距离,距离越近的页面中的链接优先访问。 3. 增量式网络爬虫 增量式网络爬虫是指对已下载网页采取增量式更新和只爬行新产生的或者已经发生变化网页的爬虫,它能够在一定程度上保证所爬行的页面是尽可能新的页面。和周期性爬行和刷新页面的网络爬虫相比,增量式爬虫只会在需要的时候爬行新产生或发生更新的页面,并不重新下载没有发生变化的页面,可有效减少数据下载量,及时更新已爬行的网页,减小时间和空间上的耗费,但是增加了爬行算法的复杂度和实现难度。增量式网络爬虫的体系结构包含爬行模块、排序模块、更新模块、本地页面集、待爬行URL集以及本地页面URL集。 增量式爬虫有两个目标: 保持本地页面集中存储的页面为最新页面和提高本地页面集中页面的质量。为实现第一个目标,增量式爬虫需要通过重新访问网页来更新本地页面集中页面内容,常用的方法有以下几种。 (1) 统一更新法: 爬虫以相同的频率访问所有网页,不考虑网页的改变频率。 (2) 个体更新法: 爬虫根据个体网页的改变频率来重新访问各页面。 (3) 基于分类的更新法: 爬虫根据网页改变频率将其分为更新较快网页子集和更新较慢网页子集两类,然后以不同的频率访问这两类网页。 为实现第二个目标,增量式爬虫需要对网页的重要性排序,常用的策略有广度优先策略、PageRank优先策略等。IBM开发的WebFountain是一个功能强大的增量式网络爬虫,它采用一个优化模型控制爬行过程,并没有对页面变化过程做任何统计假设,而是采用一种自适应的方法根据先前爬行周期里爬行结果和网页实际变化速度对页面更新频率进行调整。北京大学的天网增量爬行系统旨在爬行国内Web,将网页分为变化网页和新网页两类,分别采用不同爬行策略。为缓解对大量网页变化历史维护导致的性能瓶颈,它根据网页变化时间局部性规律,在短时期内直接爬行多次变化的网页,为尽快获取新网页,它利用索引型网页跟踪新出现的网页。 4. 深层网络爬虫 Web页面按存在方式可以分为表层网页和深层网页。表层网页是指传统搜索引擎可以索引的页面,以超链接可以到达的静态网页为主构成的Web页面。深层网页是那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的Web页面,例如那些用户注册后内容才可见的网页就属于深层网页。BrightPlanet公司的统计表明,深层网页蕴含的信息量是表层网页的500倍,并且数量每年仍在飞快地增长,是互联网上最大、发展最快的新型信息资源。所以研究深层网络是必需的而且意义深远。 深层网络爬虫体系结构包含6个基本功能模块(爬行控制器、解析器、表单分析器、表单处理器、响应分析器、LVS控制器)和两个爬虫内部数据结构(URL列表、LVS表)。其中,LVS(Label Value Set)表示标签/数值集合,用来表示填充表单的数据源。 深层网络爬虫爬行过程中最重要的部分就是表单填写,包含以下两种类型。 (1) 基于领域知识的表单填写: 此方法一般会维持一个本体库,通过语义分析来选取合适的关键词填写表单。Yiyao Lu等人提出一种获取Form表单信息的多注解方法,将数据表单按语义分配到各个组中,对每组从多方面注解,结合各种注解结果来预测一个最终的注解标签; 郑冬冬等人利用一个预定义的领域本体知识库来识别深层页面内容,同时利用一些来自Web站点导航模式来识别自动填写表单时所需进行的路径导航。 (2) 基于网页结构分析的表单填写: 此方法一般无领域知识或仅有有限的领域知识,将网页表单表示成DOM树,从中提取表单各字段值。Desouky等人提出一种LEHW方法,该方法将HTML网页表示为DOM树形式,将表单区分为单属性表单和多属性表单,分别进行处理; 孙彬等人提出一种基于XQuery的搜索系统,它能够模拟表单和特殊页面标记切换,把网页关键字切换信息描述为三元组单元,按照一定规则排除无效表单,将Web文档构造成DOM树,利用XQuery将文字属性映射到表单字段。Raghavan等人提出的HIWE系统中,爬行管理器负责管理整个爬行过程,分析下载的页面,将包含表单的页面提交表单处理器处理,表单处理器先从页面中提取表单,从预先准备好的数据集中选择数据自动填充并提交表单,由爬行控制器下载相应的结果页面。 3.1.2爬虫的工作流程 一个通用的网络爬虫的基本架构如图31所示。 图31网络爬虫的基本架构和工作流程 从图31可以看出,网络爬虫工作时,首先根据种子网页的URL,形成初始的待爬取的URL集合,然后依次读取并从互联网上下载、保存、分析并获取该网页中新的URL链接。对于新的URL,根据深度、宽度和最佳优先等不同策略,放入到待爬取的URL集合。如果是基于相似度的最佳定向策略,此时还需要考虑相似度的衡量。对于已经处理完毕的网页,将其内容存入数据库作为镜像缓存。而其URL地址则放入已爬取的集合,以避免重复。需要注意的是,在很多应用场景下,网页爬取仅执行一次是不够的,需要定期更新其内容。因此已获取的集合需要定期更新,或者是针对不同类型的网页设置更为精细的更新计划。例如,像时事新闻这种网站,消息的及时性要求很高,因此可以加快对该类型站点的爬取频率,缩短更新的周期。随着整个流程不断的循环和往复,互联网上的数据会不断地收集和存储。由于互联网数据规模庞大得难以想象,所以爬虫通常需要不停地行走,以发现新的大陆,探索未知的信息世界。 3.2免费的网络舆情采集利器——八爪鱼数据采集器 目前,世界上已经成型的爬虫软件多达上百种。这些爬虫使用Java、Python、C++、C#、PHP等语言开发。例如,使用Java语言开发的典型爬虫有Arachnid、crawlzilla、ExCrawler等; 使用Python开发的常用爬虫有QuickRecon、Scrapy等; 使用C++开发的常用爬虫有larbin、ICDL Crawler、Methabot等; 使用C#开发的爬虫有NWebCrawler、Sinawler等; 使用PHP开发的爬虫有OpenWebSpider、PhpDig等。这些爬虫工具具有良好的设计,能够为数据分析等工作爬取到很多有价值的数据。 对于舆情分析来说,利用爬虫工具实时采集相关媒体的数据,很容易获取到更加全面、多样的舆情数据,保证了获取民意的准确性,能够帮助舆情监测分析人员第一时间掌握第一手舆情资料,追踪传播源头,捕捉舆论拐点,分析舆情变化趋势,做到对舆情事件的“先知先觉”。 本节介绍一款免费的网络舆情采集利器——八爪鱼数据采集器。 3.2.1简介 八爪鱼采集器是深圳视界信息技术有限公司研发的一款业界领先的网页采集软件,具有使用简单、功能强大等诸多优点。该系统以完全自主研发的分布式云计算平台为核心,可以在很短的时间内,轻松地从各种不同的网站或者网页获取大量的规范化数据,帮助任何需要从网页获取信息的客户实现数据自动化采集、编辑、规范化,摆脱对人工搜索及收集数据的依赖,从而降低获取信息的成本,提高效率。 简单来讲,使用八爪鱼可以非常容易地从任何网页精确采集所需要的数据,生成自定义的、规整的数据格式。八爪鱼数据采集系统能做的包括但并不局限于以下内容。 (1) 金融数据,如季报、年报、财务报告,包括每日最新净值自动采集; (2) 各大新闻门户网站实时监控,自动更新及上传最新发布的新闻; (3) 监控竞争对手最新信息,包括商品价格及库存; (4) 监控各大社交网站、博客,自动抓取企业产品的相关评论; (5) 收集最新最全的职场招聘信息; (6) 监控各大地产相关网站,采集新房二手房最新行情; (7) 采集各大汽车网站具体的新车二手车信息; (8) 发现和收集潜在客户信息; (9) 采集行业网站的产品目录及产品信息; (10) 在各大电商平台之间同步商品信息,做到在一个平台发布,其他平台自动更新; (11) 采集各微信平台发布的文章。 3.2.2下载、安装、启动与注册账号 八爪鱼数据采集器是免费的,并且免费版本没有任何功能限制,下载地址为http://www.bazhuayu.com/download。该软件需要.NET 3.5 SP1的支持,Windows 7、Windows 8、Windows 10已经内置支持,无须下载,但XP系统需要安装,软件会在安装时自动检测是否安装了.NET 3.5 SP1,如果没有安装则会自动从微软官方在线安装,然后再安装八爪鱼采集器。 图32八爪鱼安装文件 八爪鱼数据采集器的安装文件是一个文件名为“八爪鱼采集器V6.0版安装包.zip”的压缩文件,安装时先解压缩该文件,将看到如图32所示安装文件,在安装前请先仔细阅读“安装前必读.txt”,然后双击setup.exe,一般情况下,选择默认设置,一直单击“下一步”按钮,即可完成安装。 完成安装后,可以在桌面或者“开始”菜单中找到“八爪鱼采集器”的快捷方式,双击即可启动八爪鱼采集器。 第一次打开八爪鱼采集器,会打开登录界面,如果还没有注册“视界”通行证,那么就需要单击登录界面上的“免费注册”链接,完成账号注册。注册过程中,请注意必须提供真实正确的Email地址,这个邮箱将用于接收账户激活邮件,也是忘记密码时用来找回密码的唯一途径。注册完成后,登录邮箱就可以收到一份激活邮件,如果没有看到,请检查垃圾邮箱,有的邮箱有可能会阻止激活邮件的接收。如果确信没有收到激活邮件,请打开视界科技网站www.skieer.com,登录刚注册的账号,登录后,单击自己的名字转入用户中心,可以重发激活邮件。单击激活邮件中的链接,将会自动激活账号。这时候,就可以使用该账号登录八爪鱼采集器了。 3.2.3八爪鱼采集器的使用 1. 相关术语 使用八爪鱼数据采集器首先需要了解下列术语。 1) 规则 规则是八爪鱼用来配置程序按照人工操作流程记录的一条程序规则,当软件配置好规则的时候,则可以按照所配置的规则进行数据的采集,代替人工步骤。 2) 云加速 八爪鱼系统是通过分布式集群部署的方式,每个集群由数量庞大的云节点组成,单个节点的采集能力相当于一台PC的采集能力,通过八爪鱼后台的版本资源分配策略,分配到多少个云节点资源就享有几倍的加速,版本高的账户有更高的加速倍数。 3) 云优先 如果是多用户共享一个云集群的资源,一个集群的规模大小是有上限的,如果同一时间提交云集群任务过多,造成资源拥堵,那么根据用户账号版本的不同,八爪鱼系统会进行默认排序,版本高的,优先级高,将有优先获得资源分配的权益。暂时未分配到资源的任务将进行排队轮候。 4) 单机采集 单机采集是指不占用云集群的资源,只能通过八爪鱼客户端所在的PC进行工作,在工作期间,需要计算机和软件都处于运行状态,电源中断或者网络中断都会导致数据采集任务的中断。 5) 云采集 云采集是指通过使用八爪鱼提供的服务器集群进行工作,该集群是7×24小时的工作状态,在客户端将任务设置完成并提交到云服务执行进行云采集之后,可以关闭软件,关闭计算机进行脱机采集,真正实现无人值守。除此之外,云采集通过云服务器集群的分布式部署方式,多节点同时进行作业,可以提高采集效率,并且可以高效地避开各种网站的IP封锁策略。 6) 定时采集 定时采集指的是用户在设定好八爪鱼的采集规则时,定时地启动采集程序。 7) URL循环 URL循环是指设定八爪鱼在指定的URL网址里面循环采集。 8) XPATH XPATH是一种路径查询语言,简单地说就是利用一个路径表达式找到我们需要的数据的位置。XPATH专用于XML中沿着路径查找数据。八爪鱼采集器内部有一套针对HTML的XPATH引擎,使得直接用XPATH就能精准地查找定位网页里面的数据。 2. 基本采集流程 使用八爪鱼采集数据通常遵循如下几个基本流程。 1) 打开网页 该步骤根据设定的网址打开网页,一般为网页采集流程的第一个步骤,用来打开指定的网站或者网页。如果有多个类似的网址需要分别打开执行同样的采集流程,则应该放置在循环的内部,并作为第一个子步骤。 2) 单击元素 该步骤对网页上指定的元素执行鼠标左键单击动作,比如单击按钮、单击超链接等。 3) 输入文本 本步骤在输入框中输入指定的文本,例如输入搜索关键词、输入账号等。将设定的文本输入到网页的某个输入框中,如使用搜索引擎时输入关键字。 4) 提取数据 本步骤根据提取数据模板的配置,从网页中提取数据,同时还可配置为提取网址、网页标题,或者生成一些数据如当前时间等。 5) 循环 本步骤用来重复执行一系列步骤,根据配置不同,支持多种模式。 (1) 循环固定单个元素,例如,循环单击每一页中的“下一页”按钮; (2) 循环固定列表,例如,循环处理一个页面中指定的多个元素; (3) 循环可变列表,当需要循环处理多个页面,但是每个页面上要处理的元素数量不固定时使用; (4) 循环网址列表,主要用来循环打开一批指定网址的网页,然后执行同样的处理步骤。 3. 常用采集模式 针对初级用户和进阶用户,八爪鱼分别提供向导模式和高级模式。 1) 向导模式 向导模式适用于新手初级用户。该模式下无须配置规则,只需按照向导提示输入相应的信息或进行相应的操作,便可以实现简单的数据采集功能。目前仅适用于以下场景。 (1) 单网页采集: 采集一页简单网页信息。例如,获取某篇新闻的标题、时间、作者、正文等内容。 (2) 列表或表格采集: 采集一页简单网页的列表或表格信息,包括一列或多列,可以循环翻页。例如,翻页循环获取电商网站列表每一个商品信息。 (3) 列表及详情采集: 采集一页简单网页的列表信息及每一项的详情信息,可循环翻页。例如,翻页循环获取电商网站列表每个商品信息,并进入商品页获取详细内容信息。 (4) URL列表采集(多个URL共用同一套规则): 采集多页同类型简单网页信息,每一页适用相同规则,提取到的数据汇总到同一张表。例如,无翻页连续ID内容页信息提取。 如图33所示,对于任何类型的采集,如果不熟悉操作过程,都可以单击“开始学习”按钮,八爪鱼为初级用户提供了很好的学习向导,按照向导提示步骤操作即可实现数据采集。 图33八爪鱼采集器“向导模式”界面 2) 高级模式 高级模式适用于进阶用户。该模式需自行配置规则,兼容全网98%以上网页数据采集。 使用高级模式需要使用流程设计器设计工作流程,流程设计的左边是一系列可用的图标,采用拖曳的方式将需要的图标拖到白色面板上即可,如图34所示。 图34八爪鱼采集器“高级模式”工作流程设计 想熟练并灵活使用高级模式的用户也可以单击图35中右下角的“教程>>”进行学习。 图35八爪鱼采集器“高级模式”界面 高级模式主要是用来配置一些采集规则,事实上八爪鱼已经给我们提供了大量的规则,直接下载使用即可。如图36所示,单击“更多>>”还可以打开规则市场,搜索更多的八爪鱼规则。 图36八爪鱼采集规则 本书中进行舆情分析使用的数据大都是使用八爪鱼采集的,具体的采集过程将在相关章节中介绍,此处不再给出采集示例。 作为数据分析的利器,与其它流行的统计分析软件(如Excel、Matlab、SAS、SPSS等)相比,R语言的优势主要体现在:开源免费、易于扩展、数据包丰富、可视化功能强大、可运行于多种平台。 本书力求简明扼要、提供干货,以最浅显的语言、详尽的R语言实现代码向读者循序渐进地展现网络舆情分析的完整过程。