CN106528068A - 一种网页内容重构方法和系统 - Google Patents
一种网页内容重构方法和系统 Download PDFInfo
- Publication number
- CN106528068A CN106528068A CN201510586254.0A CN201510586254A CN106528068A CN 106528068 A CN106528068 A CN 106528068A CN 201510586254 A CN201510586254 A CN 201510586254A CN 106528068 A CN106528068 A CN 106528068A
- Authority
- CN
- China
- Prior art keywords
- node
- content
- sequence
- web page
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种网页内容重构方法和系统。该方法包括以下步骤:获取网页源码;遍历网页节点,以建立与网页结构一致的DOM树内存结构模型;解析建立的DOM树内存结构模型,记录节点的信息元素,并对节点赋予唯一的序列;对节点进行简化处理,以形成新对象;根据序列对新对象的节点及其内容进行提取;将提取的内容进行重新组合,并关联新的样式表,以形成新的网页内容。由于筛除了样式、广告、外链等与主体内容无关的节点,对网页结构进行了简化,能够迅速定位到重要信息,减少对页面内容的大范围遍历,有利于网页数据的采集。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种网页内容重构方法和系统。
背景技术
随着互联网的发展,网页数据采集和内容重构成为一项热门技术,可以广泛用于搜索引擎、网站移动化、数据分析以及一些内容聚合的移动互联网应用。
而网页的主要开发语言中,HTML和CSS属于标记性语言,JavaScript属于弱类型的直译式脚本语言,这些类型的开发语言具有灵活和兼容性强的特点,但如果要解析它们,却增加了开发的难度。
目前常用的网页分析方法是将网页源码解析为DOM树对象,通过对树节点的分析和遍历,来获取主体内容。然而,网页源码中除了网页关键内容外,还包括大量的样式数据、网页外链,以及页面广告,这些内容穿插在DOM树节点中,为网页数据采集带来了很大的困难。
发明内容
本发明要解决的技术问题是现有网页分析方法中网页源码中包含与主体内容无关的节点,为网页数据采集带来了很大的困难。
根据本发明一方面,提出网页内容重构方法,包括:
获取网页源码;
遍历网页节点,以建立与网页结构一致的DOM树内存结构模型;
解析建立的DOM树内存结构模型,记录节点的信息元素,并对节点赋予唯一的序列;
对节点进行简化处理,以形成新对象;
根据序列对新对象的节点及其内容进行提取;
将提取的内容进行重新组合,并关联新的样式表,以形成新的网页内容。
在一个实施例,遍历网页节点,以建立与网页结构一致的DOM树内存结构模型的步骤包括:
通过对网页页面进行流式分析,遍历网页节点;
对各个节点进行记录,并建立与网页结构一致的DOM树内存结构模型。
在一个实施例,解析建立的DOM树内存结构模型,记录节点的信息元素,并对各节点赋予唯一的序列的步骤包括:
解析建立的DOM树内存结构模型,判断各节点的信息元素是否属于三元素;
若该节点的信息元素属于三元素,则记录该节点的信息元素;
若该节点的信息元素不属于三元素,则删除该节点;
对记录信息元素的节点赋予唯一的序列;
其中,三元素包括纯文字信息、图片信息和超链接地址。
在一个实施例,对节点进行简化处理,以形成新对象的步骤包括:
判断记录信息元素的各节点是否属于四信息;
若该节点属于四信息,则该节点为有效节点;
若该节点不属于四信息,则该节点属于无效节点;
抽取所有效节点,将有效节点保存在对象化序列中,并将有效节点的序列复制到相应的对象化序列中以形成新对象;
其中,四信息包括纯文字、纯图片、带超链接文字和带超链接图片。
在一个实施例,新对象的节点以JSON数据结构进行保存。
在一个实施例,根据序列对新对象的节点及其内容进行提取的步骤包括:
从简化后的节点末端开始,依次选择节点序列由长到短的顺序为目标节点;
由目标节点向相应的父类节点逐级回溯;
分析相应的父类节点以及父类的其它子类节点的数据,直到遇到卡闸或根节点为止;
以序列为依据,按照从父类节点到子类节点的顺序对节点的内容进行提取,以提取所有的内容块及权重值。
在一个实施例,根据序列对新对象的节点及其内容进行提取的步骤还包括:
验证父类节点中的子类是否包含卡闸,若父类节点中任一子类节点包含卡闸,则该父类节点不能用于扩展,并记录卡闸的位置。
在一个实施例,根据序列对新对象的节点及其内容进行提取的步骤之后:
对所提取的所有内容块的内容权重进行比较;
若内容块中文字量超过阈值,则该内容块为页面的主要内容;
若内容块中图片量超过阈值,则该内容块为页面的主要内容。
根据本发明的另一方面,还提出一种网页内容重构系统,包括:
源码获取单元,用于获取网页源码;
建模单元,用于遍历网页节点,以建立与网页结构一致的DOM树内存结构模型;
记录单元,用于解析建立的DOM树内存结构模型,记录节点的信息元素,并对节点赋予唯一的序列;
对象化单元,用于对节点进行简化处理,以形成新对象;
提取单元,用于根据序列对新对象的节点及其内容进行提取;
重构单元,用于将提取的内容进行重新组合,并关联新的样式表,以形成新的网页内容。
在一个实施例,建模单元用于通过对网页页面进行流式分析,遍历网页节点,对各个节点进行记录,并建立与网页结构一致的DOM树内存结构模型。
在一个实施例,记录单元用于解析建立的DOM树内存结构模型,判断各节点的信息元素是否属于三元素,若该节点的信息元素属于三元素,则记录该节点的信息元素,若该节点的信息元素不属于三元素,则删除对节点,对记录信息元素的节点赋予唯一的序列;
其中,三元素包括纯文字信息、图片信息和超链接地址。
在一个实施例,对象化单元用于判断记录信息元素的各节点是否属于四信息,若该节点属于四信息,则该节点为有效节点,若该节点不属于四信息,则该节点属于无效节点,抽取所有效节点,将有效节点保存在对象化序列中,并将有效节点的序列复制到相应的对象化序列中以形成新对象;
其中,四信息包括纯文字、纯图片、带超链接文字和带超链接图片。
在一个实施例,保存单元,用于将新对象的节点以JSON数据结构进行保存。
在一个实施例,对象化单元用于从简化后的节点末端开始,依次选择节点序列由长到短的顺序为目标节点,由目标节点向相应的父类节点逐级回溯,分析相应的父类节点以及父类的其它子类节点的数据,直到遇到卡闸或根节点为止,以序列为依据,按照从父类节点到子类节点的顺序对节点的内容进行提取,以提取所有的内容块及权重值。
在一个实施例,对象化单元还用于验证父类节点中的子类是否包含卡闸,若父类节点中任一子类节点包含卡闸,则该父类节点不能用于扩展,并记录卡闸的位置。
在一个实施例,对象化单元还用于对所提取的所有内容块的内容权重进行比较,若内容块中文字量超过阈值,则该内容块为页面的主要内容,若内容块中图片量超过阈值,则该内容块为页面的主要内容。
与现有技术相比,本发明获取网页源码,遍历网页节点,以建立与网页结构一致的DOM树内存结构模型,解析建立的DOM树内存结构模型,记录节点的信息元素,并对节点赋予唯一的序列,对节点进行简化处理,以形成新对象,根据序列对新对象的节点及其内容进行提取,将提取的内容进行重新组合,并关联新的样式表,以形成新的网页内容。由于筛除了样式、广告、外链等与主体内容无关的节点,对网页结构进行了简化,能够迅速定位到重要信息,减少对页面内容的大范围遍历,有利于网页数据的采集。
进一步,由于本发明将JSON数据结构应用于网页内容重构,使得重构效率更高,更加灵活。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
构成说明书的一部分的附图描述了本发明的实施例,并且连同说明书一起用于解释本发明的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本发明,其中:
图1为本发明网页内容重构方法的一个实施例的流程示意图。
图2为本发明网页内容重构方法的一个具体实施例的流程示意图
图3为本发明节点简化前的示意图。
图4为本发明节点简化后的示意图。
图5为本发明简化后的网页结构示意图。
图6为本发明经过简化后的网页结构。
图7为本发明网页内容重构的总体描述结构示意图。
图8为本发明网页内容重构系统的一个实施例的结构示意图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
图1为本发明网页内容重构方法的一个实施例的流程示意图。该方法包括以下步骤:
在步骤110,获取网页源码。
其中,由终端APP层或服务器层到指定网页页面地址获取源代码,该源代码为有效的HTML标准语言体系。
在步骤120,遍历网页节点,以建立与网页结构一致的DOM树内存结构模型。
通过对网页页面进行流式分析,遍历网页节点,对各个节点进行记录,并建立与网页结构一致的DOM树内存结构模型。其中,本领域技术人员了解如何对网页页面进行流式分析,因此这里不展开描述。
在步骤130,解析建立的DOM树内存结构模型,记录节点的信息元素,并对节点赋予唯一的序列。
本发明提出了几个概念,例如,对页面上真正有意义的,能够作为区分点的只有三种基本元素,分别是:纯文字信息、图片信息、超链接地址,因此,定义三元素为纯文字信息、图片信息、超链接地址。该三元素主要用于页面源码建模时的属性记录字段。
本发明中,判断各节点的信息元素是否属于三元素,若该节点的信息元素属于三元素,则记录该节点的信息元素,若该节点的信息元素不属于三元素,则删除该节点,并对记录信息元素的节点赋予唯一的序列。
其中,序列可以命名为基因序列。基因序列是一种一维的数字序列号,在生成页面节点建模时,将各个节点的基因序列记录下来。同时定义了基因层级,每个节点都带有它自己的基因信息,可以代表该节点与父类节点的层级关系。如一级节点就有单阶基因值,二级节点就有二阶基因值,同理N级为N阶。
在步骤140,对节点进行简化处理,以形成新对象。
在三元素中可单独出现的有纯文字和图片;但不会单独出现超链接地址,超链接地址可以和文字及图片进行搭配;所以就衍生出四种信息类,分别是:纯文字、纯图片、带超链接文字、带超链接图片。所有网站的信息类内容都是由这四种基本类型组合成。因此,本发明通过四信息来对有效节点进行判断,并筛选掉无效节点。
例如,判断记录信息元素的各节点是否属于四信息;若该节点属于四信息,则该节点为有效节点;若该节点不属于四信息,则该节点属于无效节点;抽取所有效节点,将有效节点保存在对象化序列中,并将有效节点的序列复制到相应的对象化序列中以形成新对象。生成的新对象便于信息记录、数据判断以及结构调整排布等。
由于有对节点进行过滤(如去掉无信息类的节点)等过程,所以对象化序列中的新对象次序和页面节点次序会呈现出结构不一样的情况。因此,此时的新对象的节点顺序有别于建模时的节点顺序。
另外,本发明生成的新对象的节点以JSON数据结构进行保存。JSON数据结构虽然破坏了原DOM树的父子节点关系,但JSON对象结构更便于全文档的检索和内容提取。
在步骤150,根据序列对新对象的节点及其内容进行提取。
由于是在页面解析建模时就已经将节点基因生成好,所以基因序列不会受到后面的对象化的影响,基因里面的信息代表了原生页面的组合规律。不管经过对象化(简化)后的次序如何的改变,只要通过排序出各个对象化中原节点的基因排列,是可以还原出原来的页面节点次序。本发明将基因序列里面的信息定义为基因特征。
在该步骤中,从简化后的节点末端开始,依次选择节点序列由长到短的顺序为目标节点。由于节点末端都是三元素,因此从末端节点开始选择,根据文字部分进行判断,所以选择的对象是带有文字的节点,并且选择有先后顺序,例如,先从基因序列长度最长的节点作为目标节点。
由目标节点向相应的父类节点逐级回溯。其中,由选择好的节点逐步往父类进行关联,并且分析关联父类的数据,比如有无包含有效的三元素。
然后,分析相应的父类节点以及父类的其它子类节点的数据,直到遇到卡闸或根节点为止。此步骤为父类的逆向验证。目的是为了验证该父类中的子类是否含有卡闸,只要该父类中其中一个子类属于卡闸,则表示该父类不能用于这一次的扩展。
其中,卡闸也称为内容断层,可理解为过滤条件,通常是某些连续带超链接的列表类;文章或者主题内容遇到这种列表都会被中断。例如,通常在一个信息网页中,会提取到很多文字段和图片,只有其中某一部分的文字和图片才是该页面的主体内容;其它的都是非主体内容,如广告描述、友情链接、广告图片等。因此,需要通过一些方法加以区分辨别,这里利用“卡闸”的方式加以区分。“卡闸”从字面上理解是关卡、闸门的意思,在源页面内容中,也就是通过多个卡闸将内容段切断并加以区分开来。卡闸通常是连续带有多个超链接或者导航性质等的列表项,为了增加判断的维度,也可以考虑设置方式,比如设置某些过滤用的关键字等,一旦文字中出现这些关键字则视作卡闸。
在父类的逆向验证中,需要一个缓冲区对卡闸的位置进行记录,防止别的末端子节点在提取时,还要对相同的卡闸做判断,以提高整个过程的效率。
由一个目标节点可以提取页面中一块完整的内容及其权重值,遍历所有目标节点,可以获取所有的内容块及权重值。
完成对所有末端节点的提取后,对所提取的节点进行内容权重的比较。比较结果有以下几种:
1)遍历所有的内容块,并对文字信息量的多少进行比较,文字量较多的内容则可定为该页面的主要内容。
2)若每个内容块的文字描述比较少甚至都是图片,而某些内容块图片数量较多,则以图片最多的内容块作为主要内容。
3)若没有内容块,这情况也普遍存在,那就说明页面上可能全是列表、导航或者无法解析的控件和脚本等;如JavaScript,AdobeFlash等,该页面可判断为无主要内容。
4)若内容块很少,通常就1-3个,而且每个内容块就一张图片,或者是简简单单的几个字等;有可能该页面就是只有页面头的图片和页面尾的一些版权介绍,其他都是导航和列表等。该情况下可取得内容,但由于页面无重点,因此内容会意义不大。可通过以下方法进行有效过滤:A)增加过滤扩展,如添加过筛选的滤字眼。B)调整父类层级提取底线等级进行限制,通常该内容都处于很底层的父类节点中,将底线等级提高可有效过滤。
在步骤160,将提取的内容进行重新组合,并关联新的样式表,以形成新的网页内容。
例如,将不同源网站的内容进行重新组合,生成内容块之间的层级和位置关系并关联新的样式表,将内容块和样式表进行关联,生成目标网页或移动App内容框架,为保证目标网站或移动App的内容的同步更新,在内容框架中,具体内容实时向源网站获取。
在本发明的实施例中,获取网页源码,遍历网页节点,以建立与网页结构一致的DOM树内存结构模型,解析建立的DOM树内存结构模型,记录节点的信息元素,并对节点赋予唯一的序列,对节点进行简化处理,以形成新对象,根据序列对新对象的节点及其内容进行提取,将提取的内容进行重新组合,并关联新的样式表,以形成新的网页内容。由于筛除了样式、广告、外链等与主体内容无关的节点,对网页结构进行了简化,能够迅速定位到重要信息,减少对页面内容的大范围遍历,有利于网页数据的采集。
进一步,由于本发明创造性地用JSON对象来记录具有嵌套关系的网页节点,此数据结构打破了DOM树的数据结构,为后续进行内容块搜索提供了更加加速和灵活的方式。
另外,在主体内容提取过程中,采用了从叶子节点开始回溯的算法,从基因值最长的节点开始提取主体内容,更容易准确定位到主体内容。
下面以一个具体实施例对本发明进行介绍,如图2所示:
在步骤201,获取网页源码。
网页的源文件如下所示:
在步骤202,遍历网页节点,以建立与网页结构一致的DOM树内存结构模型。
通过HTML的规则方式进行逐层解析,基本包括了标签,标签属性,及标签下的内容。标签及标签下的内容视为节点,而标签内的属性,则视为节点中的信息。如上面源码中的<div>、<a>、<img>视为一个单独的节点。
文字“参与人数”没有标签,是属于纯文本,不过也视为一个节点,由于纯文本在<a>标签内部,可以看做是在<a>节点里面的子节点。
在步骤203,解析建立的DOM树内存结构模型,判断各节点的信息元素是否属于三元素。若是,则执行步骤204,否则,执行步骤205。
在步骤204,记录该节点的信息元素,然后执行步骤206。
对于href、src是属于前面提到的三元素,所以要相应的作为节点中的信息,记录在每个节点内。
在步骤205,删除该节点。以后不再执行本实施例的其它步骤。
对于alt、class等属性并不属于三元素的范畴,所以不必考虑,作为噪音信息筛除。
在步骤206,对记录信息元素的节点赋予唯一的基因序列。
基因序列的记录就是将属于自己的所有父节点的数列记录了下来,并生成自己的基因序列,该序列可以是有序数值,也可以是随机数值,但要确保唯一性。
这样就可以将整个页面节点化,形成节点网,这个节点网结构和页面源码结构相对应,当然也包括无必要或无意义的节点。因此,还必须对节点进行简化处理,如步骤207-209。
其中,简化前的示意图如图3所示,简化后的示意图如图4所示。
在步骤207,过滤无效层。将类似Div、Table、ul、ol、span、font等只是针对三元素进行修饰的、而对三元素内容无影响的标签进行过滤;而且过滤要考虑到同层性质的过滤,比如某层还嵌有多余的层,且该层已经有基本的三元素,则该层不能过滤掉。
在步骤208,根据内容层级进行重新布局。即将无效层过滤之后的层级调整。还可以执行节点数据及扩展数据的封装等。除了text、href、src等基本元素外,还封装了hasChild、CtrlId、SymContent等扩展元素以用于后续的业务处理。
从图4中可以看出,简化前的节点html、body、div属于无效层,因此被筛选掉了,此时只剩余两个节点。
在步骤209,简化后的数据结构以JSON对象保存。用JSON对象来记录具有嵌套关系的网页节点,此数据结构打破了DOM树的数据结构,为后续进行内容块搜索提供了更加加速和灵活的方式。
简化后的节点数据结构如图5所示。
其中,简化后对象的次序和原页面并不对应,只是为了方便数据操作及查询之用,也可以用作专门的脚本输出,供第三方使用。
从简化后的节点数据结构看出,有text、src这两个字段属性,分别用于记录文字和图片这两个元素信息。而其它的如hasChild、CtrlId、SymContent等均属于扩展信息,视具体实际需要进行扩展。
另外,从表中可以看到有inherit的字段,从字面上理解是就是继承因子,里面记录的就是之前说到的一维基因序列。该序列是每个节点都有,只是长度不一样。例如,text字段的基因序列有五个数值,最后那个就是该节点的基因值,前面那四个记录了父辈的基因信息。从基因序列的结构可以看出,虽然对象化后的结构发生了改变,但从基因序列还是可以回溯到原来的父亲节点。
在步骤210,选择有效叶子节点。图6为经过简化后的网页结构。以此图为例,从末端节点开始,判断的依据是基因值最长的文字优先。从图例可以看到,“文字+地址(ABGLM)”节点符合要求,作为判断的第一个叶子节点,并标识为有效。
在步骤211,提取父类同层级节点。
在步骤212,父类节点的逆向回溯。由当前节点向父类逐级回溯,分析关联父类以及父类的其他子类的数据,直到遇到卡匣或根节点。在上图中,由节点“ABGLM”开始回溯,可找到有效节点ABEI、ABEH、ABFK、ABFJ以及ABGL,遇到节点3(AC),此回溯停止。
在步骤213,判断是否存在卡闸,若存在,则执行步骤210,否则执行步骤214。
在步骤214,以基因序列为依据,提取网页内容。按照从父节点到子节点,从前到后到顺序对内容进行提取。以图5为例,组合后的内容顺序为ABEI+ABEH+ABFK+ABFJ+ABGL+ABGLM,此提取的数据可认为是网页的一个内容块。
在步骤215,判断是否提取剩余未提取的末端节点。若提取,则执行步骤210,否则执行步骤216。
在步骤216,对所提取的所有内容块的内容权重进行比较。
在步骤217,将提取的内容进行重新组合,并关联新的样式表,以形成新的网页内容。
本发明网页内容重构的总体描述可以如图7所示:
(1)为网站源码。
(2)为通过去噪简化后的网页结构,其中网页结构可以采用JSON对象存储。
(3)为提取的一个内容块。
(4)为多个源网页以及人工参与配置后组装的内容块。
(5)为通过样式关联生成的目标网页或移动APP。
为保证目标网站或移动App的内容的同步更新,在内容框架中,具体内容实时向源网站获取。
在该实施例中,将网页中无效层级关系以及样式、广告、外链等“噪音”信息进行筛除。简化了网页结构,加快了后续内容提取。以JSON对象来记录具有嵌套关系的网页节点,此数据结构打破了DOM树的数据结构,为后续进行内容块搜索提供了更加加速和灵活的方式。另外,采用了从叶子节点开始回溯的算法,从基因值最长的节点开始提取主体内容,更容易准确定位到主体内容。将不同来源的内容块进行重组,有利于网页数据的采集。
图8为本发明网页内容重构系统的一个实施例的结构示意图。该系统包括:源码获取单元810、建模单元820、记录单元830、对象化单元840、提取单元850和重构单元860。其中:
源码获取单元810,用于获取网页源码。
其中,由终端APP层或服务器层到指定网页页面地址获取源代码,该源代码为有效的HTML标准语言体系。
建模单元820,用于遍历网页节点,以建立与网页结构一致的DOM树内存结构模型。
建模单元820通过对网页页面进行流式分析,遍历网页节点,对各个节点进行记录,并建立与网页结构一致的DOM树内存结构模型。其中,本领域技术人员了解如何对网页页面进行流式分析,因此这里不展开描述。
记录单元830,用于解析建立的DOM树内存结构模型,记录节点的信息元素,并对节点赋予唯一的序列。
本发明提出了几个概念,例如,对页面上真正有意义的,能够作为区分点的只有三种基本元素,分别是:纯文字信息、图片信息、超链接地址,因此,定义三元素为纯文字信息、图片信息、超链接地址。该三元素主要用于页面源码建模时的属性记录字段。
本发明中,记录单元830判断各节点的信息元素是否属于三元素,若该节点的信息元素属于三元素,则记录该节点的信息元素,若该节点的信息元素不属于三元素,则删除该节点,并对记录信息元素的节点赋予唯一的序列。
其中,序列可以命名为基因序列。基因序列是一种一维的数字序列号,在生成页面节点建模时,将各个节点的基因序列记录下来。同时定义了基因层级,每个节点都带有它自己的基因信息,可以代表该节点与父类节点的层级关系。如一级节点就有单阶基因值,二级节点就有二阶基因值,同理N级为N阶。
对象化单元840,用于对节点进行简化处理,以形成新对象。
在三元素中可单独出现的有纯文字和图片;但不会单独出现超链接地址,超链接地址可以和文字及图片进行搭配;所以就衍生出四种信息类,分别是:纯文字、纯图片、带超链接文字、带超链接图片。所有网站的信息类内容都是由这四种基本类型组合成。因此,本发明通过四信息来对有效节点进行判断,并筛选掉无效节点。
例如,对象化单元840判断记录信息元素的各节点是否属于四信息;若该节点属于四信息,则该节点为有效节点;若该节点不属于四信息,则该节点属于无效节点;抽取所有效节点,将有效节点保存在对象化序列中,并将有效节点的序列复制到相应的对象化序列中以形成新对象。生成的新对象便于信息记录、数据判断以及结构调整排布等。
由于有对节点进行过滤(如去掉无信息类的节点)等过程,所以对象化序列中的新对象次序和页面节点次序会呈现出结构不一样的情况。因此,此时的新对象的节点顺序有别于建模时的节点顺序。
另外,本发明还包括保存单元,用于将生成的新对象的节点以JSON数据结构进行保存,该保存单元未标识在附图中。JSON数据结构虽然破坏了原DOM树的父子节点关系,但JSON对象结构更便于全文档的检索和内容提取。
提取单元850,用于根据序列对新对象的节点及其内容进行提取。
由于是在页面解析建模时就已经将节点基因生成好,所以基因序列不会受到后面的对象化的影响,基因里面的信息代表了原生页面的组合规律。不管经过对象化(简化)后的次序如何的改变,只要通过排序出各个对象化中原节点的基因排列,是可以还原出原来的页面节点次序。本发明将基因序列里面的信息定义为基因特征。
提取单元850从简化后的节点末端开始,依次选择节点序列由长到短的顺序为目标节点。由于节点末端都是三元素,因此从末端节点开始选择,根据文字部分进行判断,所以选择的对象是带有文字的节点,并且选择有先后顺序,例如,先从基因序列长度最长的节点作为目标节点。
由目标节点向相应的父类节点逐级回溯。其中,由选择好的节点逐步往父类进行关联,并且分析关联父类的数据,比如有无包含有效的三元素。
然后,分析相应的父类节点以及父类的其它子类节点的数据,直到遇到卡闸或根节点为止。此步骤为父类的逆向验证。目的是为了验证该父类中的子类是否含有卡闸,只要该父类中其中一个子类属于卡闸,则表示该父类不能用于这一次的扩展。
其中,卡闸也称为内容断层,可理解为过滤条件,通常是某些连续带超链接的列表类;文章或者主题内容遇到这种列表都会被中断。例如,通常在一个信息网页中,会提取到很多文字段和图片,只有其中某一部分的文字和图片才是该页面的主体内容;其它的都是非主体内容,如广告描述、友情链接、广告图片等。因此,需要通过一些方法加以区分辨别,这里利用“卡闸”的方式加以区分。“卡闸”从字面上理解是关卡、闸门的意思,在源页面内容中,也就是通过多个卡闸将内容段切断并加以区分开来。卡闸通常是连续带有多个超链接或者导航性质等的列表项,为了增加判断的维度,也可以考虑设置方式,比如设置某些过滤用的关键字等,一旦文字中出现这些关键字则视作卡闸。
在父类的逆向验证中,需要一个缓冲区对卡闸的位置进行记录,防止别的末端子节点在提取时,还要对相同的卡闸做判断,以提高整个过程的效率。
由一个目标节点可以提取页面中一块完整的内容及其权重值,遍历所有目标节点,可以获取所有的内容块及权重值。
完成对所有末端节点的提取后,对所提取的节点进行内容权重的比较。比较结果有以下几种:
1)遍历所有的内容块,并对文字信息量的多少进行比较,文字量较多的内容则可定为该页面的主要内容。
2)若每个内容块的文字描述比较少甚至都是图片,而某些内容块图片数量较多,则以图片最多的内容块作为主要内容。
3)若没有内容块,这情况也普遍存在,那就说明页面上可能全是列表、导航或者无法解析的控件和脚本等;如JavaScript,AdobeFlash等,该页面可判断为无主要内容。
4)若内容块很少,通常就1-3个,而且每个内容块就一张图片,或者是简简单单的几个字等;有可能该页面就是只有页面头的图片和页面尾的一些版权介绍,其他都是导航和列表等。该情况下可取得内容,但由于页面无重点,因此内容会意义不大。可通过以下方法进行有效过滤:A)增加过滤扩展,如添加过筛选的滤字眼。B)调整父类层级提取底线等级进行限制,通常该内容都处于很底层的父类节点中,将底线等级提高可有效过滤。
重构单元860,用于将提取的内容进行重新组合,并关联新的样式表,以形成新的网页内容。
例如,将不同源网站的内容进行重新组合,生成内容块之间的层级和位置关系并关联新的样式表,将内容块和样式表进行关联,生成目标网页或移动App内容框架,为保证目标网站或移动App的内容的同步更新,在内容框架中,具体内容实时向源网站获取。
在本发明的实施例中,获取网页源码,遍历网页节点,以建立与网页结构一致的DOM树内存结构模型,解析建立的DOM树内存结构模型,记录节点的信息元素,并对节点赋予唯一的序列,对节点进行简化处理,以形成新对象,根据序列对新对象的节点及其内容进行提取,将提取的内容进行重新组合,并关联新的样式表,以形成新的网页内容。由于筛除了样式、广告、外链等与主体内容无关的节点,对网页结构进行了简化,能够迅速定位到重要信息,减少对页面内容的大范围遍历,有利于网页数据的采集。
进一步,由于本发明创造性地用JSON对象来记录具有嵌套关系的网页节点,此数据结构打破了DOM树的数据结构,为后续进行内容块搜索提供了更加加速和灵活的方式。
另外,在主体内容提取过程中,采用了从叶子节点开始回溯的算法,从基因值最长的节点开始提取主体内容,更容易准确定位到主体内容。
至此,已经详细描述了本发明。为了避免遮蔽本发明的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。
可能以许多方式来实现本发明的方法以及装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法以及装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。
虽然已经通过示例对本发明的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本发明的范围。本领域的技术人员应该理解,可在不脱离本发明的范围和精神的情况下,对以上实施例进行修改。本发明的范围由所附权利要求来限定。
Claims (16)
1.一种网页内容重构方法,其特征在于,包括:
获取网页源码;
遍历网页节点,以建立与网页结构一致的DOM树内存结构模型;
解析建立的DOM树内存结构模型,记录节点的信息元素,并对节点赋予唯一的序列;
对节点进行简化处理,以形成新对象;
根据序列对新对象的节点及其内容进行提取;
将提取的内容进行重新组合,并关联新的样式表,以形成新的网页内容。
2.根据权利要求1所述的方法,其特征在于,
遍历网页节点,以建立与网页结构一致的DOM树内存结构模型的步骤包括:
通过对网页页面进行流式分析,遍历网页节点;
对各个节点进行记录,并建立与网页结构一致的DOM树内存结构模型。
3.根据权利要求1所述的方法,其特征在于,
解析建立的DOM树内存结构模型,记录节点的信息元素,并对各节点赋予唯一的序列的步骤包括:
解析建立的DOM树内存结构模型,判断各节点的信息元素是否属于三元素;
若该节点的信息元素属于三元素,则记录该节点的信息元素;
若该节点的信息元素不属于三元素,则删除该节点;
对记录信息元素的节点赋予唯一的序列;
其中,三元素包括纯文字信息、图片信息和超链接地址。
4.根据权利要求1所述的方法,其特征在于,
对节点进行简化处理,以形成新对象的步骤包括:
判断记录信息元素的各节点是否属于四信息;
若该节点属于四信息,则该节点为有效节点;
若该节点不属于四信息,则该节点属于无效节点;
抽取所有效节点,将有效节点保存在对象化序列中,并将有效节点的序列复制到相应的对象化序列中以形成新对象;
其中,四信息包括纯文字、纯图片、带超链接文字和带超链接图片。
5.根据权利要求4所述的方法,其特征在于,
新对象的节点以JSON数据结构进行保存。
6.根据权利要求1所述的方法,其特征在于,
根据序列对新对象的节点及其内容进行提取的步骤包括:
从简化后的节点末端开始,依次选择节点序列由长到短的顺序为目标节点;
由目标节点向相应的父类节点逐级回溯;
分析相应的父类节点以及父类的其它子类节点的数据,直到遇到卡闸或根节点为止;
以序列为依据,按照从父类节点到子类节点的顺序对节点的内容进行提取,以提取所有的内容块及权重值。
7.根据权利要求6所述的方法,其特征在于,
根据序列对新对象的节点及其内容进行提取的步骤还包括:
验证父类节点中的子类是否包含卡闸,若父类节点中任一子类节点包含卡闸,则该父类节点不能用于扩展,并记录卡闸的位置。
8.根据权利要求7所述的方法,其特征在于,
根据序列对新对象的节点及其内容进行提取的步骤之后:
对所提取的所有内容块的内容权重进行比较;
若内容块中文字量超过阈值,则该内容块为页面的主要内容;
若内容块中图片量超过阈值,则该内容块为页面的主要内容。
9.一种网页内容重构系统,其特征在于,包括:
源码获取单元,用于获取网页源码;
建模单元,用于遍历网页节点,以建立与网页结构一致的DOM树内存结构模型;
记录单元,用于解析建立的DOM树内存结构模型,记录节点的信息元素,并对节点赋予唯一的序列;
对象化单元,用于对节点进行简化处理,以形成新对象;
提取单元,用于根据序列对新对象的节点及其内容进行提取;
重构单元,用于将提取的内容进行重新组合,并关联新的样式表,以形成新的网页内容。
10.根据权利要求9所述的系统,其特征在于,
建模单元用于通过对网页页面进行流式分析,遍历网页节点,对各个节点进行记录,并建立与网页结构一致的DOM树内存结构模型。
11.根据权利要求9所述的系统,其特征在于,
记录单元用于解析建立的DOM树内存结构模型,判断各节点的信息元素是否属于三元素,若该节点的信息元素属于三元素,则记录该节点的信息元素,若该节点的信息元素不属于三元素,则删除对节点,对记录信息元素的节点赋予唯一的序列;
其中,三元素包括纯文字信息、图片信息和超链接地址。
12.根据权利要求9所述的系统,其特征在于,
对象化单元用于判断记录信息元素的各节点是否属于四信息,若该节点属于四信息,则该节点为有效节点,若该节点不属于四信息,则该节点属于无效节点,抽取所有效节点,将有效节点保存在对象化序列中,并将有效节点的序列复制到相应的对象化序列中以形成新对象;
其中,四信息包括纯文字、纯图片、带超链接文字和带超链接图片。
13.根据权利要求10所述的系统,其特征在于,还包括:
保存单元,用于将新对象的节点以JSON数据结构进行保存。
14.根据权利要求9所述的系统,其特征在于,
对象化单元用于从简化后的节点末端开始,依次选择节点序列由长到短的顺序为目标节点,由目标节点向相应的父类节点逐级回溯,分析相应的父类节点以及父类的其它子类节点的数据,直到遇到卡闸或根节点为止,以序列为依据,按照从父类节点到子类节点的顺序对节点的内容进行提取,以提取所有的内容块及权重值。
15.根据权利要求14所述的系统,其特征在于,
对象化单元还用于验证父类节点中的子类是否包含卡闸,若父类节点中任一子类节点包含卡闸,则该父类节点不能用于扩展,并记录卡闸的位置。
16.根据权利要求15所述的系统,其特征在于,
对象化单元还用于对所提取的所有内容块的内容权重进行比较,若内容块中文字量超过阈值,则该内容块为页面的主要内容,若内容块中图片量超过阈值,则该内容块为页面的主要内容。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510586254.0A CN106528068A (zh) | 2015-09-15 | 2015-09-15 | 一种网页内容重构方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510586254.0A CN106528068A (zh) | 2015-09-15 | 2015-09-15 | 一种网页内容重构方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106528068A true CN106528068A (zh) | 2017-03-22 |
Family
ID=58348619
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510586254.0A Pending CN106528068A (zh) | 2015-09-15 | 2015-09-15 | 一种网页内容重构方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106528068A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108363602A (zh) * | 2018-01-23 | 2018-08-03 | 平安普惠企业管理有限公司 | 智能ui界面布局方法、装置、终端设备及存储介质 |
CN108388466A (zh) * | 2018-03-16 | 2018-08-10 | 北京小度信息科技有限公司 | 信息展示方法及装置 |
CN108446136A (zh) * | 2018-03-22 | 2018-08-24 | 北京焦点新干线信息技术有限公司 | 一种元素代码的提取方法及系统 |
CN109634660A (zh) * | 2018-10-16 | 2019-04-16 | 深圳壹账通智能科技有限公司 | 程序结构可视化方法、设备、存储介质及装置 |
CN114528811A (zh) * | 2022-01-21 | 2022-05-24 | 北京麦克斯泰科技有限公司 | 文章内容抽取方法、装置、设备及存储介质 |
WO2024051439A1 (zh) * | 2022-09-08 | 2024-03-14 | 北京有竹居网络技术有限公司 | 网页生成方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101727498A (zh) * | 2010-01-15 | 2010-06-09 | 西安交通大学 | 一种基于web结构的网页信息自动提取方法 |
CN101872350A (zh) * | 2009-04-24 | 2010-10-27 | 富士通株式会社 | 网页正文抽取方法和装置 |
CN101944094A (zh) * | 2009-07-06 | 2011-01-12 | 富士通株式会社 | 网页信息提取方法和装置 |
-
2015
- 2015-09-15 CN CN201510586254.0A patent/CN106528068A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101872350A (zh) * | 2009-04-24 | 2010-10-27 | 富士通株式会社 | 网页正文抽取方法和装置 |
CN101944094A (zh) * | 2009-07-06 | 2011-01-12 | 富士通株式会社 | 网页信息提取方法和装置 |
CN101727498A (zh) * | 2010-01-15 | 2010-06-09 | 西安交通大学 | 一种基于web结构的网页信息自动提取方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108363602A (zh) * | 2018-01-23 | 2018-08-03 | 平安普惠企业管理有限公司 | 智能ui界面布局方法、装置、终端设备及存储介质 |
CN108363602B (zh) * | 2018-01-23 | 2022-04-19 | 平安普惠企业管理有限公司 | 智能ui界面布局方法、装置、终端设备及存储介质 |
CN108388466A (zh) * | 2018-03-16 | 2018-08-10 | 北京小度信息科技有限公司 | 信息展示方法及装置 |
CN108388466B (zh) * | 2018-03-16 | 2021-07-13 | 北京星选科技有限公司 | 信息展示方法及装置 |
CN108446136A (zh) * | 2018-03-22 | 2018-08-24 | 北京焦点新干线信息技术有限公司 | 一种元素代码的提取方法及系统 |
CN108446136B (zh) * | 2018-03-22 | 2021-10-15 | 北京焦点新干线信息技术有限公司 | 一种元素代码的提取方法及系统 |
CN109634660A (zh) * | 2018-10-16 | 2019-04-16 | 深圳壹账通智能科技有限公司 | 程序结构可视化方法、设备、存储介质及装置 |
CN114528811A (zh) * | 2022-01-21 | 2022-05-24 | 北京麦克斯泰科技有限公司 | 文章内容抽取方法、装置、设备及存储介质 |
CN114528811B (zh) * | 2022-01-21 | 2022-09-02 | 北京麦克斯泰科技有限公司 | 文章内容抽取方法、装置、设备及存储介质 |
WO2024051439A1 (zh) * | 2022-09-08 | 2024-03-14 | 北京有竹居网络技术有限公司 | 网页生成方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103955529B (zh) | 一种互联网信息搜索聚合呈现方法 | |
CN106528068A (zh) | 一种网页内容重构方法和系统 | |
CN103544176B (zh) | 用于生成多个页面所对应的页面结构模板的方法和设备 | |
CN103390051B (zh) | 一种基于微博数据的话题发现与追踪方法 | |
CN107578292B (zh) | 一种用户画像构建系统 | |
CN103023714B (zh) | 基于网络话题的活跃度与集群结构分析系统及方法 | |
CN104268148B (zh) | 一种基于时间串的论坛页面信息自动抽取方法及系统 | |
CN104331438B (zh) | 对小说网页内容选择性抽取方法和装置 | |
CN101727498A (zh) | 一种基于web结构的网页信息自动提取方法 | |
CN108197197A (zh) | 实体描述型标签挖掘方法、装置及终端设备 | |
CN106503211A (zh) | 面向信息发布类网站的移动版自动生成的方法 | |
CN106557565A (zh) | 一种基于网页聚类的正文信息提取方法 | |
CN110134845A (zh) | 项目舆情监控方法、装置、计算机设备及存储介质 | |
CN105005616B (zh) | 基于文本图片特征交互扩充的文本图解方法及系统 | |
CN104598536B (zh) | 一种分布式网络信息结构化处理方法 | |
CN103617192B (zh) | 一种数据对象的聚类方法和装置 | |
CN103064966B (zh) | 一种从单记录网页中抽取规律噪音的方法 | |
CN110222251A (zh) | 一种基于网页分割和搜索算法的服务包装方法 | |
US8239425B1 (en) | Isolating desired content, metadata, or both from social media | |
Ujwal et al. | Classification-based adaptive web scraper | |
CN106547895A (zh) | 一种网页信息的提取方法及装置 | |
CN108959204A (zh) | 互联网金融项目信息抽取方法和系统 | |
Chu et al. | Automatic data extraction of websites using data path matching and alignment | |
Dutta et al. | Structural analysis and regular expressions based noise elimination from web pages for web content mining | |
CN105653567A (zh) | 一种文本序列数据中快速查找特征字符串的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170322 |