新闻数据爬取处理方法、装置、计算机设备和存储介质与流程

文档序号:15144383发布日期:2018-08-10 20:16阅读:335来源:国知局

本申请涉及计算机技术领域,特别是涉及一种新闻数据爬取处理方法、装置、计算机设备和存储介质。



背景技术:

网络爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,可以自动进行网页下载、解析、并存储解析得到的数据。传统的基于网络爬虫处理方式中,对于每一个新闻网站,均需要单独配置一套规则爬取相应的新闻数据。当需爬取多个新闻网站时,则需相应地配置多套规则,开发和维护成本高。如何提供一种适用于所有新闻网站的通用型的新闻数据爬取处理方法是目前需要解决的一个技术问题。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种适用于所有新闻网站的通用型的新闻数据爬取处理方法、装置、计算机设备和存储介质。

一种新闻数据爬取处理方法,所述方法包括:

获取多个新闻网站的新闻列表链接,将所述新闻列表链接存入对应的列表链接队列;

在所述列表链接队列中读取所述新闻列表链接,根据所述新闻列表链接向对应的网站服务器发送列表链接源码获取请求;所述列表链接源码获取请求用于所述网站服务器返回与所述新闻列表链接对应的列表链接源码;

对所述新闻列表链接对应的列表链接源码进行解析,提取多个新闻链接;

根据新闻链接向所述网站服务器发送新闻链接源码获取请求;所述新闻链接源码获取请求用于所述网站服务器返回与所述新闻链接对应的新闻链接源码;

解析新闻链接源码,获取新闻数据。

在其中一个实施例中,所述对所述新闻列表链接对应的列表链接源码进行解析,提取多个新闻链接的步骤包括:提取所述列表链接源码中的多个详情页面链接;根据预设特征对提取的多个详情页面链接进行分类,得到多个链接类别;对多个链接类别的链接数目进行统计,获得链接数目最多的链接类别;将所述链接数目最多的链接类别记录为新闻链接类别,获取所述新闻链接类别中的新闻链接。

在其中一个实施例中,所述预设特征包括链接的链接深度和链接文本长度;所述根据预设特征对提取的多个详情页面链接进行分类,得到多个链接类别的步骤包括:计算多个详情页面链接的链接深度值和链接文本长度值;根据多个详情页面链接的链接深度值和链接文本长度值,通过预设的数学模型计算多个详情页面链接的特征值;根据多个详情页面链接的特征值对多个详情页面链接进行分类,得到多个链接类别。

在其中一个实施例中,所述新闻数据包括新闻正文;所述解析新闻链接源码,获取新闻数据的步骤包括:根据所述新闻链接源码生成文档对象模型树;所述文档对象模型树包括多个节点;遍历所述文档对象模型树的节点,获取节点的特征信息;根据节点的特征信息对节点分配分值;根据节点的分值获取新闻正文节点;获取所述新闻正文节点内的新闻正文。

在其中一个实施例中,所述节点的特征信息包括节点与文本属性的相关性和节点下的文本长度,所述根据节点的特征信息对节点分配分值的步骤包括:采用第一正则表达式和第二正则表达式匹配所述节点;将所述第一正则表达式与文本属性的相关性标记为第一相关性,以及将所述第二正则表达式与文本属性的相关性标记为第二相关性;所述第一相关性与所述第二相关性相反;当所述节点符合第一正则表达式时,将所述节点与文本属性的相关性记录为第一相关性,以及当所述节点符合第二正则表达式时,将所述节点与文本属性的相关性记录为第二相关性;根据所述节点与文本属性的相关性对所述节点分配第一分值;其中,对与文本属性正相关的节点分配比与文本属性负相关的节点更高的分值;计算节点下的文本长度,根据文本长度对所述节点分配第二分值。

在其中一个实施例中,所述根据节点的分值获取新闻正文节点的步骤包括:根据多个节点的第一分值和第二分值,通过预设的分值统计公式,计算得到与多个节点对应的多个总分值;将总分值最大的节点记录为新闻正文节点。

一种新闻数据爬取处理装置,所述装置包括:

获取模块,用于获取多个新闻网站的新闻列表链接,将所述新闻列表链接存入对应的列表链接队列;

请求模块,用于在所述列表链接队列中读取所述新闻列表链接,根据所述新闻列表链接向对应的网站服务器发送列表链接源码获取请求;所述列表链接源码获取请求用于所述网站服务器返回与所述新闻列表链接对应的列表链接源码;

解析模块,用于对所述新闻列表链接对应的列表链接源码进行解析,提取多个新闻链接;

所述请求模块还用于根据新闻链接向所述网站服务器发送新闻链接源码获取请求;所述新闻链接源码获取请求用于所述网站服务器返回与所述新闻链接对应的新闻链接源码;

所述解析模块还用于解析新闻链接源码,获取新闻数据。

一种计算机设备,包括存储器、处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:获取多个新闻网站的新闻列表链接,将所述新闻列表链接存入对应的列表链接队列;在所述列表链接队列中读取所述新闻列表链接,根据所述新闻列表链接向对应的网站服务器发送列表链接源码获取请求;所述列表链接源码获取请求用于所述网站服务器返回与所述新闻列表链接对应的列表链接源码;对所述新闻列表链接对应的列表链接源码进行解析,提取多个新闻链接;根据新闻链接向所述网站服务器发送新闻链接源码获取请求;所述新闻链接源码获取请求用于所述网站服务器返回与所述新闻链接对应的新闻链接源码;解析新闻链接源码,获取新闻数据。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:获取多个新闻网站的新闻列表链接,将所述新闻列表链接存入对应的列表链接队列;在所述列表链接队列中读取所述新闻列表链接,根据所述新闻列表链接向对应的网站服务器发送列表链接源码获取请求;所述列表链接源码获取请求用于所述网站服务器返回与所述新闻列表链接对应的列表链接源码;对所述新闻列表链接对应的列表链接源码进行解析,提取多个新闻链接;根据新闻链接向所述网站服务器发送新闻链接源码获取请求;所述新闻链接源码获取请求用于所述网站服务器返回与所述新闻链接对应的新闻链接源码;解析新闻链接源码,获取新闻数据。

上述新闻数据爬取处理方法、装置、计算机设备和存储介质,通过获取多个新闻网站的新闻列表链接,根据新闻列表链接获取列表链接源码,从列表链接源码中提取多个新闻链接,根据新闻链接获取新闻链接源码,解析新闻链接源码获取新闻数据,可以无视新闻网站的页面结构类型,从列表链接源码以及新闻链接源码中直接获取需求的新闻数据,适用于所有页面结构类型的新闻网站,由此实现了通过一种通用型的爬取方式即可在所有新闻网站中爬取到用户所需的新闻数据。

附图说明

图1为一个实施例中新闻数据爬取处理方法的应用环境图;

图2为一个实施例中新闻数据爬取处理方法的流程示意图;

图3为一个实施例中提取的多个详情页面链接的示意图;

图4为一个实施例中新闻数据爬取处理装置的结构框图;

图5为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请提供的新闻数据爬取处理方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与多个网站服务器104通过网络进行通信。网站服务器104是指在互联网数据中心中存放新闻网站的服务器。多个网站服务器104对应的新闻网站可以是包括多种页面结构的新闻网站。网站服务器104对应的新闻网站包括多个新闻列表页面和多个新闻页面,新闻列表页面对应有新闻列表链接,新闻页面对应有新闻链接。终端102根据新闻列表链接向对应的网站服务器104发送列表链接源码获取请求,根据新闻链接向网站服务器104发送新闻链接源码获取请求。网站服务器104响应于列表链接源码获取请求向终端102返回与新闻列表链接对应的列表链接源码。网站服务器104响应于新闻链接源码获取请求向终端102返回与新闻链接对应的新闻链接源码。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机和平板电脑,网站服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

在一个实施例中,如图2所示,提供了一种新闻数据爬取处理方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:

步骤202,获取多个新闻网站的新闻列表链接,将新闻列表链接存入对应的列表链接队列。

新闻列表链接指向新闻列表页面,终端向网站服务器请求新闻列表链接时,网站服务器向终端返回新闻列表页面。一个新闻列表页面内包含多个新闻链接,其中,新闻链接通常是对一段与新闻相关的短文本设置的超链接,与新闻相关的短文本可以是新闻简介,还可以是新闻标题等。新闻链接指向新闻页面,终端向网站服务器请求新闻链接时,网站服务器向终端返回新闻页面。新闻页面内包含有新闻数据。

终端获取一个或多个新闻列表链接。其中,新闻列表链接的获取方式包括但不限于是用户指定具体的新闻列表链接。用户可以通过终端的输入设备向终端发送操作指令。具体地,终端接收输入设备发出的访问新闻网站的访问指令,根据该访问指令访问对应的新闻网站,终端接收输入设备发出的获取新闻列表链接的获取指令,其中,获取指定的获取对象为终端访问的新闻网站内的新闻列表链接,终端根据获取指令执行对应的获取操作,获取新闻列表链接。例如,获取指令可以是复制指令和粘贴指令,获取操作则为复制和粘贴。进一步地,终端将新闻列表链接存入对应的列表链接队列。其中,多个新闻列表链接可以对应有多个新闻网站。多个新闻网站可以是包括多种页面结构的新闻网站。多个新闻列表链接存入列表链接队列的方式包括但不限于以用户指定的顺序存储。列表链接队列的存取策略包括但不限于先进先出策略。列表链接队列存储于存储器内。存储器包括但不限于终端的寄存器、高速缓存、内存和外部存储设备等。

由于用户可能会指定多个相同的新闻列表链接,在其中一个实施例中,终端还对列表链接队列中存储的新闻列表链接进行去重处理。具体的,终端采用布隆过滤器对列表链接队列中存储的新闻列表链接进行去重处理。

步骤204,在列表链接队列中读取新闻列表链接,根据新闻列表链接向对应的网站服务器发送列表链接源码获取请求;列表链接源码获取请求用于网站服务器返回与新闻列表链接对应的列表链接源码。

列表链接源码是指新闻列表链接指向的新闻列表页面的源代码。新闻列表页面的源代码存储于对应的网站服务器的服务器数据库内。新闻列表页面的源代码通常是超文本标记语言(hypertextmarkuplanguage,简称html)代码。html代码包括一个或多个html标签。html标签包括一个或多个属性。

本实施例中,以采用先进先出策略的列表链接队列为例进行说明。终端从列表链接队列中依序读取新闻列表链接。具体地,终端读取列表链接队列的队头,取出列表链接队列的队头中存储的新闻列表链接。

终端根据新闻列表链接访问对应的网站服务器,向网站服务器发送列表链接源码获取请求。其中,列表链接源码获取请求携带的信息包括但不限于新闻列表链接和列表链接源码的获取需求信息。列表链接源码获取请求可以是超文本传输协议(hypertexttransferprotocol,简称http)请求。网站服务器响应于列表链接源码获取请求,向终端返回与新闻列表链接对应的列表链接源码。具体地,网站服务器根据新闻列表链接,从存储该新闻列表链接的服务器数据库中获取列表链接源码,向终端返回列表链接源码。更具体地,网站服务器根据新闻列表链接查询服务器数据库,获取存储新闻列表链接对应的新闻列表页面的文件,向终端返回文件中存储的新闻列表页面的源码,即列表链接源码。

终端获取该新闻列表链接对应的源码后,继续从列表链接队列中取出下一个新闻列表链接,重复步骤204。由此可以获取列表链接队列中存储的所有新闻列表链接对应的列表链接源码,其中,列表链接队列中存储有多个新闻网站的新闻列表链接,从而可以获取多个新闻网站的列表链接源码。

步骤206,对新闻列表链接对应的列表链接源码进行解析,提取多个新闻链接。

新闻列表链接对应的新闻列表页面内包括多个详情页面链接。其中,多个详情页面链接包括多个新闻链接和多个其他类型链接。新闻链接可以是与新闻列表链接对应同一个新闻网站。新闻链接还可以与新闻列表链接对应不同的新闻网站,此种情况下,多个新闻链接可以是对应多个不同的新闻网站。其他类型链接通常包括广告链接和新闻网站介绍链接等。相应的,新闻列表页面对应的列表链接源码内包括多个链接标签。其中,链接标签是指用于定义链接的html标签。链接标签包括链接属性。链接属性用于在链接标签内指定链接。例如,链接标签可以是a标签,链接属性可以是href属性,则新闻链接标签可以是<ahref="http://www.xxx.com/yyy">新闻详情</a>。

终端提取列表链接源码中的多个详情页面链接,对提取的多个详情页面链接进行筛选,获取多个新闻链接。具体地,终端利用预设特征对多个详情页面链接进行筛选,提取出符合新闻链接特征的新闻链接。由于新闻链接与其他类型链接存在特征上的区别,例如链接对应的链接标签的文本长度,链接的新闻网站信息等。本实施例中,预设特征包括但不限于链接标签的文本长度和链接的新闻网站信息。其中,链接的新闻网站信息可以从链接中直接得知。

进一步地,终端将获取的新闻链接存入新闻链接队列。具体地,终端按照新闻链接在列表链接源码内的顺序依次存入新闻链接队列。其中,新闻链接队列的存取策略包括但不限于先进先出策略。新闻链接队列存储于存储器内。

终端从新闻链接队列中取出一个新闻链接,执行步骤208。具体地,终端读取新闻链接队列的队头,取出新闻链接队列的队头中存储的新闻链接,执行步骤208。

步骤208,根据新闻链接向网站服务器发送新闻链接源码获取请求;新闻链接源码获取请求用于网站服务器返回与新闻链接对应的新闻链接源码。

新闻链接源码是指新闻链接指向的新闻页面的源代码。新闻页面的源代码通常是html代码。终端根据该新闻链接访问对应的网站服务器,向网站服务器发送新闻链接源码获取请求。其中,新闻链接源码获取请求携带的信息包括但不限于新闻链接和新闻链接源码的获取需求信息。新闻链接源码获取请求可以是超文本传输协议(http)请求。

进一步地,网站服务器响应于新闻链接源码获取请求,向终端返回新闻链接对应的新闻链接源码。具体地,网站服务器根据新闻链接,从存储该新闻链接的服务器数据库中获取新闻链接源码,向终端返回新闻链接源码。更具体地,网站服务器根据新闻链接查询服务器数据库,获取存储新闻链接对应的新闻列表页面的文件夹,向终端返回文件夹中存储的新闻列表页面的源码,即新闻链接源码。

终端获取该新闻链接对应的新闻链接源码后,继续从新闻链接队列中取出一个新闻链接,重复步骤208。由此可以获取新闻链接队列中存储的所有新闻链接对应的新闻链接源码,从而可以获取多个新闻网站的所有新闻链接。

步骤210,解析新闻链接源码,获取新闻数据。

本实施例中,新闻数据是指用户需求的新闻详情信息,包括但不限于新闻正文、新闻标题、新闻作者、新闻发布时间以及新闻来源。通常一个新闻页面对应的新闻链接源码内包括有新闻数据和其他类型数据。其中,其他类型数据包括但不限于广告信息和新闻网站信息等。由于其他类型数据不是本实施例的方法需要获取的数据,需要将其从新闻链接源码内过滤掉。进一步地,终端对新闻链接源码进行过滤。具体地,终端删除新闻链接源码中的与新闻数据无关的数据。其中,与新闻数据无关的数据包括html脚本,例如script标签。进一步地,终端从新闻链接源码中提取出标题标签,从标题标签中提取新闻标题。其中,标题标签包括head标签和title标签。终端通过相应匹配正则表达式获取新闻作者、新闻发布时间以及新闻来源等的文本数据。终端可以采用内容分析(readability)算法提取新闻正文的文本数据。

进一步地,终端将提取的新闻数据存入终端的存储器中。具体地,终端自动将新闻数据存入对应的新闻数据文件夹中,新闻数据文件夹存储在终端的存储器内。进一步地,终端自动创建一个文件夹,将新闻数据存入文件夹中。终端可以针对每一个新闻链接创建一个文件夹,终端还可以是针对一个新闻列表链接创建一个文件夹。

本实施例中,终端通过获取多个新闻网站的新闻列表链接,根据新闻列表链接获取列表链接源码,从列表链接源码中提取多个新闻链接,根据新闻链接获取新闻链接源码,解析新闻链接源码获取新闻数据,可以无视新闻网站的页面结构类型,从列表链接源码以及新闻链接源码中直接获取需求的新闻数据,适用于所有页面结构类型的新闻网站,由此实现了通过一种通用型的爬取方式即可在所有新闻网站中爬取到用户所需的新闻数据。

在一个实施例中,对新闻列表链接对应的列表链接源码进行解析,提取多个新闻链接的步骤包括:提取列表链接源码中的多个详情页面链接;根据预设特征对提取的多个详情页面链接进行分类,得到多个链接类别;对多个链接类别的链接数目进行统计,获得链接数目最多的链接类别;将链接数目最多的链接类别记录为新闻链接类别,获取新闻链接类别中的新闻链接。

终端采用预设正则表达式,提取列表链接源码中的多个详情页面链接。其中,本实施例中采用的预设正则表达式包括一个或多个链接属性相关字符。链接属性相关字符包括但不限于是链接标签和链接属性,其中,链接标签是指用于定义链接的html标签,链接属性用于在链接标签内指定链接。例如,链接标签可以是<a>标签,链接属性可以是超文本引用(hypertextreference,简称href)属性,对应的预设正则表达式可以包括字符串a和href。具体地,终端采用预设正则表达式,匹配列表链接源码,获取列表链接源码中的多个详情页面链接。进一步地,预设正则表达式匹配列表链接源码的过程为,终端匹配预设正则表达式中的多个链接属性相关字符与列表链接源码,提取出列表链接源码中包含有任意一个链接属性相关字符的字符内容。进一步地,对于多个链接属性相关字符包括链接标签和链接属性的情况下,终端根据链接标签和链接属性匹配列表链接源码,从列表链接源码中提取所有的链接标签和链接属性。进一步地,终端从提取的多个链接标签和链接属性中提取多个详情页面链接。提取的多个详情页面链接如图3所示。

终端根据预设特征对提取的多个详情页面链接进行分类,得到多个链接类别。由于新闻列表页面内的多个链接类别中,新闻链接类别的链接数目是最多的,因此,终端可以确定链接数目最多的链接类别为新闻链接类别。进一步地,终端对多个链接类别的链接数目进行统计,获得链接数目最多的链接类别;将链接数目最多的链接类别记录为新闻链接类别,获取新闻链接类别中的新闻链接。例如图3所示,提取的多个详情页面链接中共有“网站主题”、“关于我们”、“新闻详情”、“相关推荐”和“广告”等五种链接类别,其中,“新闻详情”链接类别的链接数目为8,是所有链接类别中数目最多的,则终端将“新闻详情”链接类别记录为新闻链接类别,获取新闻链接。

