内容提取方法、装置、电子设备、存储介质及程序产品与流程

未命名 09-24 阅读:37 评论:0


1.本公开实施例涉及计算机技术领域,具体涉及一种内容提取方法、装置、电子设备、存储介质及程序产品。


背景技术:

2.目前,很多业务信息通常会以html格式的web页面为信息载体,而相关业务则需要从这些web页面中提取相应的内容,并对提取的内容按照业务需求进行处理后进行展示或者存储。
3.通常情况下,如果想要自动化的提取web页面上的内容,需要开发人员通过编程实现内容抓取脚本,并通过执行内容抓取脚本从web页面提取所需要的内容。然而业务人员通常比较熟悉业务需求,但是不具备编程能力,想要从web页面提取业务所需的内容,则需要额外的编程人员协助,需要业务人员和编程人员相互协作才能实现,人力成本和时间成本都较高。
4.因此,需要提出一种能够由业务人员完成的从web页面提取业务需要内容的解决方案,以便降低人力成本和时间成本,并提高内容提取效率。


技术实现要素:

5.本公开实施例提供一种内容提取方法、装置、电子设备、存储介质及程序产品。
6.第一方面,本公开实施例中提供了一种内容提取方法,包括:
7.获取内容提取流程图;所述内容提取流程图包括按顺序连接的多个流程组件,所述多个流程组件用于配置流程图配置信息;
8.解析所述内容提取流程图中的各个流程组件以及顺序关系,获得流程图配置信息;所述流程图配置信息包括内容提取地址和内容解析表达式;
9.基于所述内容提取地址获取网页页面;
10.基于所述内容解析表达式从所述网页页面提取目标变量;
11.存储所述目标变量。
12.进一步地,所述流程图配置信息还包括内容处理表达式;所述方法还包括:
13.基于所述内容处理表达式对所述目标变量进行处理,输出所述目标变量的处理结果。
14.进一步地,所述流程图配置信息还包括内容循环表达式,所述内容循环表达式中至少配置有网页索引初始值以及网页索引上限值;存储所述目标变量之前,所述方法还包括:
15.将所述内容循环表达式中的网页索引初始值增加设定值得到网页索引当前值;
16.基于所述网页索引当前值以及所述内容提取地址获得新的内容提取地址;
17.返回基于所述内容提取地址获取网页页面的步骤重新执行,直至所述网页索引当前值达到所述网页索引上限值。
18.进一步地,基于所述内容解析表达式从所述网页页面提取目标变量,包括:
19.解析所述内容解析表达式中的变量提取方式及变量标识;
20.基于所述变量提取方式以及所述变量标识从所述网页页面获取所述目标变量。
21.进一步地,基于所述变量提取方式以及所述变量标识从所述网页页面获取所述目标变量,包括:
22.基于所述变量提取方式调用对应的表达式解析插件,并将所述变量标识传送给所述表达式解析插件;
23.由所述表达式解析插件基于所述变量标识从所述网页页面获取所述目标变量。
24.进一步地,所述方法还包括:
25.预先针对内容解析表达式设置对应的表达式解析插件;所述表达式解析插件用于从相应的网页页面提取所述内容解析表达式中配置的目标变量。
26.进一步地,所述方法还包括:
27.预先针对内容处理表达式设置对应的表达式处理插件;所述表达式处理插件用于按照内容处理表达式配置的参数对所述目标变量进行相应处理。
28.进一步地,所述方法还包括:
29.在流程图制作页面上展示候选的流程组件;
30.检测到对候选的所述流程组件的拖拽操作后,在所述流程图制作页面的主编辑区域生成并展示被拖动的所述流程组件的实例;
31.响应于对所述主编辑区域展示的所述流程组件的实例的编辑操作,获取编辑操作对应的编辑内容;
32.基于所述编辑内容生成配置内容,将所述配置内容与所述流程组件的实例关联存储在内容提取流程图对应的流程图配置信息中。
33.进一步地,所述方法还包括:
34.响应于对所述主编辑区展示的两个所述流程组件的实例进行前后执行顺序的关联操作,基于所述关联操作指定的关联方向建立两个所述流程组件的实例之间的前后执行顺序;
35.将两个所述流程组件的实例之间的前后执行顺序关联存储在内容提取流程图对应的流程图配置信息中。
36.第二方面,本公开实施例中提供了一种内容提取装置,包括:
37.第一获取模块,被配置为获取内容提取流程图;所述内容提取流程图包括按顺序连接的多个流程组件,所述多个流程组件用于配置流程图配置信息;
38.第一解析模块,被配置为解析所述内容提取流程图中的各个流程组件以及顺序关系,获得流程图配置信息;所述流程图配置信息包括内容提取地址和内容解析表达式;
39.提取模块,被配置为基于所述内容提取地址获取网页页面;
40.第二解析模块,被配置为基于所述内容解析表达式从所述网页页面提取目标变量;
41.存储模块,被配置为存储所述目标变量。
42.进一步地,所述流程图配置信息还包括内容处理表达式;所述装置还包括:
43.第一处理模块,被配置为基于所述内容处理表达式对所述目标变量进行处理,输
出所述目标变量的处理结果。
44.进一步地,所述流程图配置信息还包括内容循环表达式,所述内容循环表达式中至少配置有网页索引初始值以及网页索引上限值;所述存储模块之前,所述装置还包括:
45.增加模块,被配置为将所述内容循环表达式中的网页索引初始值增加设定值的网页索引当前值;
46.第二获取模块,被配置为基于所述网页索引当前值以及所述内容提取地址获得新的内容提取地址;
47.返回模块,被配置为返回所述提取模块重新执行,直至所述网页索引当前值达到所述网页索引上限值。
48.进一步地,所述提取模块,包括:
49.解析子模块,被配置为解析所述内容解析表达式中的变量提取方式及变量标识;
50.第一获取子模块,被配置为基于所述变量提取方式以及所述变量标识从所述网页页面获取所述目标变量。
51.进一步地,所述第一获取子模块,包括:
52.调用子模块,被配置为基于所述变量提取方式调用对应的表达式解析插件,并将所述变量标识传送给所述表达式解析插件;
53.第二获取子模块,被配置为由所述表达式解析插件基于所述变量标识从所述网页页面获取所述目标变量。
54.进一步地,所述装置还包括:
55.第一设置模块,被配置为预先针对内容解析表达式设置对应的表达式解析插件;所述表达式解析插件用于从相应的网页页面提取所述内容解析表达式中配置的目标变量。
56.进一步地,所述装置还包括:
57.第二设置模块,被配置为预先针对内容处理表达式设置对应的表达式处理插件;所述表达式处理插件用于按照内容处理表达式配置的参数对所述目标变量进行相应处理。
58.进一步地,所述装置还包括:
59.展示模块,被配置为在流程图制作页面上展示候选的流程组件;
60.检测模块,被配置为检测到对候选的所述流程组件的拖拽操作后,在所述流程图制作页面的主编辑区域生成并展示被拖动的所述流程组件的实例;
61.响应模块,被配置为响应于对所述主编辑区域展示的所述流程组件的实例的编辑操作,获取编辑操作对应的编辑内容;
62.生成模块,被配置为基于所述编辑内容生成配置内容,将所述配置内容与所述流程组件的实例关联存储在内容提取流程图对应的流程图配置信息中。
63.进一步地,所述装置还包括:
64.建立模块,被配置为响应于对所述主编辑区展示的两个所述流程组件的实例进行前后执行顺序的关联操作,基于所述关联操作指定的关联方向建立两个所述流程组件的实例之间的前后执行顺序;
65.关联模块,被配置为将两个所述流程组件的实例之间的前后执行顺序关联存储在内容提取流程图对应的流程图配置信息中。
66.所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或
软件包括一个或多个与上述功能相对应的模块。
67.在一个可能的设计中,上述装置的结构中包括存储器和处理器,所述存储器用于存储一条或多条支持上述装置执行上述对应方法的计算机指令,所述处理器被配置为用于执行所述存储器中存储的计算机指令。上述装置还可以包括通信接口,用于上述装置与其他设备或通信网络通信。
68.第三方面,本公开实施例提供了一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条支持上述任一装置执行上述对应方法的计算机指令,所述处理器被配置为用于执行所述存储器中存储的计算机指令。上述任一装置还可以包括通信接口,用于与其他设备或通信网络通信。
69.第四方面,本公开实施例提供了一种计算机可读存储介质,用于存储上述任一装置所用的计算机指令,其包含用于执行上述任一方法所涉及的计算机指令。
70.第五方面,本公开实施例提供了一种计算机程序产品,其包含计算机指令,该计算机指令被处理器执行时用于实现上述任一方面所述方法的步骤。
71.本公开实施例提供的技术方案可包括以下有益效果:
72.本公开实施例提出了一种内容提取方法,该内容提取方法中,相关人员可以预先配置内容提取流程图,在该内容提取流程图中配置用于提取内容的多个流程组件,该多个流程组件按顺序连接,每个流程组件中的配置内容形成配置流程图配置信息;对该内容提取流程图中的各个流程组件的配置内容以及各个流程组件之间的顺序关系进行解析,获得流程图配置信息,该流程图配置信息至少包括内容提取地址和内容解析表达式;通过内容提取地址可以获取待提取内容的网页页面,之后通过内容解析表达式可以获取该网页页面中的目标变量,该目标变量作为待提取内容存储在数据库中,最终对所有需要提取内容的网页页面都进行上述流程后,可以从数据库中得到所需要的内容。这种方式下,相关人员无需编程实现对网页页面的内容提取,而是通过配置内容提取流程图,将需要提取内容的网页页面的内容提取地址、网页页面中需要提取的目标元素的内容解析表达式等配置在内容提取流程图的各个流程组件中,并按照相应的顺序将各个流程组件连接起来形成内容提取流程图,从而由后台预先实现好的通用解析引擎对该内容提取流程图进行解析,自动从网页页面中提取出目标变量后存储在数据库中。这种方式能够降低人力成本和时间成本,提供内容提取效率。
73.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开实施例。
附图说明
74.结合附图,通过以下非限制性实施方式的详细描述,本公开实施例的其它特征、目的和优点将变得更加明显。在附图中:
75.图1示出根据本公开一实施方式的内容提取方法的流程图。
76.图2示出根据本公开一实施方式的配置有内容循环表达式的流程组件的内容提取流程图的效果示意图。
77.图3示出根据本公开一实施方式的引擎插件的调用效果示意图。
78.图4示出根据本公开一实施方式的内容提取装置的结构框图。
79.图5示出本公开实施例提供的一种电子设备。
80.图6是适于用来实现根据本公开一实施方式的内容提取方法的计算机系统的结构示意图。
具体实施方式
81.下文中,将参考附图详细描述本公开实施例的示例性实施方式,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。
82.在本公开实施例中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
83.另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开实施例。
84.图1示出根据本公开一实施方式的内容提取方法的流程图,如图1所示,所述内容提取方法包括以下步骤:
85.在步骤s101中,获取内容提取流程图;所述内容提取流程图包括按顺序连接的多个流程组件,所述多个流程组件用于配置流程图配置信息;
86.在步骤s102中,解析所述内容提取流程图中的各个流程组件以及顺序关系,获得流程图配置信息;所述流程图配置信息包括内容提取地址和内容解析表达式;
87.在步骤s103中,基于所述内容提取地址获取网页页面;
88.在步骤s104中,基于所述内容解析表达式从所述网页页面提取目标变量;
89.在步骤s105中,存储所述目标变量。
90.上文提及,目前,很多业务信息通常会以html格式的web页面为信息载体,而相关业务则需要从这些web页面中提取相应的内容,并对提取的内容按照业务需求进行处理后进行展示或者存储。
91.通常情况下,如果想要自动化的提取web页面上的内容,需要开发人员通过编程实现内容抓取脚本,并通过执行内容抓取脚本从web页面提取所需要的内容。然而业务人员通常比较熟悉业务需求,但是不具备编程能力,想要从web页面提取业务所需的内容,则需要额外的编程人员协助,需要业务人员和编程人员相互协作才能实现,人力成本和时间成本都较高。
92.因此,本公开实施例提出了一种内容提取方法,该内容提取方法中,相关人员可以预先配置内容提取流程图,在该内容提取流程图中配置用于提取内容的多个流程组件,该多个流程组件按顺序连接,每个流程组件中的配置内容形成配置流程图配置信息;对该内容提取流程图中的各个流程组件的配置内容以及各个流程组件之间的顺序关系进行解析,获得流程图配置信息,该流程图配置信息至少包括内容提取地址和内容解析表达式;通过内容提取地址可以获取待提取内容的网页页面,之后通过内容解析表达式可以获取该网页页面中的目标变量,该目标变量作为待提取内容存储在数据库中,最终对所有需要提取内容的网页页面都进行上述流程后,可以从数据库中得到所需要的内容。这种方式下,相关人员无需编程实现对网页页面的内容提取,而是通过配置内容提取流程图,将需要提取内容
的网页页面的内容提取地址、网页页面中需要提取的目标元素的内容解析表达式等配置在内容提取流程图的各个流程组件中,并按照相应的顺序将各个流程组件连接起来形成内容提取流程图,从而由后台预先实现好的通用解析引擎对该内容提取流程图进行解析,自动从网页页面中提取出目标变量后存储在数据库中。这种方式能够降低人力成本和时间成本,提供内容提取效率。
93.在本公开一实施方式中,所述流程图配置信息还包括内容处理表达式,所述方法进一步还包括以下步骤:
94.基于所述内容处理表达式对所述目标变量进行处理,输出所述目标变量的处理结果。
95.该可选的实现方式中,在内容提取流程图中还可以包括配置内容处理表达式的流程组件,配置内容处理表达式的流程组件可以在配置内容解析表达式之后,在基于内容解析表达式从网页页面解析出相应的目标变量后,可以基于内容处理表达式中的配置内容对该目标变量进行处理,得到处理结果。内容处理表达式的配置内容中可以配置对目标变量如何进行处理的处理方式,比如目标变量为字符串,则可以配置成截取目标变量中的第n至m位字符,得到的处理结果为目标变量中的第n-m位字符串。例如,内容处理表达式可以配置为“${substring(var,0,10)}”,var表示目标变量,该表达式表示从var中截取第0-10位字符串。
96.该目标变量的处理结果可以通过终端展示出来,或者通过其他所需要的通道输出出去。当然,在一些实施例中,该目标变量、目标变量的处理结果可以关联存储在数据库中,以便后续根据业务需求进行使用。
97.在本公开一实施方式中,所述流程图配置信息还包括内容循环表达式,所述内容循环表达式中至少配置有网页索引初始值以及网页索引上限值;步骤s105,即存储所述目标变量的步骤之前,所述方法进一步还包括以下步骤:
98.将所述内容循环表达式中的网页索引初始值增加设定值得到网页索引当前值;
99.基于所述网页索引当前值以及所述内容提取地址获得新的内容提取地址;
100.返回基于所述内容提取地址获取网页页面的步骤重新执行,直至所述网页索引当前值达到所述网页索引上限值。
101.该可选的实现方式中,还可以实现多个网页页面的内容循环提取,可以在内容提取流程图中配置内容循环表达式的流程组件,该内容循环表达式中至少可以配置有网页索引初始值以及网页索引上限值,在利用内容提取地址获取到第一个网页页面,并且从中提取了目标变量之后,可以基于内容循环表达式中网页索引初始值以及设定值得到网页索引当前值,也即在网页索引值的初始值之上增加设定值比如1,得到网页索引当前值,基于网页索引当前值和之前网页页面的内容提取地址可以得到新的内容提取地址,基于新的内容提取地址可以获取到新的网页页面,针对新的网页页面,还可以继续以内容解析表达式从中提取目标变量,如此循环,可以得到多个网页页面上的目标变量。内容循环表达式中配置的网页索引上限值可以用于限制网页页面的最大数量,在网页索引当前值达到网页索引上限值后,可以跳出循环,从而将所有页面中提取出的目标变量进行存储,和/或对目标变量进行相应的处理之后,再进行存储或者输出等。
102.图2示出根据本公开一实施方式的配置有内容循环表达式的流程组件的内容提取
流程图的效果示意图。如图2所示,该内容提取流程图中的第一个流程组件为网页抓取组件,该内容提取组件中可以用于配置内容提取地址,比如可配置为“http://www.url.com?page=${index}”,可以是第一个网页页面的地址,其中,${index}为表达式,通过页面循环流程组件后可以不断动态增加,以实现多个动态网页的内容提取。内容提取组件的下一流程组件是变量解析组件,该变量解析组件中用于配置内容解析表达式,比如可配置为“${page.selector(

