APP下载

基于增量式爬虫技术的新闻分析系统设计

2023-06-27王龙霄沈丽民

现代计算机 2023年9期
关键词:爬虫使用者网页

王龙霄,李 健,沈丽民

(战略支援部队信息工程大学洛阳校区,洛阳 471003)

0 引言

随着互联网媒体的发展,新闻行业迈向互联网时代,人们可以在新闻网站阅览热点信息,新闻网站也是信息获取的重要途经。新闻信息具有时效性的特点,而且伴随着大数据时代的到来,新闻信息变得越来越多,越来越复杂,用人力将所有信息逐一分析不仅是对人力资源的巨大浪费,而且实施的过程困难重重。许多信息由于来不及整理、汇总、分析,使得信息的时效性价值大打折扣。因此,亟需设计一套新闻分析系统对时事新闻进行获取和分析。

针对上述提到的问题,本文建立了基于网络爬虫技术和自然语言处理技术的新闻获取分析系统。系统使用网络爬虫技术抓取新闻网站的全部信息,将信息存储在数据库中,并在存储的过程中对信息进行语音分析与翻译,提取关键词、关键句等,使用者可使用系统内检索工具对所需信息进行模糊搜索,以方便给予使用者掌握社会、国际热点及舆情动向。

以美国有线电视新闻网(CNN)为例设计新闻获取分析系统。系统分为3 个模块,爬虫模块、自然语言处理模块和系统可视化与交互模块。系统总体架构如图1所示。

图1 整体架构

1 爬虫模块

1.1 基于多线程的网络爬虫设计

1.1.1 URL管理功能

URL 管理的设计思路是将URL 存储在两个.txt文本中,其中一个文本内储存待获取的新闻信息URL,另一个文本内储存已爬取新闻信息的URL。利用.txt 文本方便增加与删除的特点,实现全部新闻信息URL 的动态管理,也为后续增量式爬虫设计提供方便。除使用.txt文本外,也可使用csv文件对URL进行管理。可以将未爬取的URL 标记为0,已爬取的URL 标记为1。两种方法在均不涉及数据库的方式下实现了URL管理功能,避免了系统过于复杂。

1.1.2 网页下载与解析

首先给定新闻网站(美国有线电视新闻网)URL,并对该网站架构进行分析。网络爬虫总体分为三次爬取。第一次爬取为爬取网站各个栏目的URL。目前,Python 主要的网页数据抓取方法有正则表达式匹配方法、BeautifulSoup 方法、LXML 方法[1]。网页下载过程使用Python 第三方库request 完成,网页解析过程使用BeautifulSoup 第三方库或LXML 第三方库进行网页的结构化解析。经过比较发现,使用LXML 第三方库比使用BeautifulSoup 第三方库效率高。效率对比如表1所示。经过下载解析后,得到各个栏目的URL,将URL 存放在列表之中。第二次爬取为按照获取的各个栏目的URL 获取新闻详情页的URL。

表1 效率对比

在第二次爬取过程中,新闻详情页URL是利用ajax技术或js技术动态请求,传统的爬取方式无法爬取新闻详情页的URL。可以使用两种方式进行爬取。第一种为分析JS源码,完成爬取。首先在网页控制台中选择XHR异步加载数据,抓取网络数据包,得到Json文件的URL地址,查询参数,解析js 源码完成爬取。第二种为使用selenium 第三方库进行爬取。下载与浏览器匹配的webdriver驱动,计算机自动模拟浏览器进行网页的下载与解析。将得到的新闻详情页URL置于URL管理库中,以方便后续的爬取。

第三次爬取过程为爬取新闻详细的内容,包括题目、作者、时间、内容。系统使用threading 第三方库进行多线程的爬取,最大程度地节约时间。可以建立线程池,将爬取函数置于线程池中,既节约时间,也节省计算机资源。爬取的新闻信息写入.txt文本文件中,文件名称为新闻标题,并在写入文件的同时进行自然语言处理模块的工作。系统爬取新闻信息部分结果如图2所示。

图2 爬取部分结果

1.2 增量式爬虫设计

在使用基于广度的通用爬虫获取新闻网站全部的新闻信息后,针对网站新发布的新闻信息,系统增添了增量式爬虫设计,以便在后续系统维护和信息更新中尽可能地爬取新的新闻信息。增量式爬虫的关键在于新闻详情页URL的去重,可使用以hash 函数为基础的布隆过滤器进行URL的去重操作。

布隆过滤器由元素位图与k个hash 函数构成,当新的元素至于位图中,k个hash函数将此元素映射到k个元素位图上的点,标记为1。在检索过程中,通过k个hash 函数推测元素位图中k个点标记是否均为1。布隆过滤器避免了单独的hash 函数可能将两个及以上的元素标记为同一地址,产生hash碰撞。