本实施例中,终端通过提取列表链接源码中的多个详情页面链接,根据预设特征对提取的多个详情页面链接进行分类,得到多个链接类别,对多个链接类别的链接数目进行统计,获得链接数目最多的链接类别,将所述链接数目最多的链接类别记录为新闻链接类别,从而获取新闻链接类别中的新闻链接,使得提取新闻链接的过程更为简洁准确,提高效率高,误差小。

在一个实施例中,预设特征包括链接的链接深度和链接文本长度;根据预设特征对提取的多个详情页面链接进行分类,得到多个链接类别的步骤包括:计算多个详情页面链接的链接深度值和链接文本长度值;根据多个详情页面链接的链接深度值和链接文本长度值,通过预设的数学模型计算多个详情页面链接的特征值;根据多个详情页面链接的特征值对多个详情页面链接进行分类,得到多个链接类别。

本实施例中,预设的数学模型的自变量包括但不限于预设特征,预设的数学模型的因变量包括特征值。预设特征包括但不限于是链接深度和链接文本长度。其中,链接深度是指链接的层次度,例如对于链接“www.xxx.com/a1”,对应的链接深度为深度1,即链接深度值为1;对于链接“www.xxx.com/a1/a2”,对应的链接深度为深度2,即链接深度值为2;对于链接“www.xxx.com/a1/a2/…/an”,对应的链接深度为深度n,即链接深度值为n。在新闻列表页面中,多个详情页面链接具有相同的链接深度值,而其他类型链接的链接深度值没有固定相同的值。链接文本长度是指链接在列表链接源码内对应的链接标签中所含的链接文本的长度,例如对于“http://www.xxx.com/yyy”的链接,它在列表链接源码内对应的链接标签为<ahref="http://www.xxx.com/yyy">新闻详情</a>,则“新闻详情”为该链接的链接文本。新闻链接的链接文本通常是新闻的简介信息或是新闻的标题,它一般要透露新闻的重点信息,其长度在一个特定的范围内,而其他类型链接的链接文本长度则没有固定的规律。

终端根据多个详情页面链接计算多个详情页面链接的链接深度值。终端获取链接对应的链接标签,获取链接标签内的链接文本,计算得到链接文本长度值。进一步地,终端将计算得到的多个详情页面链接的链接深度值和链接文本长度值代入预设的数学模型,即将链接深度值和链接文本长度值分别赋值给对应的自变量,计算得到多个详情页面链接对应的多个特征值。进一步地,根据多个详情页面链接对应的多个特征值对多个详情页面链接进行分类,得到多个链接类别。具体地,终端根据多个预设阈值,将特征值落入同一预设阈值内的链接分为一个链接类别。

本实施例中,终端通过计算多个详情页面链接的链接深度值和链接文本长度值,根据链接深度值和链接文本长度值,采用预设的数学模型计算多个详情页面链接的特征值,根据多个详情页面链接的特征值将多个详情页面链接分类为多个链接类别,提高了对多个详情页面链接进行分类的准确性,从而进一步地提高了提取新闻链接的效率,降低了误差率。

在一个实施例中,新闻数据包括新闻正文;解析新闻链接源码,获取新闻数据的步骤包括:根据新闻链接源码生成文档对象模型树;文档对象模型树包括多个节点;遍历文档对象模型树的节点,获取节点的特征信息;根据节点的特征信息对节点分配分值;根据节点的分值获取新闻正文节点;获取新闻正文节点内的新闻正文。

终端根据新闻链接源码生成文档对象模型(documentobjectmodel,简称dom)树;dom树包括多个节点。dom树的节点对应新闻链接源码中的标签、标签属性以及标签的文本等。终端遍历dom树的节点,获取节点的特征信息。节点的特征信息包括但不限于节点与文本属性的相关性和节点下的文本长度。节点与文本属性的相关性包括与文本属性正相关和与文本属性负相关。节点下的文本长度为该节点的子节点含有的文本的长度。进一步地,终端根据节点的特征信息对节点分配分值。具体地,终端对与文本属性正相关的节点分配比与文本属性负相关的节点更高的分值,对文本长度更长的节点分配更高的分值。

由于新闻正文节点是与文本属性正相关的节点,新闻正文节点内包括新闻正文,新闻正文是以文本的形式存储,且新闻正文的文本长度比其他类型节点下的文本长度更长,因而新闻正文节点的分值比其他类型节点获得的分值更高。此外,一个新闻链接对应的新闻页面内一定只包含一篇新闻正文,则分值最高的节点一定是新闻正文节点,进一步地,终端获取分值最高的节点,该分值最高的节点即为新闻正文节点。进一步地,终端获取新闻正文节点内的新闻正文。终端可以采用正则表达式获取节点中的新闻正文。

