CN103744987A - 基于dom树匹配的视频网站媒资聚合方法和系统 - Google Patents
基于dom树匹配的视频网站媒资聚合方法和系统 Download PDFInfo
- Publication number
- CN103744987A CN103744987A CN201410026230.5A CN201410026230A CN103744987A CN 103744987 A CN103744987 A CN 103744987A CN 201410026230 A CN201410026230 A CN 201410026230A CN 103744987 A CN103744987 A CN 103744987A
- Authority
- CN
- China
- Prior art keywords
- matchmaker
- dom
- node
- tree
- template
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/70—Information retrieval; Database structures therefor; File system structures therefor of video data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于DOM树匹配的视频网站媒资聚合方法和系统,所述方法包括S1)生成配置文件:根据用户的输入生成配置文件,所述配置文件的结构包括基本信息单元、媒资参数单元和DOM子树结构单元;S2)获取HTML文档并生成HTML文档的DOM树:向待聚合的网站请求并获取HTML文档,解析所述HTML文档生成HTML文档的DOM树;S3)媒资信息提取:导入所述匹配模板并生成模板DOM树;对所述HTML文档的DOM树与所述DOM模板树进行模板匹配,从所述HTML文档的DOM树中提取出满足所述最简结构的子节点,然后提取出该子节点中所包含的媒资信息。与现有技术相比,本发明具有更优的兼容性及稳定性。
Description
技术领域
本发明涉及网络通信和多媒体信息处理领域,尤其是涉及基于DOM树匹配的视频网站媒资聚合方法和系统。
背景技术
随着国内视频网站飞速增长,网络上视频数量巨大,在线观看视频也成为越来越多人们生活中的必要需求。然而,视频网站种类繁多,视频资源分布散乱,视频格式和插件各不相同,为用户搜索和观看视频带来了一定障碍。而媒资聚合平台则能够对各大视频网站节目分类、节目信息列表、视频详细信息等信息进行聚合,使用户无需逐个登陆视频网站,便能在统一的客户端中获取最新的视频资源信息,并使用统一播放器观看视频。并且,随着广电对OTT+DVB模式的推广,OTT互联网电视成为未来智能电视的发展趋势,媒资聚合技术为用户提供了统一的多媒体资源访问入口,能向上支撑起一个简便的集成导航、注释和评论等功能的终端,以及一个统一视频播放平台,为OTT智能电视服务提供了整合多媒体资源的渠道。
作为媒资聚合平台中的关键点,如何对各大视频网站的视频节目分类、列表、详细信息等不同类型的媒资进行聚合,是本发明的重点。目前市场上的媒资聚合客户端虽然很多,但基本上都是通过调用视频网站本身提供的API方式进行聚合。开放式API是视频网站常见的一种接口,视频网站将视频内容封装成一系列的API开放出来,供开发者使用。然而,这种方式有很大局限性。首先,各个视频网站发布的视频开放式接口千差万别,不利于媒资聚合软件的开发。其次,若网站更改应用接口,则必须对软件进行调整甚至重写,以适配新的应用接口,不利于软件的维护。再次,目前国内提供开放API的视频网站很少,对于没有开放API的网站便不能进行聚合,被动的受制于视频网站。此外,目前国内视频网站利用开放API方式进行合作的方式尚不成熟,对其API的开放并不全面,有的甚至存在提供错误信息的问题,并且疏于维护,更新较慢,媒资信息时效性差。因此,采用这种方式还不能满足现阶段媒资聚合的需求,需要更加通用、稳定、易于维护的方式。
文件物件模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口。DOM定义了表示和修改文档所需的对象、这些对象的行为和属性以及这些对象之间的关系。
发明内容
本发明所要解决的技术问题是提供一种基于DOM树匹配的视频网站媒资聚合方法和系统用于提高对聚合网站的兼容性及聚合的稳定性。
本发明通过下述技术手段解决前述技术问题:
一种基于DOM树匹配的视频网站媒资聚合方法,包括以下步骤:
S1)生成配置文件:根据用户的输入生成配置文件,所述配置文件的结构包括基本信息单元、媒资参数单元和DOM子树结构单元;所述DOM子树结构单元包括匹配模板,所述匹配模板用于存储DOM子树中符合提取条件的媒资所在节点的最简结构;所述媒资参数单元定义有所述匹配模板中存放媒资信息的参数与媒资信息的映射关系;所述基本信息单元用于描述配置文件的基本信息,所述基本信息至少包括媒资类型、DOM子树结构单元个数和媒资个数;
S2)获取HTML文档并生成HTML文档的DOM树:向待聚合的网站请求并获取HTML文档,解析所述HTML文档生成HTML文档的DOM树;
S3)媒资信息提取:S31)读取所述配置文件,存储所述基本信息和所述基本信息,导入所述匹配模板并生成模板DOM树;S32)对所述HTML文档的DOM树与所述DOM模板树进行模板匹配,从所述HTML文档的DOM树中提取出满足所述最简结构的子节点,然后提取出该子节点中所包含的媒资信息。
优选地:所述DOM子树结构单元还包括关键节点模块,所述关键节点模块用于存储DOM子树的根节点的节点信息和与所述根节点对应的匹配模板信息;
所述步骤S32)包括:导入所述关键节点模块,根据关键节点模块中存储的所述根节点的节点信息,筛选出所述HTML文档的DOM树中DOM子树的根节点;遍历所述根节点下的所有节点,并在遍历过程中对每个节点进行模板匹配,提取出满足所述最简结构的子节点,提取出该子节点的媒资信息并根据所述映射关系将提取的媒资信息存储到所述媒资参数单元中。
一种基于DOM树匹配的视频网站媒资聚合系统,包括:
配置模块生成模块,用于根据用户的输入生成配置文件,所述配置文件的结构包括基本信息单元、媒资参数单元和DOM子树结构单元;所述DOM子树结构单元包括匹配模板,所述匹配模板用于存储DOM子树中符合提取条件的媒资所在节点的最简结构;所述媒资参数单元定义有所述匹配模板中存放媒资信息的参数与媒资信息的映射关系;所述基本信息单元用于描述配置文件的基本信息,所述基本信息至少包括媒资类型、DOM子树结构单元个数和媒资个数;
HTML解析及DOM树构建模块:用于向待聚合的网站请求并获取HTML文档,解析所述HTML文档生成HTML文档的DOM树;
媒资信息提取模块:用于读取所述配置文件,存储所述基本信息和所述基本信息,导入所述匹配模板并生成模板DOM树;还用于对所述HTML文档的DOM树与所述DOM模板树进行模板匹配,从所述HTML文档的DOM树中提取出满足所述最简结构的子节点,然后提取出该子节点中所包含的媒资信息。
优选地:所述DOM子树结构单元还包括关键节点模块,所述关键节点模块用于存储DOM子树的根节点的节点信息和与所述根节点对应的匹配模板信息;
所述媒资信息提取模块还用于导入所述关键节点模块,根据关键节点模块中存储的所述根节点的节点信息,筛选出所述HTML文档的DOM树中DOM子树的根节点;遍历所述根节点下的所有节点,并在遍历过程中对每个节点进行模板匹配,提取出满足所述最简结构的子节点,提取出该子节点的媒资信息并根据所述映射关系将提取的媒资信息存储到所述媒资参数单元中。
由于网站的设计与实现一般采用模板化设计,因此同一网站中同类型媒资的网页结构具有一致性,故本发明对不同视频网站和不同类型的媒资设计不同配置文件存储算法所需信息,在程序中读取配置文件,采用统一聚合算法进行DOM树模板匹配和媒资提取,使算法和具体网页结构相分离,便于软件的修改、更新、拓展和维护。本发明无需依赖视频网站API,具有很强的通用性,能够广泛支持国内视频网站,并且做到完全与视频网站信息同步,稳定可靠。
优选方案中,采用快速定位关键节点与模板匹配结合的方式,能够快速、精确的筛选出包含媒资的DOM节点。
附图说明
图1是本发明一种基于DOM树匹配的媒资聚合系统结构原理图;
图2是本发明HTML解析及DOM树构建模块的模型示意图;
图3是本发明通用聚合算法的流程示意图;
图4是本发明快速定位“关键节点”算法的流程示意图。
具体实施方式
下面对照附图并结合优选的实施方式对本发明作进一步说明。
本发明包括如下步骤:
一、配置文件生成:
通过分析视频网站的HTML脚本源码,总结该视频网站需要提取的媒资类型所在DOM子树的结构特点,输入至计算机,通过配置文件生成模块生产不同的配置文件,用于存储DOM子树匹配模板和聚合算法中所需的其他信息。该配置文件可配合聚合算法,在开发阶段对其进行不断的修改和完善。
所述需要提取的媒资类型是指,如视频分类、视频列表、视频详细信息等不同类型的媒资,在同一网站中,其网页HTML结构基本一致,可以总结到同一配置文件中进行存储。
所述DOM子树是指,包含需要提取的媒资信息的DOM树节点以及其各级子节点所构成的部分DOM树,即DOM树中含有媒资信息的部分,由于某些类型的媒资可能分布于网页中不同部分,因此该子树可能不唯一,如视频分类,主分类信息和子分类信息所在DOM子树为两个不同的子树。
所述配置文件是指,用于被媒资聚合算法读取并存有程序所需信息的辅助文件,其格式可以为xml等,同一个网站根据网页结构特点和程序需要可设计单个或多个配置文件。不同类型媒资的配置文件设计需遵循相同的基本结构。
所述配置文件基本结构包括基本信息单元、媒资参数单元、DOM子树结构单元三部分。基本信息单元部分描述了本文件的基本信息,用于辅助聚合算法进行初始化工作,包括但不限于媒资类型、DOM子树结构单元个数、媒资个数等。媒资参数单元部分定义了匹配模板及聚合算法中存放媒资信息的参数与媒资信息的对应关系,例如<param1>视频名称</param1>,表示param1参数提取的媒资信息为视频名称。DOM子树结构单元部分包括关键节点模块和匹配模板两部分:关键节点模块部分存储DOM子树根节点(后文称为关键节点)的节点信息和对应的匹配模板信息等,用于聚合算法中快速定位;匹配模板部分存储DOM子树中符合提取条件的媒资所在节点构成的最简结构,该最简结构在对网站HTML源码分析后,总结出能够区分不含媒资的节点结构,配合模板匹配算法筛选出包含媒资的节点,例如视频列表中列表所在DOM子树中每个视频的HTML最简结构,视频分类信息所在DOM子树中每一种分类的最简结构,若有多个模板则存储多个,模板中需要省略的节点由特殊节点skip进行配置,模板中需要提取的媒资用媒资参数表示,如param1等。
二、获取HTML文档并解析生成DOM树:
1.通过网络协议向视频网站发起请求,得到HTML文档;
2.对HTML文档进行解析,包括词法分析、语法分析和语义分析;
3.根据DOM规范生成该HTML的DOM树结构,进行javascript绑定。
本领域技术人员可以采用现有的多种技术实现对HTML的解析,本发明不限于上述方法。
三、媒资信息提取
媒资信息提取模块通过通用聚合算法读取配置文件存储的信息,形成模板DOM树,对步骤二中生成的DOM树进行模板匹配,从中筛选出满足模板结构的子节点(即:满足所述最简结构的子节点),然后提取所包含的媒资信息。
具体分为以下几个步骤:
1.初始化,读取配置文件,存储基本信息单元和媒资参数单元部分的信息,导入关键节点单元部分,导入匹配模板生成模板DOM树。
2.快速定位“关键节点”,在HTML的DOM树中结合DOM操作接口函数,快速定位出满足条件的节点,并进一步利用属性值等根节点信息筛选出关键节点(即:DOM子树的根节点)。
3.遍历“关键节点”下所有节点,并在遍历过程中对每一个节点进行模板匹配,从而筛选出满足模板结构的节点,进行媒资提取。
1)模板匹配:遍历过程中,通过匹配算法对遍历中的当前节点下的DOM子树与模板DOM子树进行匹配。
2)媒资提取:遍历过程中,当匹配成功后,在该节点下的DOM子树中,对比模板中媒资参数所在位置,提取媒资信息存储到媒资参数中。
为更进一步的公开本发明的方案,下文结合更加具体的实施例对本发明进行阐述:
图1是本发明具体实施的原理图。
101为网络中各主流视频网站的网络视频服务器,在实际应用当中,视频网站可以是,优酷,土豆,56视频,乐视,新浪,搜狐等主流视频网站。
102是HTML解析及DOM树生成模块,向101所示服务器发送请求获取HTML网页,服务器响应请求后发送网页文档,102模块对其进行解析并加载相关资源,生成DOM树。其中,所述发送请求和响应请求过程的协议可以是传输控制协议(TCP),或者超文本传输协议(HTTP),或者文件传输协议(FTP)。
103是媒资信息提取模块,该模块以原DOM树和配置文件作为输入,实现通用聚合算法,对DOM树进行操作,匹配出所需节点并进行提取。
104是配置文件生产模块,用于生成配置文件,该配置文件采用xml格式,存储对应类型媒资所在的DOM子树信息和通用聚合算法所需其他信息,供103媒资信息提取模块加载读取,基本结构分为“基本信息单元”、“媒资参数单元”、“DOM子树结构单元”三个部分。
下面以优酷网站的视频列表类型媒资提取为优选的实施例,进一步描述一种基于DOM匹配的媒资聚合实现方法步骤。
S1设计配置文件。
按照前文配置文件生成步骤所述,以人工辅助的形式,通过分析视频网站的HTML脚本源码,总结该视频网站需要提取的媒资类型所在DOM子树的结构特点,设计不同配置文件,存储DOM子树匹配模板和聚合算法中所需的其他信息。
S11分析网站的HTML脚本源码
通过查看HTML源码的工具,如Chrome浏览器自带的审查元素选项、Firefox浏览器的firebug插件等,查看源码结构,进行分析和总结。
本例中可以看到优酷网站中视频列表媒资的典型HTML脚本源码如图2所示。每一页的视频列表均在<divclass=”items”>节点下,因此该节点下所有节点构成的DOM子树为媒资所在的DOM子树,且所有媒资只包含在该DOM子树中,故DOM树数目为1,若媒资分布较远,在多个DOM子树中,则按需要在配置文件中记录下DOM子树数目。
其中每个视频的信息在<ulclass=”v”>节点下,展开其结构如图3所示。所需要提取的媒资是每个视频的名称、播放页面url、缩略图url,找到他们所在的位置,可见,视频名称为第一个li子节点的a子节点的title属性值,播放页面url为第一个li子节点的a子节点的href属性值,缩略图url为第二个li子节点的img子节点的src属性值。
本例中,经过上述人工分析过程,优酷的视频列表中每个视频的HTML基本结构简化如下。
S12“基本信息单元”部分配置
“基本信息单元”部分描述了本文件的基本信息,辅助程序进行初始化工作,包括但不限于媒资类型、DOM子树个数、媒资个数等。
本例中“基本信息”部分配置如下:
<website>优酷</website>
<infoCategory>视频列表</infoCategory>
<domNumber>1</domNumber>
<infoNumber>3</infoNumber>
第一个website节点存储提取网站名称为“优酷”;第二个infoCategory节点存储媒资类型为“视频列表”;根据S11中的分析,第三个domNumber节点存储DOM子树的个数为1个;第四个infoNumber节点存储提取的媒资个数为3个(即视频名称、播放页面url、缩略图url)。
S13“媒资参数”部分配置
“媒资参数”部分定义了模板及程序中存放媒资信息的参数与媒资信息的对应关系。
本例中“媒资参数”部分配置如下:
<param1>播放页面url</param1>
<param2>视频名称</param2>
<param3>缩略图url</param3>
三个节点分别定义了3个媒资参数的意义,即param1存放视频名称,param2存放播放页面url,param3存放缩略图url。
S14“DOM子树”部分存储每个DOM子树的信息,又分为“关键节点”和“匹配模板”两部分。
其结构如下:
<DOMorder=”1”>
……
</DOM>
DOM节点的order属性值表示相应的DOM子树序列号,本例中只有一个DOM树,因此只需配置order值为1的DOM节点,它的“关键节点”和“匹配模板”部分配置如下。
1)“关键节点模块”部分配置
“关键节点模块”部分存储DOM子树根节点和对应模板个数等,用于聚合算法中快速定位。
本例中“关键节点模块”部分配置如下:
关键节点的所有信息存储在keyNode节点下。第一个nodeInfo节点存储了关键节点为<divclass=”items”></div>;剩下的节点用于存储帮助筛选关键节点的其他信息,当不需要这些辅助信息时,留空即可,如本例中上述示范。辅助信息节点含义是:order节点用于存储所有满足nodeInfo节点列表中的顺序号,特殊的,留空表示无需该辅助信息,0表示列表中第1个节点;father节点存储其父节点,特殊的,留空表示无需该辅助信息,null表示没有父节点;childsNumber节点存储其下一级子节点个数,特殊的,留空表示无需该辅助信息,0表示没有子节点。
2)“匹配模板”部分配置
“匹配模板”部分,存储DOM子树中符合提取条件的媒资所在节点构成的最简结构,该结构需要在对网站HTML源码分析后,总结出能够区分不含媒资的节点结构,配合模板匹配算法筛选出包含媒资的节点,例如视频列表中列表所在DOM子树中每个视频的HTML最简结构,视频分类信息所在DOM子树中每一种分类的最简结构,若有多个模板则存储多个,模板中需要省略的节点由特殊节点skip进行配置,模板中需要提取的媒资用媒资参数表示,如param1等。
本例中“匹配模板”部分配置如下:
templateNumber节点存储了该“DOM子树”部分对应的匹配模板个数为1个。Template节点的order属性值含义与上述“DOM子树”部分的DOM节点含义类似,表示相应的模板序列,因只有一个模板,故存储在order值为1的Template节点下,若存在多个节点,则依次在order值为2,3……的Template节点下进行配置。
其结构与S11中所总结的最简结构相对应,表明符合提取条件的最简结构需在ul节点下的第一、二个子节点需要与模板中一致,并且,媒资所在的位置用媒资参数param1,param2,param3代替。特殊节点skip表示从第三个子节点开始,不能有超过6个节点存在,若需指定省略的节点的node信息(nodeName、nodeType、nodeValue信息),可在skip节点的属性中进行配置,例如<skipnodeName=”li”nodeType=”#element”>4</skip>表示不能有超过4个的nodeName为li且nodeType为元素节点的节点存在。
S2获取HTML文档并解析生成DOM树。
按照前文中第二步所述,该步骤包括网络请求获取HTML文档、解析HTML文档、生成DOM树三步,其中解析HTML文档、生成DOM树可以同时进行。其解析及生成DOM树的典型解析模型如图2所示。
下面具体阐述三个步骤,下述过程符合W3C的HTML和DOM规范的标准过程,其实现具有多平台多语言支持的数量众多的开源项目可供使用。
S21通过网络协议向视频网站发起请求,当视频网站服务器响应请求后,再通过网络协议得到HTML文档,并加载相关资源。所述网络协议可以是传输控制协议(TCP),或者超文本传输协议(HTTP),或者文件传输协议(FTP)。
S22对HTML文档进行解析。字节解码器将网络数据转换为unicode字符流并交给Token解析器,Token解析器对HTML进行词法解析和语法解析,将字符流转换为一个个Token交给DOM树构建器。
S23DOM树构建器根据DOM规范生成DOM树结构。在构建DOM树时如果遇到脚本token,则绑定给脚本解释器进行解析,当script标签包含如操作DOM的API时需要对源码添加内容,也作为Token解析器的输入。
本例中向优酷网站发送请求,加载需要提取视频列表的网页url,获取到HTML文档,进行解析,生成DOM树。
S3通用聚合算法实现。
按照前文中第三步所述,设计通用聚合算法,其算法流程如图3所示,首先读取配置文件中存储的信息进行初始化,在DOM树中快速定位出“关键节点”,然后对“关键节点”下的DOM子树进行遍历,并在遍历过程中进行模板匹配,从而筛选出满足模板结构的子节点,从中提取出所包含的媒资信息。
下面结合具体实施例的实现方式介绍,详细介绍其中关键步骤。
S31初始化,读取配置文件,存储“基本信息”和“媒资参数”部分信息,导入“关键节点”keyNode及其子节点,导入“匹配模板”Template及其子节点生成“模板DOM树”。
S32快速定位,通过配置文件中keyNode的节点信息,在DOM树中快速定位到符合keyNode存储信息的DOM树节点。
图4展示了一种实现算法的流程图。
1)获取配置文件中keyNode节点及其包含的子节点信息。
在配置文件的keyNode节点中,它的第一个子节点nodeInfo保存了需要在DOM树中定位的“关键节点”,例如S23中的<divclass=”items”></div>节点,将其称为“模板节点”,而DOM树中能与模板节点信息相符的称为“待定位节点”;keyNode节点中的order、father、childsNumber节点保存了其他的辅助定位条件,当待定位节点不唯一时,需要这些辅助定位条件帮助从中筛选出“关键节点”。
本算法实例程序中声明了一个节点类型变量keyNodeInfo,将模板节点赋值给它,为了阐述方便,之后以keyNodeInfo代替配置文件中模板节点,即nodeInfo的子节点,进行阐述。
2)通过模板节点Id属性值快速定位到关键节点。
判断keyNodeInfo是否含有Id属性值,若有,则调用DOM树的document.getELementById函数,由于Id属性值为节点的唯一标识符,因此该函数直接得到关键节点,定位结束,跳至步骤5);若没有,则进行3)4)步骤,例如S23中的“关键节点”不含id属性,故继续3)步骤。
3)通过模板节点nodeName快速定位到所有待定位节点。
获取keyNodeInfo的节点名称nodeName值,例如S23中的“div”,调用DOM树的document.getELementsByTagName函数,该函数可以快速得到DOM树中所有节点名称与keyNodeInfo相同的待定位节点,构成一个节点列表。
4)对待定位节点列表进行筛选得到关键节点。
遍历该列表,在遍历过程中,通过keyNodeInfo其他节点信息,例如S23中div节点的class属性及属性值items,以及配置文件中keyNode中的辅助定位条件进行判断,若满足条件,则得到关键节点,遍历结束;若不满足,则继续遍历直到列表遍历结束。
5)快速定位算法结束。
S33遍历“关键节点”下所有节点,并在遍历过程中对每一个节点进行模板匹配,从而筛选出满足模板结构的节点,进行媒资提取。
1)模板匹配:遍历过程中,通过匹配算法对遍历中的当前节点进行模板匹配。
模板匹配时,以遍历过程中的当前节点作为根节点,其所有子节点构成一个DOM子树,将该子树称为“待匹配对象”,与S31初始化过程中生成的模板DOM树进行对比,如果模板DOM树中每一个节点都与待匹配对象中相对位置相同的节点相同,则匹配成功,否则,匹配失败。
上述相对位置相同的定义是指,在不含skip节点情况下,模板DOM树中的某节点如果是第n层第m个节点,那么待匹配对象中与之进行对比的节点也为第n层第m个;当模板中包含skip节点时,那么待匹配对象的相对位置应加上满足skip节点条件的节点个数,例如,模板DOM树中的某节点如果是第n层第m个节点,而在第n层第m-1个节点为skip节点,节点值为x,那么待匹配对象与之进行对比的节点应该为第n层第m+y个,其中y能满足0到x间的整数要求。
上述节点相同的定义是指,只要待匹配对象中进行匹配的节点信息能够完全包含模板DOM树中的节点信息,即模板DOM树中的节点信息是待匹配对象中进行匹配节点信息的子集。例如S2中的模板DOM树中某节点存储为<imgsrc=”param3”></img>,匹配中只要匹配的节点包含这些信息即认为两个节点相同,如图3中<imgsrc=””(省略实际值,下同)alt=””replace=””border=””>节满足条件,故两个节点相同。
下面给出一种匹配算法的实现示例代码(其中的文字部分为对代码的说明)。
该匹配算法采用递归函数Tree_Match实现,参数为待匹配的两个节点,r1为模板DOM树的节点,r2为待匹配对象的节点。返回值0表示匹配失败,1表示匹配成功。函数要求两个节点的匹配成功的条件为,两个节点相同,并且若两个节点有子节点,对下一层的子节点也传入Tree_Match进行匹配,能够得到表示匹配成功的返回值1。
函数流程为,首先比较两个节点是否相同,若不同则直接匹配失败,返回0,若相同,进一步遍历两个节点的下一层子节点,并递归调用Tree_Match来比较每个节点,记录返回值,如果有匹配失败的情况产生,则匹配失败,直接返回0,若匹配成功则继续遍历直到结束,最后返回1。在递归调用匹配下一层子节点时,每一对待匹配的子节点也都重复上述过程。因此,当最开始Tree_Match函数传入根节点后,递归调用会按DOM树的深度一层层进行遍历比较,直到模板DOM树的最末层子节点为止。每一层的匹配结果会在其父节点匹配过程中记录,一旦某两个节点匹配失败,立即向上返回0,然后逐层传递到根节点处,整棵DOM树匹配失败,函数返回0;若每个节点都匹配成功,函数返回值也会逐层传递到根节点处,整棵DOM树匹配成功,函数返回1。
2)媒资提取:遍历过程中,若匹配成功,将该节点及其子节点构成的DOM子树成为“待提取对象”,对比模板DOM树中中媒资参数所在位置,提取媒资信息。
下面给出一种匹配算法的实现示例代码(其中的文字部分为对代码的说明)。
Info_Extract为递归函数,参数为待判断是否进行提取的两个节点。r1为模板DOM树的节点,r2为待提取对象的节点。
函数流程为,首先判断r1中是否含有媒资参数,如果含有,则提取r2的媒资信息赋值给媒资参数。然后,开始提取两个节点的下一层子节点,方法与匹配过程类似,遍历两个节点的下一层子节点,并递归调用Info_Extract函数来进行提取。在递归调用提取下一层子节点时,每一对子节点也都重复上述过程。因此,当最开始Info_Extract函数传入根节点后,递归调用会按DOM树的深度一层层进行遍历提取,直到模板DOM树的最末层子节点为止。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的技术人员来说,在不脱离本发明构思的前提下,还可以做出若干等同替代或明显变型,而且性能或用途相同,都应当视为属于本发明的保护范围。
Claims (4)
1.一种基于DOM树匹配的视频网站媒资聚合方法,其特征在于,包括以下步骤:
S1)生成配置文件:根据用户的输入生成配置文件,所述配置文件的结构包括基本信息单元、媒资参数单元和DOM子树结构单元;所述DOM子树结构单元包括匹配模板,所述匹配模板用于存储DOM子树中符合提取条件的媒资所在节点的最简结构;所述媒资参数单元定义有所述匹配模板中存放媒资信息的参数与媒资信息的映射关系;所述基本信息单元用于描述配置文件的基本信息,所述基本信息至少包括媒资类型、DOM子树结构单元个数和媒资个数;
S2)获取HTML文档并生成HTML文档的DOM树:向待聚合的网站请求并获取HTML文档,解析所述HTML文档生成HTML文档的DOM树;
S3)媒资信息提取:S31)读取所述配置文件,存储所述基本信息和所述基本信息,导入所述匹配模板并生成模板DOM树;S32)对所述HTML文档的DOM树与所述DOM模板树进行模板匹配,从所述HTML文档的DOM树中提取出满足所述最简结构的子节点,然后提取出该子节点中所包含的媒资信息。
2.根据权利要求1所述的方法,其特征在于:
所述DOM子树结构单元还包括关键节点模块,所述关键节点模块用于存储DOM子树的根节点的节点信息和与所述根节点对应的匹配模板信息;
所述步骤S32)包括:导入所述关键节点模块,根据关键节点模块中存储的所述根节点的节点信息,筛选出所述HTML文档的DOM树中DOM子树的根节点;遍历所述根节点下的所有节点,并在遍历过程中对每个节点进行模板匹配,提取出满足所述最简结构的子节点,提取出该子节点的媒资信息并根据所述映射关系将提取的媒资信息存储到所述媒资参数单元中。
3.一种基于DOM树匹配的视频网站媒资聚合系统,其特征在于包括:
配置模块生成模块,用于根据用户的输入生成配置文件,所述配置文件的结构包括基本信息单元、媒资参数单元和DOM子树结构单元;所述DOM子树结构单元包括匹配模板,所述匹配模板用于存储DOM子树中符合提取条件的媒资所在节点的最简结构;所述媒资参数单元定义有所述匹配模板中存放媒资信息的参数与媒资信息的映射关系;所述基本信息单元用于描述配置文件的基本信息,所述基本信息至少包括媒资类型、DOM子树结构单元个数和媒资个数;
HTML解析及DOM树构建模块:用于向待聚合的网站请求并获取HTML文档,解析所述HTML文档生成HTML文档的DOM树;
媒资信息提取模块:用于读取所述配置文件,存储所述基本信息和所述基本信息,导入所述匹配模板并生成模板DOM树;还用于对所述HTML文档的DOM树与所述DOM模板树进行模板匹配,从所述HTML文档的DOM树中提取出满足所述最简结构的子节点,然后提取出该子节点中所包含的媒资信息。
4.根据权利要求3所述的系统,其特征在于:
所述DOM子树结构单元还包括关键节点模块,所述关键节点模块用于存储DOM子树的根节点的节点信息和与所述根节点对应的匹配模板信息;
所述媒资信息提取模块还用于导入所述关键节点模块,根据关键节点模块中存储的所述根节点的节点信息,筛选出所述HTML文档的DOM树中DOM子树的根节点;遍历所述根节点下的所有节点,并在遍历过程中对每个节点进行模板匹配,提取出满足所述最简结构的子节点,提取出该子节点的媒资信息并根据所述映射关系将提取的媒资信息存储到所述媒资参数单元中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410026230.5A CN103744987B (zh) | 2014-01-20 | 2014-01-20 | 基于dom树匹配的视频网站媒资聚合方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410026230.5A CN103744987B (zh) | 2014-01-20 | 2014-01-20 | 基于dom树匹配的视频网站媒资聚合方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103744987A true CN103744987A (zh) | 2014-04-23 |
CN103744987B CN103744987B (zh) | 2017-01-11 |
Family
ID=50502005
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410026230.5A Active CN103744987B (zh) | 2014-01-20 | 2014-01-20 | 基于dom树匹配的视频网站媒资聚合方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103744987B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104462390A (zh) * | 2014-12-10 | 2015-03-25 | 华中科技大学 | 一种提高网页自适应布局效率的方法和系统 |
CN106156164A (zh) * | 2015-04-15 | 2016-11-23 | 腾讯科技(深圳)有限公司 | 资源信息处理方法和装置 |
CN106326314A (zh) * | 2015-07-07 | 2017-01-11 | 腾讯科技(深圳)有限公司 | 网页信息抽取方法及装置 |
CN108595652A (zh) * | 2018-04-27 | 2018-09-28 | 平安科技(深圳)有限公司 | 加载dom节点数据的方法、装置、计算机设备及存储介质 |
CN110113196A (zh) * | 2019-04-26 | 2019-08-09 | 中车青岛四方机车车辆股份有限公司 | 一种协议配置方法、装置、设备及介质 |
CN112685601A (zh) * | 2021-01-31 | 2021-04-20 | 重庆渝高科技产业(集团)股份有限公司 | 一种工程计量清单的数据提取方法及系统 |
CN116662645A (zh) * | 2023-04-28 | 2023-08-29 | 青岛尘元科技信息有限公司 | 视频事件溯源分析方法和系统、存储介质及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6675354B1 (en) * | 1999-11-18 | 2004-01-06 | International Business Machines Corporation | Case-insensitive custom tag recognition and handling |
CN1469281A (zh) * | 2002-06-11 | 2004-01-21 | Lg������ʽ���� | 多媒体再现装置和方法 |
EP1805712A2 (en) * | 2004-08-02 | 2007-07-11 | Clairvoyance Corporation | Document processing and management approach for reflecting changes in one representation of a document to another representation |
CN101694668A (zh) * | 2009-09-29 | 2010-04-14 | 百度在线网络技术(北京)有限公司 | 网页结构相似性确定方法及装置 |
-
2014
- 2014-01-20 CN CN201410026230.5A patent/CN103744987B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6675354B1 (en) * | 1999-11-18 | 2004-01-06 | International Business Machines Corporation | Case-insensitive custom tag recognition and handling |
CN1469281A (zh) * | 2002-06-11 | 2004-01-21 | Lg������ʽ���� | 多媒体再现装置和方法 |
EP1805712A2 (en) * | 2004-08-02 | 2007-07-11 | Clairvoyance Corporation | Document processing and management approach for reflecting changes in one representation of a document to another representation |
CN101694668A (zh) * | 2009-09-29 | 2010-04-14 | 百度在线网络技术(北京)有限公司 | 网页结构相似性确定方法及装置 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104462390A (zh) * | 2014-12-10 | 2015-03-25 | 华中科技大学 | 一种提高网页自适应布局效率的方法和系统 |
CN104462390B (zh) * | 2014-12-10 | 2017-12-29 | 华中科技大学 | 一种提高网页自适应布局效率的方法和系统 |
CN106156164A (zh) * | 2015-04-15 | 2016-11-23 | 腾讯科技(深圳)有限公司 | 资源信息处理方法和装置 |
CN106326314A (zh) * | 2015-07-07 | 2017-01-11 | 腾讯科技(深圳)有限公司 | 网页信息抽取方法及装置 |
CN106326314B (zh) * | 2015-07-07 | 2020-09-29 | 腾讯科技(深圳)有限公司 | 网页信息抽取方法及装置 |
CN108595652A (zh) * | 2018-04-27 | 2018-09-28 | 平安科技(深圳)有限公司 | 加载dom节点数据的方法、装置、计算机设备及存储介质 |
CN110113196A (zh) * | 2019-04-26 | 2019-08-09 | 中车青岛四方机车车辆股份有限公司 | 一种协议配置方法、装置、设备及介质 |
CN110113196B (zh) * | 2019-04-26 | 2022-04-15 | 中车青岛四方机车车辆股份有限公司 | 一种协议配置方法、装置、设备及介质 |
CN112685601A (zh) * | 2021-01-31 | 2021-04-20 | 重庆渝高科技产业(集团)股份有限公司 | 一种工程计量清单的数据提取方法及系统 |
CN116662645A (zh) * | 2023-04-28 | 2023-08-29 | 青岛尘元科技信息有限公司 | 视频事件溯源分析方法和系统、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103744987B (zh) | 2017-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103744987A (zh) | 基于dom树匹配的视频网站媒资聚合方法和系统 | |
US7941420B2 (en) | Method for organizing structurally similar web pages from a web site | |
CN102279894B (zh) | 基于语义的查找、集成和提供评论信息的方法及搜索系统 | |
CN102254009B (zh) | 一种网页表格数据抽取的方法 | |
US8381095B1 (en) | Automated document revision markup and change control | |
CN101957816B (zh) | 基于多页面比较的网页元数据自动抽取方法和系统 | |
CN101290624B (zh) | 一种新闻网页元数据自动抽取方法 | |
EP2938044B1 (en) | System, method, apparatus, and server for displaying network medium information | |
CN108090104B (zh) | 用于获取网页信息的方法和装置 | |
CN108196880A (zh) | 软件项目知识图谱自动构造方法与系统 | |
CN102521232B (zh) | 一种互联网元数据的分布式采集处理系统及方法 | |
CN101344881A (zh) | 海量文件型数据的索引生成方法及装置和搜索系统 | |
US8489609B1 (en) | Indexing multimedia web content | |
CN101655862A (zh) | 信息对象搜索的方法和装置 | |
CN103838837B (zh) | 基于语义模板的遥感元数据集成方法 | |
CN102622448A (zh) | 一种数字电视互动应用页面标记语言解析方法 | |
Huynh et al. | Enabling web browsers to augment web sites' filtering and sorting functionalities | |
CN102124481A (zh) | 在具有广告的网页中嵌入宏 | |
CN104317949A (zh) | 文档片段内容提取方法、装置和系统 | |
Fernández Villamor et al. | A semantic scraping model for web resources-Applying linked data to web page screen scraping | |
CN102651002A (zh) | 一种网页信息抽取方法及其系统 | |
CN102314497A (zh) | 一种用于识别标记语言文件主体内容的方法和设备 | |
CN102760150A (zh) | 基于属性重现和标签路径的网页抽取方法 | |
CN103778238A (zh) | 一种从维基百科半结构化数据自动构建分类树的方法 | |
CN103870495A (zh) | 用于从网站中提取信息的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |