网页中的页面正文提取方法和装置与流程

文档序号:12719829阅读:176来源:国知局
本发明涉及数据处理
技术领域
:,具体涉及一种网页中的页面正文提取方法和装置。
背景技术
::目前,在互联网中,会产生海量的页面,然而,页面之间的排版布局往往是不同的,如果从页面中快速准确提取出正文,一直都是个比较困难的问题。现有的方式主要有:1)通过下载静态页面,然后分析各个页面块的文本密度值,将文本密度最大的页面快作为该页面的正文;2)通过网页渲染的方式,对网页进行分析划分,通过网页块的划分结果,来获取正文。然而,上述两种方式都存在一定的问题,通过文本密度进行正文提取的方法,识别准确率较低,且对复杂一点的网页,适应能力较差。通过网页渲染进行正文提取的方法,正文提取速度较慢,且对渲染引擎要求比较高,应用部署相对复杂。针对上述问题,目前尚未提出有效的解决方案。技术实现要素:本发明实施例提供一种网页中的页面正文提取方法和装置,以提高正文提取的准确性,且部署起来较为简单。一方面,本发明实施例提供了一种网页中的页面正文提取方法,包括:加载待提取的页面;确定所述页面中的文章标题对应的标签元素;以所述文章标题对应的标签元素作为基准点,获取所述页面中所述文章标题之前的标签元素列表和所述文章标题之后的标签元素列表;基于所述文章标题对应的标签元素,从所述文章标题之前的标签元素列表和所述文章标题之后的标签元素列表中,确定出所述页面中的正文页面块对应的标签元素;将确定出的正文页面块对应的标签元素对应的页面块中的内容作为页面正文提取。在一个实施方式中,确定所述页面中的文章标题对应的标签元素,包括:通过识别所述页面中的文章信息数据,确定文章信息数据所在的标签元素;将所述文章信息数据所在的标签元素之前的各标签元素中,第一个满足预设的标题特征的标签元素作为所述文章标题对应的标签元素。在一个实施方式中,所述文章信息数据至少包括以下数据之一:文章来源、文章作者、文章日期、文章字体和文章作者。在一个实施方式中,所述预设的标题特征至少包括以下特征之一:没有孩子节点、节点内容不为空、不是时间格式的文本、文本含有最多一个字符。在一个实施方式中,基于所述文章标题对应的标签元素,从所述文章标题之前的标签元素列表和所述文章标题之后的标签元素列表中,确定出所述页面中的正文页面块对应的标签元素,包括:对所述文章标题之前的标签元素进行遍历:计算各个标签元素与所述文章标题所对应的标签元素之间的距离;删除距离大于第一预设阈值的标签元素,对于未删除的标签元素,根据各个标签元素的标签字符串比、各个标签元素与所述文章标题所对应的标签元素之间的距离,计算各个标签元素的特征值;选取特征值最大的标签元素,作为第一标签元素;对所述文章标题之后的标签元素进行遍历:计算各个标签元素与所述文章标题所对应的标签元素之间的距离;删除距离小于第二预设阈值的标签元素,对于未删除的标签元素;根据各个标签元素的标签字符串比、各个标签元素与所述标题所对应的标签元素之间的距离,计算各个标签元素的特征值;选取特征值最大的标签元素,作为第二标签元素;比较所述第一标签元素的特征值和所述第二标签元素的特征值,将特征较大的标签元素作为所述页面中的正文页面块对应的标签元素。在一个实施方式中,通过以下公式计算各个标签元素的标签字符串比:标签元素的标签字符串比=标签元素的文本长度/从标题所对应的标签元素开始标签内容长度。另一方面,本发明实施例提供了一种网页中的页面正文提取装置,包括:加载模块,用于加载待提取的页面;第一确定模块,用于确定所述页面中的文章标题对应的标签元素;获取模块,用于以所述文章标题对应的标签元素作为基准点,获取所述页面中所述文章标题之前的标签元素列表和所述文章标题之后的标签元素列表;第二确定模块,用于基于所述文章标题对应的标签元素,从所述文章标题之前的标签元素列表和所述文章标题之后的标签元素列表中,确定出所述页面中的正文页面块对应的标签元素;提取模块,用于将确定出的正文页面块对应的标签元素对应的页面块中的内容作为页面正文提取。在一个实施方式中,所述第一确定模块包括:第一确定单元,用于通过识别所述页面中的文章信息数据,确定文章信息数据所在的标签元素;第二确定单元,用于将所述文章信息数据所在的标签元素之前的各标签元素中,第一个满足预设的标题特征的标签元素作为所述文章标题对应的标签元素。在一个实施方式中,所述第二确定模块包括:第一遍历单元,用于对所述文章标题之前的标签元素进行遍历:计算各个标签元素与所述文章标题所对应的标签元素之间的距离;删除距离大于第一预设阈值的标签元素,对于未删除的标签元素,根据各个标签元素的标签字符串比、和各个标签元素与所述文章标题所对应的标签元素之间的距离,计算各个标签元素的特征值;选取特征值较大的标签元素,作为第一标签元素;第二遍历单元,用于对所述文章标题之后的标签元素进行遍历:计算各个标签元素与所述文章标题所对应的标签元素之间的距离;删除距离小于第二预设阈值的标签元素,对于未删除的标签元素,根据各个标签元素的标签字符串比、和各个标签元素与所述标题所对应的标签元素之间的距离,计算各个标签元素的特征值;选取特征值较大的标签元素,作为第二标签元素;比较单元,用于比较所述第一标签元素的特征值和所述第二标签元素的特征值,将特征大的标签元素作为所述页面中的正文页面块对应的标签元素。上述技术方案具有如下有益效果:因为采用通过确定正文标签的方式,来确定正文的位置,因此可以达到快速、准确性高的确定正文的目的,且仅需要请求静态页面,无需对页面进行渲染,因此,减少了部署复杂度,实现起来较为简单。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是根据本发明实施例的网页中的页面正文提取方法的流程示意图;图2是根据本发明实施例的网页中的页面正文提取装置的结构框图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在本发明实施例中,提供了一种网页中的页面正文提取方法,如图1所示,可以包括以下步骤:步骤101:加载待提取的页面;步骤102:确定所述页面中的文章标题对应的标签元素;具体地,可以按照以下方式确定所述页面中的文章标题对应的标签元素:S1:通过识别所述页面中的文章信息数据,确定文章信息数据所在的标签元素;S2:将所述文章信息数据所在的标签元素之上的标签元素中,第一个满足预设的标题特征的标签元素作为所述文章标题对应的标签元素。即,先确定文章信息数据所在的位置,例如,依据文章中的时间、来源等信息作为参照物,一般而言标题实在这些文章信息数据的前方。其中,文章信息数据至少可以包括但不限于以下数据之一:文章来源、文章作者、文章日期、文章字体和文章作者。在确定了文章信息之后,就可以确定其上一个满足文章标题一般格式的就可以作为文章标题对应的标签元素。具体地,预设的标题特征可以至少包括但不限于以下特征之一:没有孩子节点、节点内容不为空、不是时间格式的文本、文本含有最多一个字符。在实现的时候,确定文章信息数据所在的标签元素,可以是通过以下的正则表达式确定的,即,找出能匹配如下正则表达式的第一个元素,作为标签元素:"(来源|来源于|稿源|出处|来自|公众号|作者|时间|日期|字体)[::\\s]+"。步骤103:以所述文章标题对应的标签元素作为基准点,获取所述页面中所述文章标题之前的标签元素列表和所述文章标题之后的标签元素列表;步骤104:基于所述文章标题对应的标签元素,从所述文章标题之前的标签元素列表和所述文章标题之后的标签元素列表中,确定出所述页面中的正文页面块对应的标签元素。具体地,可以按照以下方式确定所述页面中的正文页面块对应的标签元素:S1:对文章标题之前的标签元素进行遍历:计算各个标签元素与所述文章标题所对应的标签元素之间的距离;删除距离大于第一预设阈值(例如:0.6)的标签元素,对于未删除的标签元素,根据各个标签元素的标签字符串比、和各个标签元素与所述文章标题所对应的标签元素之间的距离,计算各个标签元素的特征值;选取特征值最大的标签元素,作为第一标签元素;S2:对文章标题之后的标签元素进行遍历:计算各个标签元素与所述文章标题所对应的标签元素之间的距离;删除距离小于第二预设阈值(例如:-0.35)的标签元素,对于未删除的标签元素,根据各个标签元素的标签字符串比、和各个标签元素与所述文章标题所对应的标签元素之间的距离,计算各个标签元素的特征值;选取特征值最大的标签元素,作为第二标签元素;S3:比较所述第一标签元素的特征值和所述第二标签元素的特征值,将特征值较大的标签元素作为所述页面中的正文页面块对应的标签元素。上述的各个标签元素的标签字符串比可以按照以下方式计算得到:标签元素的标签字符串比=标签元素的文本长度/从标题所对应的标签元素开始标签内容长度。步骤105:将确定出的正文页面块对应的标签元素对应的页面块中的内容作为页面正文提取。下面结合一个具体实施例对网页中正文的提取方法进行说明,然而,值得注意的是,该具体实施例仅是为了更好地说明本申请,并不构成对本申请的不当限定。在本例中,通过多维度的计算模型,可以对静态页面全自动的提取网页正文内容,主要是利用标题位置,计算其它元素的特征值以及和标题的距离等信息来计算选择出最恰当的标签作为页面正文标签。具体地,整个获取页面内容块的过程可以包括:S1:自动获取文章标题:在实现的时候,自动获取标题可以是依据文章中的时间、来源等信息为参照物。按照标题一般位于这些信息的上方的规则:A)获取如下的标签元素,记为titleElementsdiv,span,strong,h1,h2,h3,td,tr,p,b,fontB)从titleElements中找到能匹配到如下的正则表达式的第一个元素,记为targetELement"(来源|来源于|稿源|出处|来自|公众号|作者|时间|日期|字体)[::\\s]+"从targetElement向上回溯标签,如果某标签满足下面所有条件:没有孩子节点节点内容不为空不是时间格式的文本文本中不会出现多个字符,比如点好,句号,问号,冒号等标点将满足上述条件的第一个元素作为titleElement,并且返回。S2:数据准备:A)静态页面中的body字符串,记为:bodyHTMLB)将从titleElement标签开始的内容长度,记为:textLengthS3:L1和L2A)L1:在bodyHTML中,以titleElement为基准点,在其之后的标签元素(<div>,<table>,<tbody>,<article>,<ul>,<section>,<td>,<li>),放在元素列表L1中;B)L2:在bodyHTML中,以titleElement为基准点,在其之前的标签元素(<div>,<table>,<tbody>,<article>,<ul>,<section>,<td>,<li>),放在元素列表L2中。S4:元素element和titleElement距离计算计算element和titleElement的距离dist。具体地,先计算titleElement在bodyHTML中的位置index1,再计算element在bodyHTML中的位置index2,那么:dist=index2-index1如果element在titleElement之前,那么dist为负数。再计算distRate=dist/textLengthS5:元素element特征计算1)计算element标签下所有段落的个数(<p>和<br>标签),记为paraCount;2)计算那些父节点不是<p>标签的所有超链接标签<a>个数,记为linkCount;3)计算<input>标签中type为button的个数,记为buttonCount;4)计算该标签字符串比,记为txtDensity:textDensity=element的文本长度/textLength5)如果textDensity∈(0.3,1),并且distRate∈(0.0,0.1),那么:textDensity=textDensity×26)如果textDensity∈(0.3,1),并且distRate∈(0.1,0.2),那么:textDensity=textDensity×1.27)如果textDensity∈(0.1,0.3),并且distRate∈(0.1,0.2),那么:textDensity=textDensity×1.28)如果textDensity∈(-0.3,0.0),并且distRate∈(-∞,-0.2),那么:textDensity=textDensity×0.79)将textDensity乘以段落的数量:textDensity=textDensity×paraCount如果paraCount>=10,再textDensity=textDensity×210)将textDensity除以链接数:textDensity=textDensity/linkCount11)如果buttonCount>20,那么将textDensity=0,否则:textDensity=textDensity/buttonCountS6:L1中的元素计算方法计算L1中所有元素(遍历的每个元素记为element),方法步骤如下:A)计算element和titleElement的距离dist。如果dist>0.6,那就表明该元素离titleElement较远,则不认为是文章正文元素,直接忽略掉B)计算element的特征值textDensity。如果dist>0.3,那么textDensity=textDensity×0.9如果dist>0.4,那么textDensity=textDensity×0.8如果dist>0.5,那么textDensity=textDensity×0.7C)返回最大特征值的元素E1。S7:L2计算方法计算L2种所有元素(遍历的每个元素记为element),方法步骤如下:A)计算element和titleElement的距离dist(负值)。如果dist<-0.35,那就表明该元素离titleElement较远,不认为是文章正文元素,直接忽略掉。B)计算element的特征值textDensity,并且将textDensity=textDensity×0.7C)返回最大特征值元素E2。S8:比较E1和E2的大小,选择更大者作为页面的正文标签。通过上例中的确定正文标签的方式,速度较快,且仅需要请求静态页面,无需进行渲染,且准确率较高,从测试结果看,准确率可以达到93%以上,且几乎不受页面模板的影响,实现起来简单,部署方便。基于同一发明构思,本发明实施例中还提供了一种网页中的页面正文提取装置,如下面的实施例所述。由于网页中的页面正文提取装置解决问题的原理与网页中的页面正文提取方法相似,因此网页中的页面正文提取装置的实施可以参见网页中的页面正文提取方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。如图2所示,可以包括:加载模块201、第一确定模块202、获取模块203和第二确定模块204,下面对该结构进行说明。加载模块201,用于加载待提取的页面;第一确定模块202,用于确定所述页面中的文章标题对应的标签元素;获取模块203,用于以所述文章标题对应的标签元素作为基准点,获取所述页面中所述文章标题之前的标签元素列表和所述文章标题之后的标签元素列表;第二确定模块204,用于基于所述文章标题对应的标签元素,从所述文章标题之前的标签元素列表和所述文章标题之后的标签元素列表中,确定出所述页面中的正文页面块对应的标签元素;提取模块,用于将确定出的正文页面块对应的标签元素对应的页面块中的内容作为页面正文提取。在一个实施方式中,第一确定模块202可以包括:第一确定单元,用于通过识别所述页面中的文章信息数据,确定文章信息数据所在的标签元素;第二确定单元,用于将所述文章信息数据所在的标签元素之前的各标签元素中,第一个满足预设的标题特征的标签元素作为所述文章标题对应的标签元素。在一个实施方式中,第二确定模块204可以包括:第一遍历单元,用于对所述文章标题之前的标签元素进行遍历:计算各个标签元素与所述文章标题所对应的标签元素之间的距离;删除距离大于第一预设阈值的标签元素,对于未删除的标签元素,根据各个标签元素的标签字符串比、和各个标签元素与所述文章标题所对应的标签元素之间的距离,计算各个标签元素的特征值;选取特征值最大的标签元素,作为第一标签元素;第二遍历单元,用于对所述文章标题之后的标签元素进行遍历:计算各个标签元素与所述文章标题所对应的标签元素之间的距离;删除距离小于第二预设阈值的标签元素,对于未删除的标签元素,根据各个标签元素的标签字符串比、和各个标签元素与所述文章标题所对应的标签元素之间的距离,计算各个标签元素的特征值;选取特征值最大的标签元素,作为第二标签元素;比较单元,用于比较所述第一标签元素的特征值和所述第二标签元素的特征值,将特征值较大的标签元素作为所述页面中的正文页面块对应的标签元素。从以上的描述中,可以看出,本发明实施例实现了如下技术效果:因为采用通过确定正文标签的方式,来确定正文的位置,因此可以达到快速、准确性高的确定正文的目的,且仅需要请求静态页面,无需对页面进行渲染,因此,减少了部署复杂度,实现起来较为简单。本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrativelogicalblock),单元,和步骤可以通过电子硬件、电脑软件,或两者的结合进行实现。为清楚展示硬件和软件的可替换性(interchangeability),上述的各种说明性部件(illustrativecomponents),单元和步骤已经通用地描述了它们的功能。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。本发明实施例中所描述的各种说明性的逻辑块,或单元都可以通过通用处理器,数字信号处理器,专用集成电路(ASIC),现场可编程门阵列或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。本发明实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件模块、或者这两者的结合。软件模块可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中,ASIC可以设置于用户终端中。可选地,处理器和存储媒介也可以设置于用户终端中的不同的部件中。在一个或多个示例性的设计中,本发明实施例所描述的上述功能可以在硬件、软件、固件或这三者的任意组合来实现。如果在软件中实现,这些功能可以存储与电脑可读的媒介上,或以一个或多个指令或代码形式传输于电脑可读的媒介上。电脑可读媒介包括电脑存储媒介和便于使得让电脑程序从一个地方转移到其它地方的通信媒介。存储媒介可以是任何通用或特殊电脑可以接入访问的可用媒体。例如,这样的电脑可读媒体可以包括但不限于RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁性存储装置,或其它任何可以用于承载或存储以指令或数据结构和其它可被通用或特殊电脑、或通用或特殊处理器读取形式的程序代码的媒介。此外,任何连接都可以被适当地定义为电脑可读媒介,例如,如果软件是从一个网站站点、服务器或其它远程资源通过一个同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或以例如红外、无线和微波等无线方式传输的也被包含在所定义的电脑可读媒介中。所述的碟片(disk)和磁盘(disc)包括压缩磁盘、镭射盘、光盘、DVD、软盘和蓝光光盘,磁盘通常以磁性复制数据,而碟片通常以激光进行光学复制数据。上述的组合也可以包含在电脑可读媒介中。以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1