1.本技术涉及计算机网络
技术领域:
:,特别是涉及一种网页正文抽取方法及系统。
背景技术:
::2.传统的网页正文抽取方法一般采用基于网页标签分析的网页正文抽取方法,具体是通过对网站html建立文档对象模型dom,然后对对象模型dom进行遍历递归,去除相应的噪音节点信息之后再从剩余节点中进行选择的手段,实现网页正文抽取的目的。3.然而,传统的网页正文抽取方法具有一个很大的缺陷,即比较依赖人工制定的规则,虽然能在设计规范或易于矫正的网页中获得良好的效果,但是无法很好的处理非规范化网页。人工制定的规则又被称为手工规则,指的是对于每一类网页人为定制的特定网页正文抽取规则,例如针对a网站制定a规则,针对b网站制定b规则,针对c网站制定c规则,只对1000个的不同的网站就要制定1000个不同的网页正文抽取规则。4.此外,传统的网页正文抽取方法由于依赖对人工制定的规则,导致在面对海量网页的大规模正文抽取的应用场景时存在较大的困难。5.现在市场上迫切需要一种既可以广泛应用于规范化网页和非规范化网页,又可以对海量网页进行大规模自动化正文抽取的网页正文抽取方法。技术实现要素:6.基于此,有必要针对传统网页正文抽取方法依赖人工制定的规则,无法处理非规范化网页,在面对海量网页的大规模正文抽提取的应用场景时存在较大困难的问题,提供一种网页正文抽取方法及系统。7.本技术提供一种网页正文抽取方法,所述方法包括:8.选取一个待抽取网页;9.遍历待抽取网页中的所有节点,滤除噪声节点,得到多个非噪声节点;10.获取待抽取网页中每一个非噪声节点中的文本内容,并依据每一个非噪声节点中的文本内容计算得出多个特征指标;11.计算待抽取网页中每一个非噪声节点中的文本内容和待抽取网页的原始文本内容的相似度得分;12.将待抽取网页中每一个非噪声节点的所有特征指标和相似度得分纳入模型数据集;13.反复执行所述选取一个待抽取抽取网页至所述将待抽取网页中每一个非噪声节点的所有特征指标和相似度得分纳入模型数据集的步骤,直至n个待抽取网页内所有非噪声节点的所有特征指标和相似度得分均纳入模型数据集,n为正整数且n大于等于10;14.构建正文节点验证模型,利用模型数据集对正文节点验证模型进行训练和验证,得到训练后的正文节点验证模型;15.选取一个待验证网页;16.遍历待验证网页中的所有节点,滤除噪声节点,得到多个非噪声节点;17.获取待验证网页中每一个非噪声节点中的文本内容,并依据每一个非噪声节点中的文本内容计算得出多个特征指标;18.将每一个非噪声节点的所有特征指标输入至正文节点验证模型中,运行正文节点验证模型,得到正文节点验证模型输出的每一个非噪声节点的正文节点匹配分数;19.选取正文节点匹配分数最高的非噪声节点,获取正文节点匹配分数最高的非噪声节点的文档主体元素作为待验证网页的网页正文输出。20.本技术还提供一种网页正文抽取系统。21.所述网页正文抽取系统包括:22.网页正文抽取终端,用于执行如前述内容提及的的网页正文抽取方法;23.数据库服务器,与所述网页正文抽取终端通信连接,所述数据库服务器包括第一数据存储单元和第二数据存储单元。24.本技术涉及一种网页正文抽取方法及系统,通过遍历待抽取网页中的所有节点,滤除噪声节点,可以快速去除与文本无关的噪声内容,通过依据每一个非噪声节点中的文本内容计算得出多个特征指标,并将其用于训练正文节点验证模型,使得正文节点验证模型具有筛选出正文节点匹配分数最高的非噪声节点的功能,这样不需要人为制定网页正文抽取规则,从而可以轻松适应海量网页的大规模正文抽提取的应用场景。而且,正文节点验证模型可以解决通用性和范用性的问题,因此也可以适用于绝大多数的非规范化网页中。附图说明25.图1为本技术一实施例提供的网页正文抽取方法的流程示意图。26.图2为本技术一实施例提供的网页正文抽取系统的结构示意图。具体实施方式27.为了使本技术的目的.技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。28.本技术提供一种网页正文抽取方法。需要说明的是,本技术提供的网页正文抽取方法应用于html网页的正文文本抽取。29.此外,本技术提供的网页正文抽取方法不限制其执行主体。可选地,本技术提供的网页正文抽取方法的执行主体可以为一种网页正文抽取终端100。具体地,本技术提供的网页正文抽取方法的执行主体的可以为所述网页正文抽取终端100中的一个或多个处理器。30.如图1所示,在本技术的一实施例中,所述网页正文抽取方法包括:31.s110,选取一个待抽取网页。32.s120,遍历待抽取网页中的所有节点,滤除噪声节点,得到多个非噪声节点。33.s130,获取待抽取网页中每一个非噪声节点中的文本内容,并依据每一个非噪声节点中的文本内容计算得出多个特征指标。34.s140,计算待抽取网页中每一个非噪声节点中的文本内容和待抽取网页的原始文本内容的相似度得分。35.s150,将待抽取网页中每一个非噪声节点的所有特征指标和相似度得分纳入模型数据集。36.s160,反复执行所述s110至所述s150的步骤,直至n个待抽取网页内所有非噪声节点的所有特征指标和相似度得分均纳入模型数据集,n为正整数且n大于等于10。37.s170,构建正文节点验证模型,利用模型数据集对正文节点验证模型进行训练和验证,得到训练后的正文节点验证模型。38.s210,选取一个待验证网页。39.s220,遍历待验证网页中的所有节点,滤除噪声节点,得到多个非噪声节点。40.s230,获取待验证网页中每一个非噪声节点中的文本内容,并依据每一个非噪声节点中的文本内容计算得出多个特征指标。41.s240,将每一个非噪声节点的所有特征指标输入至正文节点验证模型中,运行正文节点验证模型,得到正文节点验证模型输出的每一个非噪声节点的正文节点匹配分数。42.s250,选取正文节点匹配分数最高的非噪声节点,获取正文节点匹配分数最高的非噪声节点的文档主体元素作为待验证网页的网页正文输出。43.具体地,s110至s170是构建正文节点验证模型和对正文节点验证模型训练的过程。训练后的正文节点验证模型具有的功能是:在输入一个待验证网页后,可以自动提取待验证网页中所有非噪声节点,并得出每一个非噪声节点的正文节点匹配分数,还可以筛选出正文节点匹配分数最高的非噪声节点。44.s130中是首先获取待抽取网页中每一个非噪声节点中的文本内容。然后选取一个非噪声节点,根据该非噪声节点中的文本内容计算得出多个特征指标。可选地,特征指标的数量为8个。反复执行选取一个非噪声节点,据该非噪声节点中的文本内容计算得出多个特征指标的步骤,直至待抽取网页中所有非噪声节点均计算出对应的8个特征指标,这些指标均在s150中纳入模型数据集中。45.例如,待抽取网页a中具有10个非噪声节点,那么每个非噪声节点统计出8个特征指标,那么10个非噪声节点共有10组特征指标,共计80个特征指标纳入模型数据集中。46.s140中,同样是首先获取待抽取网页中每一个非噪声节点中的文本内容。然后选取一个非噪声节点,计算这个非噪声节点中的文本内容和待抽取网页的原始文本内容的相似度得分。反复执行选取一个非噪声节点,计算这个非噪声节点中的文本内容和待抽取网页的原始文本内容的相似度得分。直至待抽取网页中所有非噪声节点均计算出对应的的相似度得分,这些相似度得分均在s150中纳入模型数据集中。47.例如,待抽取网页a中具有10个非噪声节点,那么每个非噪声节点统计出1个相似度得分,那么10个非噪声节点共有10个相似度得分,纳入模型数据集中。48.s210至s250则是使用训练后的正文节点验证模型对待验证网页的网页正文抽取过程。49.本实施例中,通过遍历待抽取网页中的所有节点,滤除噪声节点,可以快速去除与文本无关的噪声内容。通过依据每一个非噪声节点中的文本内容计算得出多个特征指标,并将其用于训练正文节点验证模型,使得正文节点验证模型具有筛选出正文节点匹配分数最高的非噪声节点的功能,这样不需要人为制定网页正文抽取规则,从而可以轻松适应海量网页的大规模正文抽提取的应用场景。50.通过多个特征指标训练正文节点验证模型可以从多维度考量节点中文本内容和待抽取网页的原始文本内容的重合程度,从而使得正文节点验证模型的输出结果更准确。51.而且,正文节点验证模型属于机器学习模型,机器学习本身就是来解决通用性和泛化性问题的,对于海量网页(包括规范化网页+非规范化网页),它能解决95%的网页,这95%的网页中必然会存在非规范化网页,换言之,本技术提供的正文节点验证模型可以来解决传统网页正文中区方法不适用于非规范化网页的问题。因此,本技术提供的网页正文抽取方法可以解决通用性和范用性的问题,因此也可以适用于绝大多数的非规范化网页中。52.在本技术的一实施例中,在s120之前,所述方法还包括:53.s111,获取待抽取网页的统一资源定位符,依据待抽取网页的统一资源定位符获取待抽取网页的网页源代码。54.具体地,统一资源定位符即待抽取网页的url。即通过待抽取网页的url获取待抽取网页的网页源代码。网页源代码即html文件。55.s112,对待抽取网页的网页源代码进行清洗处理与归一化处理,得到归一化数据文件。56.具体地,归一化数据文件即html_normalize文件。57.s113,将归一化数据文件转化为文档对象模型,并获取文档对象模型中的所有节点。58.具体地,可以使用nfkc对网页源代码进行归一化处理,把特殊字符转换为普通字符。文档对象模型即dom模型。59.unicodedata库提供了normalize方法来实现这一功能。具体而言,mormalize通过指定字符的表示形式,将传入的字符串转换为相应的形式。mormalize提供了四种规范化标准:60.1)nfc:使用最少码位构成等价字符串。61.2)nfd:将所有的组合字符解析为基字符和单独的组合字符。62.3)nfkc:基本上就是nfc的兼容模式,添加了对兼容字符的处理。63.4)nfkd:基本上就是nfd的兼容模式,添加了对兼容字符的处理。64.本技术使用的是nfkc对网页源代码进行归一化处理。在unicode的编码中,经常会有一些特殊字符被编码成多种unicode形式,本技术可以将特殊字符转换为普通字符,完成字符串的规划化。字符串的规范化在一定程度上可归类于某些字符的组合和分解。65.在本技术的一实施例中,s112包括:66.s112a,利用正则表达式清除待抽取网页的网页源代码中的b标签、br标签和span标签中的一种或多种。67.正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。68.可选地,本实施例中清除b标签、br标签和span标签中的一种或多种的正则表达式可以为:re.sub('《/?(br?|span).*?》',”,html。69.清除b标签、br标签和span标签的目的是清除掉待抽取网页中附带的一些加粗的状态的格式符,便于后续对待抽取网页的正文提取,减小对正文提取的干扰。70.s112b,对待抽取网页的网页源代码中的网页风格脚本语言进行清理。71.具体地,使用lxml.html.clean对style/scripts/comments/javascript进行清理。style/scripts/comments/javascript即网页风格脚本语言,很多网页带有设计风格的一些插件或字符,这会妨碍我们采集纯粹的文本内容,因此本步骤我们需要对源代码中的网页风格脚本语言进行清理。lxml.html.clean是一个清理代码程序。当然,也可以采取其他方式清理网页风格脚本语言。72.s112c,对待抽取网页的网页源代码进行归一化处理,得到归一化数据文件。73.具体地,使用nfkc对网页源代码进行归一化,把特殊字符转换为普通字符。74.在本技术的一实施例中,s120包括:75.s121,通过xpath获取归一化数据文件中的所有节点。76.s122,遍历归一化数据文件中的所有节点,获取每一个节点的节点标签。77.s123,获取噪声节点标签集合。78.s124,从归一化数据文件中的所有节点中选取一个节点。79.s125,判断所述节点的节点标签是否归属于噪声节点标签集合。80.s126,若所述节点的节点标签归属于噪声节点标签集合,则确定所述节点为噪声节点,返回所述s124,直至归一化数据文件中的所有节点均被选取完毕。81.具体地,噪声节点标签集合是预先设定一些具有噪声节点标签的集合。可选地,噪声节点标签集合可以为:82.noise_node_tag=['html','head','body','script','table','select','form','textarea','img','object','a','iframe','link','meta','tr','strong','span','li','ul','input','embed','h1','h2','h3','h4','h5','title','noscript','em','p']。[0083]noisenode是根网页结构有关,一般这类节点下的文本均不属于正文,可以称之为“噪声节点”,即是非正文文本节点。[0084]在本技术的一实施例中,s120还包括:[0085]s127,若所述节点的节点标签不归属于噪声节点标签集合,则确定所述节点为非噪声节点,返回所述s124,直至归一化数据文件中的所有节点均被选取完毕。[0086]具体地,如果节点的节点标签,即tag不属于噪声节点标签集合,即不是噪声节点标签集合中的任何一种噪声节点标签,那么认为所述节点为非噪声节点,我们会后续对这些非噪声节点进行后续操作。[0087]在本技术的一实施例中,所述多个特征指标包括短文本比值、长度大于15个字符或长度大于8个字符但存在结束标点的文本的次数、标点符号密度、文本密度、结束标点的密度、链接比值和综合密度中的一种或多种。[0088]具体地,文本节点的总次数记为ti_count。链接文本节点的次数记为lti_count。所有文本中标签符号的次数记为sum_ti_punctuation。链接文本的标签符号的次数记为sum_lti_punctuation。链接文本中结束标点的次数记为sum_lti_end_count_punctuation。所有文本中结束标点的总次数记为sum_ti_end_count_punctuation。[0089]本实施例中,长度小于15个字符的文本我们定义为短文本。长度大于15个字符,或长度大于8个字符但存在结束标点的文本我们定义为长文本。长度小于15个字符的文本的次数(即短文本的次数)记为short_text_cnt。长度大于15个字符或者长度大于8个字符但存在结束标点的文本的次数(即长文本的次数)记为long_text_cnt。[0090]链接比值记为link_rate,结束标点的密度记为end_punctua_density。综合密度记为com_density。[0091]可选地,我们依据公式1计算短文本比值:[0092][0093]其中,short_textrate为短文本比值。short_text_cnt为长度小于15个字符的文本的次数。ti_count为文本节点的总次数。[0094]实际上,短文本比值就是长度小于15个字符的文本的次数占文本节点的总次数的比例。[0095]长度大于15个字符或者长度大于8个字符但存在结束标点的文本的次数(即长文本的次数)我们可以通过直接检索获取,即short_text_cnt我们可以通过直接检索的方式获取。可选地,我们采用一个检索字符串进行检索获取short_text_cnt。可选地,检索字符串如下:[0096]iflen(text)》=15orlen(text)》8and'。'intext):[0097]ꢀꢀꢀꢀshort_text_cn+=1。[0098]我们通过上述的检索字符串遍历一个非噪声节点中的文本内容,就可以得到这个非噪声节点中的short_text_cnt。[0099]我们依据公式2计算标点符号密度:[0100][0101]其中,punctua_density为标点符号密度。sum_ti_punctuation为所有文本中标签符号的总次数。sum_lti_punctuation为链接文本中标签符号的次数。ti_count为文本节点的总次数。lti_count为链接文本节点的次数。[0102]我们依据公式3计算文本密度:[0103][0104]其中,text_density为文本密度。len(ti_text)为非链接文本长度。len(lti_text)为链接文本长度。ti_count为文本节点的总次数。lti_count为链接文本节点的次数。[0105]我们依据公式4计算结束标点的密度:[0106][0107]其中,end_punctua_density为结束标点的密度。[0108]sum_lti_end_count_punctuation为链接文本中结束标点的次数。sum_ti_end_count_punctuation为所有文本中结束标点的总次数。sum_ti_punctuation为所有文本中标签符号的总次数。sum_lti_punctuation为链接文本中标签符号的次数。[0109]我们依据公式5计算链接密度:[0110][0111]其中,link_density为链接密度。len(lti_text)为链接文本长度。len(ti_text)为非链接文本长度。[0112]链接密度为节点中链接文本长度与非链接文本长度的比值。[0113]我们依据公式6计算链接比值:[0114][0115]其中,link_rate为链接比值。lti_count为链接文本节点的次数。ti_count为文本节点的总次数。[0116]链接比值为链接文本节点的次数与文本节点的总次数的比值。[0117]我们依据公式7计算综合密度:[0118][0119]其中,com_density为综合密度。text_density为文本密度。long_text_cnt为长度大于15个字符或者长度大于8个字符但存在结束标点的文本的次数。punctua_density为标点符号密度。short_textrate为短文本比值。link_density为链接密度。link_rate为链接比值。end_punctua_density为结束标点的密度。[0120]综合密度为多项特征的组合加权。多项特征包括短文本比值、长度大于15个字符或者长度大于8个字符但存在结束标点的文本的次数、标点符号密度、文本密度、结束标点的密度、链接密度和链接比值。[0121]最终我们将所有特征统计于下列的表格中。[0122]表1-数据集合表[0123][0124][0125]每执行一次s110至s150,通过s130的计算会得到一个网页的每一个非噪声节点的所有特征指标,将其填入表1中,便于统计。[0126]每执行一次s110至s150,在s140中还会计算待抽取网页中每一个非噪声节点中的文本内容和待抽取网页的原始文本内容的相似度得分,将其填入表1中,便于统计。相似度得分的计算方法可以有多种算法。可选地,与正文的相似度越高,与正文的相似度得分越高,与正文的相似度得分位于大于等于0分且小于等于100分的数值范围内。即,100分为与正文的最高的相似度得分,0分为最低的与正文的相似度得分。[0127]可选地,在s140中,计算待抽取网页中每一个非噪声节点中的文本内容和待抽取网页的原始文本内容的相似度得分,可以等于比较待抽取网页中每一个非噪声节点中的文本内容和待抽取网页的原始文本内容的重合度。例如,待抽取网页a中的非噪声节点1中的文本内容和待抽取网页的原始文本内容的重合度为98%,那么待抽取网页a中的非噪声节点1与待抽取网页的原始文本内容的相似度得分为98分。与待抽取网页的原始文本内容的相似度可以简称为与正文的相似度得分,便于后续表格统计。[0128]表1中的每一行数据代表一篇网页中的一个非噪声节点的所有特征指标和与正文的相似度得分,前8列是8个特征指标,最后1列是与正文的相似度得分。[0129]例如,表1的第1行是网页a中非噪声节点1的所有特征指标和与正文的相似度得分,表1的第2行是网页a中非噪声节点2的所有特征指标和与正文的相似度得分,表1的第3行是网页a中非噪声节点3的所有特征指标和与正文的相似度得分,网页a共有3个非噪声节点,因此表1的第1行至第3行数据就可以展现网页a的全貌。[0130]可选地,我们采用已标注的1045个站点的1122529个网页作为待抽取网页生成表1。[0131]n取1122529,所有的待抽取网页源自于1045个站点是因为我们要保证表1整体数据的通用性足够大。[0132]在本技术的一实施例中,s170包括:[0133]s171,取模型数据集中70%的数据作为训练集,取模型数据集中30%的数据作为验证集。[0134]s172,构建正文节点验证模型,利用训练集对正文节点验证模型进行训练,得到训练后的正文节点验证模型。[0135]s173,利用验证集对训练后的正文节点验证模型进行验证,判断验证结果是否合格。[0136]s174,若验证结果合格,则执行后续s210选取一个待验证网页的步骤。[0137]具体地,正文节点验证模型可以为lightgbm回归模型,这是一种机器学习模型,采用lgbmregressor算法,用于目标回归。[0138]在本技术的一实施例中,在s250之后,所述网页正文抽取方法还包括:[0139]s310,计算正文节点匹配分数最高的非噪声节点的文档主体元素和待验证网页正文文本的重合度。[0140]s320,判断正文节点匹配分数最高的非噪声节点的文档主体元素和待验证网页正文文本的重合度是否大于或等于预设重合度。[0141]s331,若正文节点匹配分数最高的非噪声节点的文档主体元素和待验证网页正文文本的重合度大于或等于预设重合度,则将正文节点匹配分数最高的非噪声节点的文档主体元素赋予第一标签。[0142]s332,将赋予第一标签的文档主体元素存储于数据库服务器的第一数据存储单元。[0143]在本技术的一实施例中,在s250之后,所述网页正文抽取方法还包括:[0144]s341,若正文节点匹配分数最高的非噪声节点的文档主体元素和待验证网页正文文本的重合度小于预设重合度,则将正文节点匹配分数最高的非噪声节点的文档主体元素赋予第二标签。[0145]s342,将赋予第二标签的文档主体元素存储于数据库服务器的第二数据存储单元。[0146]具体地,文档主体元素即body_html。[0147]这两个实施例使用的是二分类法,第一标签记为1,第二标签记为0,第一标签代表抽取结果合格,第二标签代表抽取结果不合格。本实施例对于抽取正确的body_html打上标签1,抽取错误的body_html打上标签0,构建正文抽取质量优劣二分类模型语料。本实施例的作用是用于存储抽取结果,方便后续对正文节点验证模型进行计算结果准确性调整的追溯。[0148]可选地,预设重合度可以设置为95%。[0149]本技术还提供一种网页正文抽取系统。[0150]如图2所示,在本技术的一实施例中,所述网页正文抽取系统包括网页正文抽取终端100和数据库服务器200。[0151]网页正文抽取终端100用于执行如前述内容提及的网页正文抽取方法。数据库服务器200与网页正文抽取终端100通信连接。所述数据库服务器200包括第一数据存储单元210和第二数据存储单元220。[0152]以上所述实施例的各技术特征可以进行任意的组合,各方法步骤也并不做执行顺序的限制,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。[0153]以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。当前第1页12当前第1页12