本实施例中,终端通过根据新闻链接源码生成dom树,遍历dom树的节点,根据节点的特征信息对节点分配分值,从而根据分值获取新闻正文节点,从新闻正文节点中获取新闻正文,能够准确提取新闻链接源码内的新闻正文。

在一个实施例中,根据节点的特征信息对节点分配分值的步骤包括:采用第一正则表达式和第二正则表达式匹配节点;将第一正则表达式与文本属性的相关性标记为第一相关性,以及将第二正则表达式与文本属性的相关性标记为第二相关性;第一相关性与第二相关性相反;当节点符合第一正则表达式时,将节点与文本属性的相关性记录为第一相关性,以及当节点符合第二正则表达式时,将节点与文本属性的相关性记录为第二相关性;根据节点与文本属性的相关性对节点分配第一分值;其中,对与文本属性正相关的节点分配比与文本属性负相关的节点更高的分值;计算节点下的文本长度,根据文本长度对节点分配第二分值。

本实施例中,可以是第一正则表达式与文本属性正相关,第二正则表达式与文本属性负相关,对应的第一相关性则为正相关,第二相关性为负相关。还可以是第一正则表达式与文本属性负相关,第二正则表达式与文本属性正相关,对应的第一相关性则为负相关,第二相关性为正相关。本实施例以第一正则表达式与文本属性正相关,第二正则表达式与文本属性负相关为例进行说明。

具体地,第一正则表达式包括但不限于与文本属性正相关的标签对应的字符串,以及与文本属性正相关的标签属性对应的字符串。第二正则表达式包括但不限于多个与文本属性负相关的标签对应的字符串,以及多个与文本属性负相关的标签属性对应的字符串。html代码的任意一个标签属性至多对应一个正则表达式,即一个标签属性可以是对应第一正则表达式,或者是对应第二正则表达式,或者是与第一正则表达式以及第二正则表达式均不对应。例如,第一正则表达式可以包括字符串“body”、“content”、“entry”、“main”、“page”、“post”、“text”、“blog”、“story”、“haupt”、“arti(cle”、“kel)”、“instapaper_body”等,第二正则表达式可以包括字符串“user”、“com(ment”、“bx)”、“(^com-)”、“contact”、“foot”、“masthead”、“(me(dia”、“ta))”、“outbrain”、“promo”、“related”等。

终端采用第一正则表达式和第二正则表达式对dom树的节点进行匹配。具体地,当终端访问一个节点时,采用第一正则表达式和第二正则表达式对该节点进行匹配,当第一正则表达式或第二正则表达式中包含该节点时,得到该节点的匹配结果。当第一正则表达式中包含该节点时,匹配结果为符合第一正则表达式,当第二正则表达式中包含该节点时,匹配结果为符合第二正则表达式。

终端根据预设的打分策略对各节点分配第一分值。具体地,当节点符合第一正则表达式时,终端将节点与文本属性的相关性记录为第一相关性,以及当节点符合第二正则表达式时,终端将节点与文本属性的相关性记录为第二相关性。终端根据节点与文本属性的相关性对节点分配第一分值。具体地,终端对与文本属性正相关的节点分配比与文本属性负相关的节点更高的分值。更具体地,终端将所有节点的初始第一分值分配为0,对与文本属性正相关的节点分配的第一分值为正分值,对与文本属性负相关的节点分配的第一分值为负分值。进一步地,终端还根据预设的打分策略调整各节点的第一分值。具体地,当一个节点的子节点与文本属性正相关时,则对该节点的第一分值增加第一阈值;当一个节点的子节点与文本属性负相关时,则对该节点的第一分值增加第二阈值。其中,第一阈值为正数,第一阈值的绝对值小于分值为正的第一分值的绝对值;第二阈值为负数,第二阈值的绝对值小于分值为负的第一分值的绝对值。例如,终端对与文本属性正相关的节点分配的第一分值为a,对与文本属性负相关的节点分配的第一分值为b,其中,a大于0,b小于0;当某一个节点的子节点与文本属性正相关时,则终端对该子节点分配第一分值为a,终端对该节点的第一分值增加第一阈值a1,其中,a1大于0,a1的绝对值小于a,例如将该节点增加第一阈值前所分配的第一分值记录为x,根据预设的打分策略调整一次之后该节点的第一分值则变为x+a1;当某一个节点的子节点与文本属性负相关时,则终端对该子节点分配第一分值为b,终端对该节点的第一分值增加第二阈值b1,其中,b1小于0,b1的绝对值小于b,例如将该节点增加第二阈值前所分配的第一分值记录为x,根据预设的打分策略调整一次之后得到的第一分值则变为x+b1。本实施例中,终端对与文本属性的相关性为第一相关性的节点分配比与文本属性的相关性为第二相关性的节点更高的第一分值。

终端计算节点下的文本长度,根据文本长度对节点分配第二分值。本实施例中,第二分值与文本长度正相关,例如第二分值与文本长度可以为比例系数大于零的正比例关系。