.main’)}”或者
[0103]“${page.xpath(

#mainid’)}”;基于该两个内容解析表达式可以确定所要提取的是selector值为main的目标变量或者xpath值为mainid的目标变量。变量解析组件的下一流程组件是页面循环组件,该页面循环组件中用于配置内容循环表达式,包括网页索引初始值和网页索引上限值。
[0104]
网页索引初始值可以与第一个网页页面的地址相同。页面循环组件的下一个流程组件包括网页提取组件和变量输出组件。在循环未结束时,可以转至网页提取组件执行,而循环结束后,可以转至变量输出组件。变量输出组件用于配置内容处理表达式,变量输出组件的下一组件是变量落库组件,变量落库组件用于存储目标变量和/或目标变量的处理结果等。
[0105]
在本公开一实施方式中,步骤s104,即基于所述内容解析表达式从所述网页页面提取目标变量的步骤,进一步包括以下步骤:
[0106]
解析所述内容解析表达式中的变量提取方式及变量标识;
[0107]
基于所述变量提取方式以及所述变量标识从所述网页页面获取所述目标变量。
[0108]
该可选的实现方式中,所述内容解析表达式中可以配置变量提取方式和变量标识,该变量提取方式用于配置使用何种方式从网页页面获取所要提取的目标变量,而变量标识则是用于配置从网页页面中所要提取的目标变量的指代信息。
[0109]
在一些实施例中,变量提取方式可以基于网页页面的编写语言而定,在此不做具体限制。变量标识可以基于变量提取方式以及网页页面的编写语言而定,只要是通过配置的变量提取方式能够从网页页面中提取出变量标识指代的目标变量均可适用。
[0110]
下面以html网页页面中的内容为例,说明内容解析表达式的配置方式:
[0111]
假如通过selector内容提取方式,则根据html页面标签的css来解析并提取目标变量,假如css样式为main,则要提取目标变量的内容解析表达式可配置为:${page.selector(

.main’)},如果通过xpath内容提取方式提取,假如目标变量标签对应的id为mainid,则要提取目标变量为的内容解析表达式可配置为:${page.xpath(

#mainid’)}。
[0112]
在本公开一实施方式中,基于所述变量提取方式以及所述变量标识从所述网页页面获取所述目标变量的步骤,进一步包括以下步骤:
[0113]
基于所述变量提取方式调用对应的表达式解析插件,并将所述变量标识传送给所述表达式解析插件;
[0114]
由所述表达式解析插件基于所述变量标识从所述网页页面获取所述目标变量。
[0115]
该可选的实现方式中,可以预先针对所有可用的内容解析表达式预先编程设计表达式解析插件,基于内容解析表达式提取到变量提取方式以及变量标识后,可以基于变量提取方式确定并调用执行对应的表达式解析插件,并将提取出的变量标识传送给表达式解
析插件,使得表达式解析插件将变量标识作为输入参数执行相应的内容提取过程,该内容提取过程中,表达式解析插件从网页页面中提取变量标识对应的目标变量。
[0116]
在本公开一实施方式中,所述方法进一步还包括以下步骤:
[0117]
预先针对内容解析表达式设置对应的表达式解析插件;所述表达式解析插件用于从相应的网页页面提取所述内容解析表达式中配置的目标变量。
[0118]
该可选的实现方式中,可以针对内容解析表达式预先设置表达式解析插件,该表达式解析插件可以实现从网页页面提取目标变量的功能,是通用的引擎插件。在内容提取流程图中配置了内容解析表达式后,从内容解析表达式提取表达式类型和表达式参数,表达式类型用于指示该内容解析表达式配置的是何种类型的表达式,而表达式参数用于指示目标变量的变量标识。基于表达式类型可以确定对应的表达式解析插件,通过调用执行该对应的表达式解析插件,实现从网页页面提取相应内容,在调用该对应的表达式解析插件时,可以将提取出的表达式参数传送给表达式解析插件,表达式解析插件接收到该表达式参数后,可以确定从网页页面具体要提取的目标变量。
[0119]
在本公开一实施方式中,所述方法进一步还包括以下步骤:
[0120]
预先针对内容处理表达式设置对应的表达式处理插件;所述表达式处理插件用于按照内容处理表达式配置的参数对所述目标变量进行相应处理。
[0121]
该可选的实现方式中,可以针对内容处理表达式设置表达式处理插件,该表达式处理插件可以实现对从网页页面提取的目标变量进行相应处理的功能,是通用的引擎插件。不同的处理方式可以对应不同的表达式处理插件。在内容提取流程图中配置了内容处理表达式后,从内容处理表达式提取表达式类型和表达式参数,表达式类型用于指示该内容处理表达式配置的是何种类型的处理方式,而表达式参数用于指示对目标变量进行处理时所要用到的参数,比如截取字符的内容处理表达式中,表达式类型可以是截取字符类型,而表达式参数则是截取字符的位数。基于表达式类型可以确定对应的表达式处理插件,通过调用执行该对应的表达式处理插件,实现对目标变量的相应处理,在调用该对应的表达式处理插件时,可以将提取出的表达式参数传送给表达式处理插件,表达式处理插件接收到该表达式参数后,可以确定对目标变量如何进行具体的处理。
[0122]
图3示出根据本公开一实施方式的引擎插件的调用效果示意图。如图3所示,表达式语言解析器可以包括插件加载器和插件执行器,插件加载器可以加载多种插件,插件执行器可以从流程组件的配置内容中提取表达式以及表达式参数,基于提取出的表达式确定所要调用的插件后,由插件加载器加载对应的插件,并将提取出的表达式参数传送给插件,由插件基于表达式参数执行相应的处理流程,从而实现表达式对应的处理功能。
[0123]
在本公开一实施方式中,所述方法进一步还包括以下步骤:
[0124]
在流程图制作页面上展示候选的流程组件;
[0125]
检测到对候选的所述流程组件的拖拽操作后,在所述流程图制作页面的主编辑区域生成并展示被拖动的所述流程组件的实例;
[0126]
响应于对所述主编辑区域展示的所述流程组件的实例的编辑操作,获取编辑操作对应的编辑内容;
[0127]
基于所述编辑内容生成配置内容,将所述配置内容与所述流程组件的实例关联存储在内容提取流程图对应的流程图配置信息中。
[0128]
该可选的实现方式中,可以提供人机交互界面,相关人员通过该人机交互界面可以打开流程图制作页面,流程图制作页面上可以展示全部或者部分类型的候选流程组件。不同类型的流程组件可以用于配置不同类型的内容,比如内容提取地址、内容解析表达式、内容处理表达式等。在一些实施例中,不同处理方式可以对应同一种类型的流程组件,也可以对应不同类型的流程组件,在对应同一种类型的流程组件时,可以通过解析内容处理表达式得到不同处理方式。在对应不同种类的流程组件时,可以通过流程组件的类型即可确定不同处理方式。
[0129]
相关人员在制作内容提取流程图时,可以通过拖拽候选流程组件的方式,将其拖拽至流程图制作页面的主编辑区域内。人机交互界面上检测到该拖拽动作后,在该主编辑区域的相应位置处生成并展示相应的候选流程组件的实例。
[0130]
相关人员对生成并展示在主编辑区域内的流程组件进行编辑时,可以获取相关人员的编辑内容,并基于编辑内容生成该流程组件的配置内容,该配置内容与流程组件的实例关联存储在内容提取流程图对应的流程图配置信息中。
[0131]
在完成了对整个内容提取流程图的编辑操作后,可以得到最终的流程图配置信息。进而可以基于该流程图配置信息从相应网页页面获取相应的内容,如目标变量等。
[0132]
在本公开一实施方式中,所述方法进一步还包括以下步骤:
[0133]
响应于对所述主编辑区展示的两个所述流程组件的实例进行前后执行顺序的关联操作,基于所述关联操作指定的关联方向建立两个所述流程组件的实例之间的前后执行顺序;
[0134]
将两个所述流程组件的实例之间的前后执行顺序关联存储在内容提取流程图对应的流程图配置信息中。
[0135]
该可选的实现方式中,制作内容提取流程图时,还可以由相关人员指定任意两个流程组件之间的前后执行顺序。相关人员可以通过在两个流程组件之间进行连线并指定连线上的方向的方式,指定两个流程组件之间的前后执行顺序,也可以通过其他方式指定两个流程组件之间的前后执行顺序。在人机交互界面上检测到相关人员指定两个流程组件之间的前后执行顺序的关联操作后,可以基于该关联操作指定的关联方向建立该两个流程组件之间的前后执行顺序,该前后执行顺序也可以存储在该内容提取流程图对应的流程图配置信息中。在最终得到内容提取流程图之后,对该内容提取流程图对应的流程图配置信息进行处理时,可以通过该前后执行顺序关系确定先解析哪个流程组件,后解析哪个流程组件等。在一些实施例中,该前后执行顺序不仅是解析流程组件的前后执行顺序,也是各个流程组件对应的处理流程的前后执行顺序,各个流程组件对应的处理流程可以包括网页页面获取处理流程、基于解析得到的配置内容调用相应的插件实现相应的功能等流程。具体,可以参见上文中的描述,在此不再赘述。
[0136]
下述为本公开装置实施例,可以用于执行本公开方法实施例。
[0137]
图4示出根据本公开一实施方式的内容提取装置的结构框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图4所示,所述内容提取装置包括:
[0138]
第一获取模块401,被配置为获取内容提取流程图;所述内容提取流程图包括按顺序连接的多个流程组件,所述多个流程组件用于配置流程图配置信息;
[0139]
第一解析模块402,被配置为解析所述内容提取流程图中的各个流程组件以及顺序关系,获得流程图配置信息;所述流程图配置信息包括内容提取地址和内容解析表达式;
[0140]
提取模块403,被配置为基于所述内容提取地址获取网页页面;
[0141]
第二解析模块404,被配置为基于所述内容解析表达式从所述网页页面提取目标变量;
[0142]
存储模块405,被配置为存储所述目标变量。
[0143]
上文提及,目前,很多业务信息通常会以html格式的web页面为信息载体,而相关业务则需要从这些web页面中提取相应的内容,并对提取的内容按照业务需求进行处理后进行展示或者存储。
[0144]
通常情况下,如果想要自动化的提取web页面上的内容,需要开发人员通过编程实现内容抓取脚本,并通过执行内容抓取脚本从web页面提取所需要的内容。然而业务人员通常比较熟悉业务需求,但是不具备编程能力,想要从web页面提取业务所需的内容,则需要额外的编程人员协助,需要业务人员和编程人员相互协作才能实现,人力成本和时间成本都较高。
[0145]
因此,本公开实施例提出了一种内容提取装置,该内容提取装置中,相关人员可以预先配置内容提取流程图,在该内容提取流程图中配置用于提取内容的多个流程组件,该多个流程组件按顺序连接,每个流程组件中的配置内容形成配置流程图配置信息;对该内容提取流程图中的各个流程组件的配置内容以及各个流程组件之间的顺序关系进行解析,获得流程图配置信息,该流程图配置信息至少包括内容提取地址和内容解析表达式;通过内容提取地址可以获取待提取内容的网页页面,之后通过内容解析表达式可以获取该网页页面中的目标变量,该目标变量作为待提取内容存储在数据库中,最终对所有需要提取内容的网页页面都进行上述流程后,可以从数据库中得到所需要的内容。这种方式下,相关人员无需编程实现对网页页面的内容提取,而是通过配置内容提取流程图,将需要提取内容的网页页面的内容提取地址、网页页面中需要提取的目标元素的内容解析表达式等配置在内容提取流程图的各个流程组件中,并按照相应的顺序将各个流程组件连接起来形成内容提取流程图,从而由后台预先实现好的通用解析引擎对该内容提取流程图进行解析,自动从网页页面中提取出目标变量后存储在数据库中。这种方式能够降低人力成本和时间成本,提供内容提取效率。
[0146]
在本公开一实施方式中,所述流程图配置信息还包括内容处理表达式;所述装置还包括:
[0147]
第一处理模块,被配置为基于所述内容处理表达式对所述目标变量进行处理,输出所述目标变量的处理结果。
[0148]
该可选的实现方式中,在内容提取流程图中还可以包括配置内容处理表达式的流程组件,配置内容处理表达式的流程组件可以在配置内容解析表达式之后,在基于内容解析表达式从网页页面解析出相应的目标变量后,可以基于内容处理表达式中的配置内容对该目标变量进行处理,得到处理结果。内容处理表达式的配置内容中可以配置对目标变量如何进行处理的处理方式,比如目标变量为字符串,则可以配置成截取目标变量中的第n至m位字符,得到的处理结果为目标变量中的第n-m位字符串。例如,内容处理表达式可以配置为“${substring(var,0,10)}”,var表示目标变量,该表达式表示从var中截取第0-10位字
符串。
[0149]
该目标变量的处理结果可以通过终端展示出来,或者通过其他所需要的通道输出出去。当然,在一些实施例中,该目标变量、目标变量的处理结果可以关联存储在数据库中,以便后续根据业务需求进行使用。
[0150]
在本公开一实施方式中,所述流程图配置信息还包括内容循环表达式,所述内容循环表达式中至少配置有网页索引初始值以及网页索引上限值;所述存储模块之前,所述装置还包括:
[0151]
增加模块,被配置为将所述内容循环表达式中的网页索引初始值增加设定值的网页索引当前值;
[0152]
第二获取模块,被配置为基于所述网页索引当前值以及所述内容提取地址获得新的内容提取地址;
[0153]
返回模块,被配置为返回所述提取模块重新执行,直至所述网页索引当前值达到所述网页索引上限值。
[0154]
该可选的实现方式中,还可以实现多个网页页面的内容循环提取,可以在内容提取流程图中配置内容循环表达式的流程组件,该内容循环表达式中至少可以配置有网页索引初始值以及网页索引上限值,在利用内容提取地址获取到第一个网页页面,并且从中提取了目标变量之后,可以基于内容循环表达式中网页索引初始值以及设定值得到网页索引当前值,也即在网页索引值的初始值之上增加设定值比如1,得到网页索引当前值,基于网页索引当前值和之前网页页面的内容提取地址可以得到新的内容提取地址,基于新的内容提取地址可以获取到新的网页页面,针对新的网页页面,还可以继续以内容解析表达式从中提取目标变量,如此循环,可以得到多个网页页面上的目标变量。内容循环表达式中配置的网页索引上限值可以用于限制网页页面的最大数量,在网页索引当前值达到网页索引上限值后,可以跳出循环,从而将所有页面中提取出的目标变量进行存储,和/或对目标变量进行相应的处理之后,再进行存储或者输出等。
[0155]
图2示出根据本公开一实施方式的配置有内容循环表达式的流程组件的内容提取流程图的效果示意图。如图2所示,该内容提取流程图中的第一个流程组件为网页抓取组件,该内容提取组件中可以用于配置内容提取地址,比如可配置为“http://www.url.com?page=${index}”,可以是第一个网页页面的地址,其中,${index}为表达式,通过页面循环流程组件后可以不断动态增加,以实现多个动态网页的内容提取。内容提取组件的下一流程组件是变量解析组件,该变量解析组件中用于配置内容解析表达式,比如可配置为“${page.selector(

.main’)}”或者
[0156]“${page.xpath(

#mainid’)}”;基于该两个内容解析表达式可以确定所要提取的是selector值为main的目标变量或者xpath值为mainid的目标变量。变量解析组件的下一流程组件是页面循环组件,该页面循环组件中用于配置内容循环表达式,包括网页索引初始值和网页索引上限值。
[0157]
网页索引初始值可以与第一个网页页面的地址相同。页面循环组件的下一个流程组件包括网页提取组件和变量输出组件。在循环未结束时,可以转至网页提取组件执行,而循环结束后,可以转至变量输出组件。变量输出组件用于配置内容处理表达式,变量输出组件的下一组件是变量落库组件,变量落库组件用于存储目标变量和/或目标变量的处理结
果等。
[0158]
在本公开一实施方式中,所述提取模块,包括:
[0159]
解析子模块,被配置为解析所述内容解析表达式中的变量提取方式及变量标识;
[0160]
第一获取子模块,被配置为基于所述变量提取方式以及所述变量标识从所述网页页面获取所述目标变量。
[0161]
该可选的实现方式中,所述内容解析表达式中可以配置变量提取方式和变量标识,该变量提取方式用于配置使用何种方式从网页页面获取所要提取的目标变量,而变量标识则是用于配置从网页页面中所要提取的目标变量的指代信息。
[0162]
在一些实施例中,变量提取方式可以基于网页页面的编写语言而定,在此不做具体限制。变量标识可以基于变量提取方式以及网页页面的编写语言而定,只要是通过配置的变量提取方式能够从网页页面中提取出变量标识指代的目标变量均可适用。
[0163]
下面以html网页页面中的内容为例,说明内容解析表达式的配置方式:
[0164]
假如通过selector内容提取方式,则根据html页面标签的css来解析并提取目标变量,假如css样式为main,则要提取目标变量的内容解析表达式可配置为:${page.selector(

.main’)},如果通过xpath内容提取方式提取,假如目标变量标签对应的id为mainid,则要提取目标变量为的内容解析表达式可配置为:${page.xpath(

#mainid’)}。
[0165]
在本公开一实施方式中,所述第一获取子模块,包括:
[0166]
调用子模块,被配置为基于所述变量提取方式调用对应的表达式解析插件,并将所述变量标识传送给所述表达式解析插件;
[0167]
第二获取子模块,被配置为由所述表达式解析插件基于所述变量标识从所述网页页面获取所述目标变量。
[0168]
该可选的实现方式中,可以预先针对所有可用的内容解析表达式预先编程设计表达式解析插件,基于内容解析表达式提取到变量提取方式以及变量标识后,可以基于变量提取方式确定并调用执行对应的表达式解析插件,并将提取出的变量标识传送给表达式解析插件,使得表达式解析插件将变量标识作为输入参数执行相应的内容提取过程,该内容提取过程中,表达式解析插件从网页页面中提取变量标识对应的目标变量。
[0169]
在本公开一实施方式中,所述装置还包括:
[0170]
第一设置模块,被配置为预先针对内容解析表达式设置对应的表达式解析插件;所述表达式解析插件用于从相应的网页页面提取所述内容解析表达式中配置的目标变量。
[0171]
该可选的实现方式中,可以针对内容解析表达式预先设置表达式解析插件,该表达式解析插件可以实现从网页页面提取目标变量的功能,是通用的引擎插件。在内容提取流程图中配置了内容解析表达式后,从内容解析表达式提取表达式类型和表达式参数,表达式类型用于指示该内容解析表达式配置的是何种类型的表达式,而表达式参数用于指示目标变量的变量标识。基于表达式类型可以确定对应的表达式解析插件,通过调用执行该对应的表达式解析插件,实现从网页页面提取相应内容,在调用该对应的表达式解析插件时,可以将提取出的表达式参数传送给表达式解析插件,表达式解析插件接收到该表达式参数后,可以确定从网页页面具体要提取的目标变量。
[0172]
在本公开一实施方式中,所述装置还包括:
[0173]
第二设置模块,被配置为预先针对内容处理表达式设置对应的表达式处理插件;所述表达式处理插件用于按照内容处理表达式配置的参数对所述目标变量进行相应处理。
[0174]
该可选的实现方式中,可以针对内容处理表达式设置表达式处理插件,该表达式处理插件可以实现对从网页页面提取的目标变量进行相应处理的功能,是通用的引擎插件。不同的处理方式可以对应不同的表达式处理插件。在内容提取流程图中配置了内容处理表达式后,从内容处理表达式提取表达式类型和表达式参数,表达式类型用于指示该内容处理表达式配置的是何种类型的处理方式,而表达式参数用于指示对目标变量进行处理时所要用到的参数,比如截取字符的内容处理表达式中,表达式类型可以是截取字符类型,而表达式参数则是截取字符的位数。基于表达式类型可以确定对应的表达式处理插件,通过调用执行该对应的表达式处理插件,实现对目标变量的相应处理,在调用该对应的表达式处理插件时,可以将提取出的表达式参数传送给表达式处理插件,表达式处理插件接收到该表达式参数后,可以确定对目标变量如何进行具体的处理。
[0175]
图3示出根据本公开一实施方式的引擎插件的调用效果示意图,如图3所示,表达式语言解析器可以包括插件加载器和插件执行器,插件加载器可以加载多种插件,插件执行器可以从流程组件的配置内容中提取表达式以及表达式参数,基于提取出的表达式确定所要调用的插件后,由插件加载器加载对应的插件,并将提取出的表达式参数传送给插件,由插件基于表达式参数执行相应的处理流程,从而实现表达式对应的处理功能。
[0176]
在本公开一实施方式中,所述装置还包括:
[0177]
展示模块,被配置为在流程图制作页面上展示候选的流程组件;
[0178]
检测模块,被配置为检测到对候选的所述流程组件的拖拽操作后,在所述流程图制作页面的主编辑区域生成并展示被拖动的所述流程组件的实例;
[0179]
响应模块,被配置为响应于对所述主编辑区域展示的所述流程组件的实例的编辑操作,获取编辑操作对应的编辑内容;
[0180]
生成模块,被配置为基于所述编辑内容生成配置内容,将所述配置内容与所述流程组件的实例关联存储在内容提取流程图对应的流程图配置信息中。
[0181]
该可选的实现方式中,可以提供人机交互界面,相关人员通过该人机交互界面可以打开流程图制作页面,流程图制作页面上可以展示全部或者部分类型的候选流程组件。不同类型的流程组件可以用于配置不同类型的内容,比如内容提取地址、内容解析表达式、内容处理表达式等。在一些实施例中,不同处理方式可以对应同一种类型的流程组件,也可以对应不同类型的流程组件,在对应同一种类型的流程组件时,可以通过解析内容处理表达式得到不同处理方式。在对应不同种类的流程组件时,可以通过流程组件的类型即可确定不同处理方式。
[0182]
相关人员在制作内容提取流程图时,可以通过拖拽候选流程组件的方式,将其拖拽至流程图制作页面的主编辑区域内。人机交互界面上检测到该拖拽动作后,在该主编辑区域的相应位置处生成并展示相应的候选流程组件的实例。
[0183]
相关人员对生成并展示在主编辑区域内的流程组件进行编辑时,可以获取相关人员的编辑内容,并基于编辑内容生成该流程组件的配置内容,该配置内容与流程组件的实例关联存储在内容提取流程图对应的流程图配置信息中。
[0184]
在完成了对整个内容提取流程图的编辑操作后,可以得到最终的流程图配置信
息。进而可以基于该流程图配置信息从相应网页页面获取相应的内容,如目标变量等。
[0185]
在本公开一实施方式中,所述装置还包括:
[0186]
建立模块,被配置为响应于对所述主编辑区展示的两个所述流程组件的实例进行前后执行顺序的关联操作,基于所述关联操作指定的关联方向建立两个所述流程组件的实例之间的前后执行顺序;
[0187]
关联模块,被配置为将两个所述流程组件的实例之间的前后执行顺序关联存储在内容提取流程图对应的流程图配置信息中。
[0188]
该可选的实现方式中,制作内容提取流程图时,还可以由相关人员指定任意两个流程组件之间的前后执行顺序。相关人员可以通过在两个流程组件之间进行连线并指定连线上的方向的方式,指定两个流程组件之间的前后执行顺序,也可以通过其他方式指定两个流程组件之间的前后执行顺序。在人机交互界面上检测到相关人员指定两个流程组件之间的前后执行顺序的关联操作后,可以基于该关联操作指定的关联方向建立该两个流程组件之间的前后执行顺序,该前后执行顺序也可以存储在该内容提取流程图对应的流程图配置信息中。在最终得到内容提取流程图之后,对该内容提取流程图对应的流程图配置信息进行处理时,可以通过该前后执行顺序关系确定先解析哪个流程组件,后解析哪个流程组件等。在一些实施例中,该前后执行顺序不仅是解析流程组件的前后执行顺序,也是各个流程组件对应的处理流程的前后执行顺序,各个流程组件对应的处理流程可以包括网页页面获取处理流程、基于解析得到的配置内容调用相应的插件实现相应的功能等流程。具体,可以参见上文中的描述,在此不再赘述。
[0189]
图5示出本公开实施例提供的一种电子设备。如图5所示,所述电子设备500包括存储器501和处理器502;其中,
[0190]
所述存储器501用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器502执行以实现上述任一方法步骤。
[0191]
图6是适于用来实现根据本公开一实施方式的内容提取方法的计算机系统的结构示意图。
[0192]
如图6所示,计算机系统600包括处理单元601,其可以根据存储在只读存储器(rom)602中的程序或者从存储部分608加载到随机访问存储器(ram)603中的程序而执行上述实施方式中的各种处理。在ram603中,还存储有计算机系统600操作所需的各种程序和数据。处理单元601、rom602以及ram603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。
[0193]
以下部件连接至i/o接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至i/o接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。其中,所述处理单元601可实现为cpu、gpu、tpu、fpga、npu等处理单元。
[0194]
特别地,根据本公开的实施方式,上文描述的方法可以被实现为计算机软件程序。例如,本公开的实施方式包括一种计算机程序产品,其包括有形地包含在及其可读介质上
的计算机程序,所述计算机程序包含用于执行所述数据传输方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。
[0195]
本公开实施例还公开了一种计算机程序产品,所述计算机程序产品包括计算机程序/指令,该计算机程序/指令被处理器执行时实现上述任一方法步骤。
[0196]
附图中的流程图和框图,图示了按照本公开各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0197]
描述于本公开实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
[0198]
作为另一方面,本公开实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开实施例的方法。
[0199]
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开实施例中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

技术特征:
1.一种内容提取方法,包括:获取内容提取流程图;所述内容提取流程图包括按顺序连接的多个流程组件,所述多个流程组件用于配置流程图配置信息;解析所述内容提取流程图中的各个流程组件以及顺序关系,获得流程图配置信息;所述流程图配置信息包括内容提取地址和内容解析表达式;基于所述内容提取地址获取网页页面;基于所述内容解析表达式从所述网页页面提取目标变量;存储所述目标变量。2.根据权利要求1所述的方法,其中,所述流程图配置信息还包括内容处理表达式;所述方法还包括:基于所述内容处理表达式对所述目标变量进行处理,输出所述目标变量的处理结果。3.根据权利要求1所述的方法,其中,所述流程图配置信息还包括内容循环表达式,所述内容循环表达式中至少配置有网页索引初始值以及网页索引上限值;存储所述目标变量之前,所述方法还包括:将所述内容循环表达式中的网页索引初始值增加设定值得到网页索引当前值;基于所述网页索引当前值以及所述内容提取地址获得新的内容提取地址;返回基于所述内容提取地址获取网页页面的步骤重新执行,直至所述网页索引当前值达到所述网页索引上限值。4.根据权利要求1所述的方法,其中,基于所述内容解析表达式从所述网页页面提取目标变量,包括:解析所述内容解析表达式中的变量提取方式及变量标识;基于所述变量提取方式以及所述变量标识从所述网页页面获取所述目标变量。5.根据权利要求4所述的方法,其中,基于所述变量提取方式以及所述变量标识从所述网页页面获取所述目标变量,包括:基于所述变量提取方式调用对应的表达式解析插件,并将所述变量标识传送给所述表达式解析插件;由所述表达式解析插件基于所述变量标识从所述网页页面获取所述目标变量。6.根据权利要求1-5任一项所述的方法,其中,所述方法还包括:预先针对内容解析表达式设置对应的表达式解析插件;所述表达式解析插件用于从相应的网页页面提取所述内容解析表达式中配置的目标变量。7.一种内容提取装置,包括:第一获取模块,被配置为获取内容提取流程图;所述内容提取流程图包括按顺序连接的多个流程组件,所述多个流程组件用于配置流程图配置信息;第一解析模块,被配置为解析所述内容提取流程图中的各个流程组件以及顺序关系,获得流程图配置信息;所述流程图配置信息包括内容提取地址和内容解析表达式;提取模块,被配置为基于所述内容提取地址获取网页页面;第二解析模块,被配置为基于所述内容解析表达式从所述网页页面提取目标变量;存储模块,被配置为存储所述目标变量。8.一种电子设备,包括存储器和处理器;其中,
所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现权利要求1-6任一项所述方法的步骤。9.一种计算机可读存储介质,其上存储有计算机指令,其中,该计算机指令被处理器执行时实现权利要求1-6任一项所述方法的步骤。10.一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现权利要求1-6任一项所述方法的步骤。

技术总结
本公开实施例公开了一种内容提取方法、装置、电子设备、存储介质及程序产品,所述方法包括:获取内容提取流程图;所述内容提取流程图包括按顺序连接的多个流程组件,所述多个流程组件用于配置流程图配置信息;解析所述内容提取流程图中的各个流程组件以及顺序关系,获得流程图配置信息;所述流程图配置信息包括内容提取地址和内容解析表达式;基于所述内容提取地址获取网页页面;基于所述内容解析表达式从所述网页页面提取目标变量;存储所述目标变量。这种方式能够降低人力成本和时间成本,提供内容提取效率。供内容提取效率。供内容提取效率。


技术研发人员:邓大权 金飞 刘阳 莫康王
受保护的技术使用者:简链科技(广东)有限公司
技术研发日:2023.06.30
技术公布日:2023/9/22
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

航空商城 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

评论

相关推荐