[发明专利]一种服务接口原语定义方法和系统有效
| 申请号: | 202010753677.8 | 申请日: | 2020-07-30 |
| 公开(公告)号: | CN111913739B | 公开(公告)日: | 2023-09-12 |
| 发明(设计)人: | 易超;张舒汇;贺赞贤 | 申请(专利权)人: | 北京数立得科技有限公司 |
| 主分类号: | G06F8/74 | 分类号: | G06F8/74 |
| 代理公司: | 北京润泽恒知识产权代理有限公司 11319 | 代理人: | 莎日娜 |
| 地址: | 100085 北京市海淀区*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 服务 接口 定义 方法 系统 | ||
1.一种服务接口原语定义方法,其特征在于,包括:
根据待提取数据的Web页面的特征,按照模板原语编写数据提取模板;
对所述数据提取模板进行词法分析,获得词法单元;
根据所述词法单元,对所述数据提取模板进行语法分析,获得抽象语法树;
根据所述抽象语法树,生成所述数据提取模板的以中间形式表示的XML文件;
根据所述模板原语对所述XML文件进行语义检查,完成所述数据提取模板的定义;
其中,所述模板原语是通过如下步骤定义的:
步骤1:获取一个模板入口标志语句,记为Template,表示JSON结构的根节点;
步骤2:获取一个表示JSON节点的标记,记为Output,表示在当前位置有一个JSON节点;
步骤3:获取一个表示JSON节点的key来自于HTML中对应位置的标记,记为NameNode;
步骤4:获取表示JSON节点的value的标记,所述JSON节点的value可以是对象、数组或值,分别用ObjectNode,DOMNodeList,DOMNode表示,其中,DOMNode指明该值来自HTML中的位置,所述ObjectNode表示所述JSON节点的value是一个JSON对象,所述DOMNodeList表示所述JSON节点的value是一个JSON数组,所述DOMNode表示所述JSON节点的value是一个JSON值;
步骤5:获取一个表示类的定义的语句,记为Class,所述类的定义在模板入口语句外,在模板定义之前;
步骤6:标记有属性列表,以记录JSON节点的key、value来自HTML中的xpath路径,以及可能的xpath路径优先级信息;
步骤7:用add语句表示在父节点下加入当前节点;
步骤8:用set语句表示修改当前节点的属性值;
步骤9:在存在嵌套结构的情况下,即所述JSON节点的value是对象或者列表,在相应的ObjectNode或DOMNodeList下面添加Output标记表示下一层的JSON节点。
2.根据权利要求1所述的方法,其特征在于,根据待提取数据的Web页面的特征,按照模板原语编写数据提取模板,包括:
通过Template语句定义数据提取模板的JSON根节点;
通过add Output语句在所述JSON根节点下添加JSON节点;
通过add语句在Output下添加NameNode、ObjectNode、DOMNodeList以及DOMNode标记,以指定所述JSON节点的key值和value值;
通过set或add语句为所述标记赋予属性值,以确定对应的值所在的位置和优先顺序,其中,在所述JSON节点的value值是对象或列表时,在相应的ObjectNode或DOMNodeList下添加Output标记以表示下一层的JSON节点。
3.根据权利要求2所述的方法,其特征在于,对所述数据提取模板进行词法分析,获得词法单元,包括:
获得所述数据提取模板的源程序的输入字符;
识别所述输入字符中的词素,所述词素包括:关键字、类名、模板名、属性值、表示语句结构的符号以及表示层级关系的符号;
逐个匹配所述词素的正则表达式,在匹配成功时获得相应的词法单元。
4.根据权利要求3所述的方法,其特征在于,根据所述词法单元,对所述数据提取模板进行语法分析,获得抽象语法树,包括:
逐个分析所述词法单元;
在出现某一个产生式体时,将其规约为产生式头,并与此同时构建抽象语法树的一个节点,表示当次推导所使用的产生式;
重复规约过程直到整个串被规约成开始符号,以构建所述抽象语法树,所述开始符号对应所述JSON根节点。
5.根据权利要求4所述的方法,其特征在于,根据所述抽象语法树,生成所述数据提取模板的以中间形式表示的XML文件,包括:
在构建所述抽象语法树的节点时,按照规约语句的类型生成必要XML节点或者修改XML节点的属性值;
在最终规约到开始符号时构建XML文件的JSON根节点,以生成所述数据提取模板的XML文件。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京数立得科技有限公司,未经北京数立得科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010753677.8/1.html,转载请声明来源钻瓜专利网。