在一个实施例中,根据节点的分值获取新闻正文节点的步骤包括:根据多个节点第一分值和第二分值,通过预设的分值统计公式,计算得到与多个节点对应的多个总分值;将总分值最大的节点记录为新闻正文节点。

分值统计公式包括第一自变量、第二自变量和因变量,分值统计公式的因变量为总分值。其中,总分值与第一自变量以及第二自变量均为正相关关系,即当第二自变量一定时,第一自变量越大,总分值越大;当第一自变量一定时,第二自变量越大,总分值也越大。

终端依序将多个节点的第一分值和第二分值分别赋值给第一自变量和第二自变量,计算得到多个节点的多个总分值。进一步地,终端根据总分值的大小对多个节点进行排序,获取总分值最大的节点,将总分值最大的节点记录为新闻正文节点。

本实施例中,终端通过采用与文本属性正相关的第一正则表达式、和与文本属性负相关的第二正则表达式,对dom树的节点进行匹配分配第一分值,通过计算节点下的文本长度对节点分配第二分值,并根据预设的分值统计公式,计算出节点的总分值,从而可以根据总分值获取新闻正文节点,提高了从dom树的节点中获取新闻正文节点的准确度,降低了误差率。

应该理解的是,虽然图1的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图4所示,提供了一种新闻数据爬取处理装置,包括:获取模块410、请求模块420和解析模块430,其中:

获取模块410,用于获取多个新闻网站的新闻列表链接,将新闻列表链接存入对应的列表链接队列。

请求模块420,用于在列表链接队列中读取新闻列表链接,根据新闻列表链接向对应的网站服务器发送列表链接源码获取请求;列表链接源码获取请求用于网站服务器返回与新闻列表链接对应的列表链接源码。

解析模块430,用于对新闻列表链接对应的列表链接源码进行解析,提取多个新闻链接;

请求模块420还用于根据新闻链接向网站服务器发送新闻链接源码获取请求;新闻链接源码获取请求用于网站服务器返回与新闻链接对应的新闻链接源码;解析模块430还用于解析新闻链接源码,获取新闻数据。

在一个实施例中,解析模块430还用于对新闻列表链接对应的列表链接源码进行解析,提取多个新闻链接的步骤包括:提取列表链接源码中的多个详情页面链接;根据预设特征对提取的多个详情页面链接进行分类,得到多个链接类别;对多个链接类别的链接数目进行统计,获得链接数目最多的链接类别;将链接数目最多的链接类别记录为新闻链接类别,获取新闻链接类别中的新闻链接。

在一个实施例中,预设特征包括链接的链接深度和链接文本长度;解析模块430还用于计算多个详情页面链接的链接深度值和链接文本长度值;根据多个详情页面链接的链接深度值和链接文本长度值,通过预设的数学模型计算多个详情页面链接的特征值;根据多个详情页面链接的特征值对多个详情页面链接进行分类,得到多个链接类别。

在一个实施例中,新闻数据包括新闻正文;解析还用于根据新闻链接源码生成文档对象模型树;文档对象模型树包括多个节点;遍历文档对象模型树的节点,获取节点的特征信息;根据节点的特征信息对节点分配分值;根据节点的分值获取新闻正文节点;获取新闻正文节点内的新闻正文。

在一个实施例中,节点的特征信息包括节点与文本属性的相关性和节点下的文本长度;解析还用于采用第一正则表达式和第二正则表达式匹配节点;将第一正则表达式与文本属性的相关性标记为第一相关性,以及将第二正则表达式与文本属性的相关性标记为第二相关性;第一相关性与第二相关性相反;当节点符合第一正则表达式时,将节点与文本属性的相关性记录为第一相关性,以及当节点符合第二正则表达式时,将节点与文本属性的相关性记录为第二相关性;根据节点与文本属性的相关性对节点分配第一分值;其中,对与文本属性正相关的节点分配比与文本属性负相关的节点更高的分值;计算节点下的文本长度,根据文本长度对节点分配第二分值。

在一个实施例中,解析还用于根据多个节点第一分值和第二分值,通过预设的分值统计公式,计算得到与多个节点对应的多个总分值;将总分值最大的节点记录为新闻正文节点。

关于新闻数据爬取处理装置的具体限定可以参见上文中对于新闻数据爬取处理方法的限定,在此不再赘述。上述新闻数据爬取处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种新闻数据爬取处理方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:获取多个新闻网站的新闻列表链接,将新闻列表链接存入对应的列表链接队列;在列表链接队列中读取新闻列表链接,根据新闻列表链接向对应的网站服务器发送列表链接源码获取请求;列表链接源码获取请求用于网站服务器返回与新闻列表链接对应的列表链接源码;对新闻列表链接对应的列表链接源码进行解析,提取多个新闻链接;根据新闻链接向网站服务器发送新闻链接源码获取请求;新闻链接源码获取请求用于网站服务器返回与新闻链接对应的新闻链接源码;解析新闻链接源码,获取新闻数据。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:提取列表链接源码中的多个详情页面链接;根据预设特征对提取的多个详情页面链接进行分类,得到多个链接类别;对多个链接类别的链接数目进行统计,获得链接数目最多的链接类别;将链接数目最多的链接类别记录为新闻链接类别,获取新闻链接类别中的新闻链接。

在一个实施例中,预设特征包括链接的链接深度和链接文本长度;处理器执行计算机程序时还实现以下步骤:计算多个详情页面链接的链接深度值和链接文本长度值;根据多个详情页面链接的链接深度值和链接文本长度值,通过预设的数学模型计算多个详情页面链接的特征值;根据多个详情页面链接的特征值对多个详情页面链接进行分类,得到多个链接类别。

在一个实施例中,新闻数据包括新闻正文,处理器执行计算机程序时还实现以下步骤:根据新闻链接源码生成文档对象模型树;文档对象模型树包括多个节点;遍历文档对象模型树的节点,获取节点的特征信息;根据节点的特征信息对节点分配分值;根据节点的分值获取新闻正文节点;获取新闻正文节点内的新闻正文。

在一个实施例中,节点的特征信息包括节点与文本属性的相关性和节点下的文本长度;处理器执行计算机程序时还实现以下步骤:采用采用第一正则表达式和第二正则表达式匹配节点;将第一正则表达式与文本属性的相关性标记为第一相关性,以及将第二正则表达式与文本属性的相关性标记为第二相关性;第一相关性与第二相关性相反;当节点符合第一正则表达式时,将节点与文本属性的相关性记录为第一相关性,以及当节点符合第二正则表达式时,将节点与文本属性的相关性记录为第二相关性;根据节点与文本属性的相关性对节点分配第一分值;其中,对与文本属性正相关的节点分配比与文本属性负相关的节点更高的分值;计算节点下的文本长度,根据文本长度对节点分配第二分值。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据多个节点第一分值和第二分值,通过预设的分值统计公式,计算得到与多个节点对应的多个总分值;将总分值最大的节点记录为新闻正文节点。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取多个新闻网站的新闻列表链接,将新闻列表链接存入对应的列表链接队列;在列表链接队列中读取新闻列表链接,根据新闻列表链接向对应的网站服务器发送列表链接源码获取请求;列表链接源码获取请求用于网站服务器返回与新闻列表链接对应的列表链接源码;对新闻列表链接对应的列表链接源码进行解析,提取多个新闻链接;根据新闻链接向网站服务器发送新闻链接源码获取请求;新闻链接源码获取请求用于网站服务器返回与新闻链接对应的新闻链接源码;解析新闻链接源码,获取新闻数据。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:提取列表链接源码中的多个详情页面链接;根据预设特征对提取的多个详情页面链接进行分类,得到多个链接类别;对多个链接类别的链接数目进行统计,获得链接数目最多的链接类别;将链接数目最多的链接类别记录为新闻链接类别,获取新闻链接类别中的新闻链接。

在一个实施例中,预设特征包括链接的链接深度和链接文本长度;计算机程序被处理器执行时还实现以下步骤:计算多个详情页面链接的链接深度值和链接文本长度值;根据多个详情页面链接的链接深度值和链接文本长度值,通过预设的数学模型计算多个详情页面链接的特征值;根据多个详情页面链接的特征值对多个详情页面链接进行分类,得到多个链接类别。

在一个实施例中,新闻数据包括新闻正文;计算机程序被处理器执行时还实现以下步骤:根据新闻链接源码生成文档对象模型树;文档对象模型树包括多个节点;遍历文档对象模型树的节点,获取节点的特征信息;根据节点的特征信息对节点分配分值;根据节点的分值获取新闻正文节点;获取新闻正文节点内的新闻正文。

在一个实施例中,节点的特征信息包括节点与文本属性的相关性和节点下的文本长度;计算机程序被处理器执行时还实现以下步骤:采用第一正则表达式和第二正则表达式匹配节点;将第一正则表达式与文本属性的相关性标记为第一相关性,以及将第二正则表达式与文本属性的相关性标记为第二相关性;第一相关性与第二相关性相反;当节点符合第一正则表达式时,将节点与文本属性的相关性记录为第一相关性,以及当节点符合第二正则表达式时,将节点与文本属性的相关性记录为第二相关性;根据节点与文本属性的相关性对节点分配第一分值;其中,对与文本属性正相关的节点分配比与文本属性负相关的节点更高的分值;计算节点下的文本长度,根据文本长度对节点分配第二分值。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:根据多个节点第一分值和第二分值,通过预设的分值统计公式,计算得到与多个节点对应的多个总分值;将总分值最大的节点记录为新闻正文节点。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1