2 自然语言处理模块

自然语言处理模块实现了系统的分析功能,其表现为提取关键词与关键句,并使用API 接口对新闻信息全文及提取的关键词句进行翻译。系统采取基于词图模型的TextRank 无监督算法进行关键词句的提取。无监督相比有监督算法优点在于有监督算法在训练过程中的成本过高,无监督算法利用某些方法进行词的提取,不需要人工手动进行训练。

2.1 TextRank算法

TextRank 算法是基于词图的关键词抽取排序及文章摘要算法,由PageRank 网页重要性排序算法衍进而来。TextRank 算法将整篇文章视作有向图,将文章内每个句子视作图内节点,将两个句子的相似程度视作转移概率。在算法遍历运算过程中形成了一阶马尔科夫链,形成一个平稳分布,两个句子之间的相似性分值储存在矩阵之中,在经过排序后选取排名较前的若干句子形成摘要。在抽取关键词时,首先对文本进行分词,保留名词、动词、形容词、副词等实义词,将实义词作为候选关键词,即:

其中:T为文本全体信息,Si为文本内所有句子,tij表示句子内所有分词。

其次,构建词图关系:

其中:V为节点集合,采用共现关系构造任意两个节点之间的边,共现最多K个单词,K等于2。根据公式迭代各个节点的权重至收敛,即:

其中:WS(Vi)代表第i句的权重;d为阻尼系数,为0.85;Vi,Vj为任意两节点,Wji表示两节点边的权重[2];WS(Vj)代表迭代之前句子j的权重;out(Vj)为指向节点的结合,根据权重排名选取m个词作为关键词。

系统使用Textrank4zh 第三方库内Text-Rank4Keyword 与TextRank4Sentece 模块进行关键词与关键句的抽取,选定关键词数量为5,关键句数量为3。系统对某文本处理结果如图3所示。

图3 文本自然语言处理结果

2.2 翻译API接口

系统采用百度翻译API 接口,百度翻译提供了中英翻译与小语种翻译的服务,通过注册百度开放平台得到的APIID 与Key,实现文档对百度翻译引擎的请求。百度翻译API 工作流程分为两步:第一步为使用HTTP 协议get 或post请求方式调用API 接口,第二步为翻译引擎工作根据设置的参数返回数据并调整格式。利用百度开放平台中给出的代码Demo,可极为方便地实现API接口的设置。

3 系统可视化与交互模块

3.1 Tornado框架

Tornado 是基于Python 的轻量级Web 框架,为异步非阻塞IO式处理方式,较Django框架具有少而精、性能高的特点。系统采用Tornado框架作为使用者与服务器的交互平台,由四个部分组成:

(1)IOLoop 模块是Tornado 框架的核心模块,Tornado 利用此模块开启循环监听并处理全部I/O事项。

(2)Handler 模块是实现框架不同页面功能的模块,一个页面功能一般对应一个handler类。系统有5个交互功能,登录页面、全部新闻信息标题缩略页面、模糊检索功能、新闻信息详情、自然语言处理详情。在编写Handler 类时,可使用第三方的模板或JavaScript 语言进行网络页面的编写制作。

(3)Application 模块表示Tornado 框架后端服务实例,可利用实例进行端口的接听等。

(4)路由映射模块通过指定URL 规则与Handler 类关联。使用者请求数据时,根据访问的路由映射查询找到相应功能的Handler 类处理请求[3]。

Tornado框架Web结构如图4所示。

图4 Tornado框架结构

3.2 可视化交互界面

使用Javascript 语言制作网页作为系统的可视化交互平台,实现使用者对数据库内全部信息的检索功能。系统响应过程为使用者向系统发出检索请求,检索数据提交数据库以Json 格式返回,页面对数据进行处理后显示给使用者[4]。系统页面如图5所示。

图5 系统页面展示

4 结语

本文建立了对美国有限电视新闻网的新闻信息爬取与分析的系统,分析了有关爬虫过程、自然语言处理过程及交互过程中细节的实现。爬虫过程考虑了新闻网站时间跨度问题,尽可能全面地获取新闻网站的数据,系统通过分析功能对单个新闻文本信息进行关键词句的抽取并翻译,方便使用者快速掌握国际热点信息,也可用于进一步的文本数据挖掘。

猜你喜欢

爬虫使用者网页
利用网络爬虫技术验证房地产灰犀牛之说
基于Python的网络爬虫和反爬虫技术研究
基于CSS的网页导航栏的设计
新型拼插休闲椅,让人与人的距离更近
利用爬虫技术的Geo-Gnutel la VANET流量采集
基于URL和网页类型的网页信息采集研究
大数据环境下基于python的网络爬虫技术
抓拍神器
网页制作在英语教学中的应用
10个必知的网页设计术语