一种数据采集方法、装置、可读介质及电子设备与流程

文档序号:17843342发布日期:2019-06-11 21:27阅读:149来源:国知局

本发明涉及计算机技术领域,尤其涉及一种数据采集方法、装置、可读介质及电子设备。



背景技术:

随着计算机应用技术的发展,各业务机构(比如,医疗机构)通常会部署多个用于实现不同业务的业务系统(比如,放射信息管理系统、电子病历系统、医学影像存档与通信系统),各业务系统实现相应的业务时,可产生不同的业务数据。为了满足大数据研究需求或实现不同业务系统之间进行数据互通,需要对业务系统下的业务数据进行采集。

目前,由于各业务系统可能采用不同的开发语言,通常需要与业务系统的供应商进行协调,更改原业务系统的代码以向外部开放提供业务数据的数据交互接口,后续则可通过调用开放的数据交互接口对业务系统下的业务数据进行采集。

当业务系统的供应商不同意开放数据交互接口时,则无法对业务系统下的业务数据进行采集。



技术实现要素:

本发明提供一种数据采集方法、装置、可读介质及电子设备,无需与业务系统的供应商进行协调以更改业务系统的代码,即可采集业务系统下的业务数据。

第一方面,本发明提供了一种数据采集方法,包括:

监听并记录指定终端向目标业务系统发送的第一http(hypertexttransferprotocol,超文本传输协议)请求;

根据记录的所述第一http请求模拟客户端程序;

通过模拟的所述客户端程序向所述目标业务系统发送第二http请求,接收所述目标业务系统根据所述第二http请求提供的第一反馈信息,所述第二http请求与记录的所述第一http请求具有相同的请求规则且携带相同的请求内容;

对所述第一反馈信息进行动态嗅探以提取所述目标业务系统下的业务数据。

优选地,

所述对所述第一反馈信息进行动态嗅探以提取所述目标业务系统下的业务数据,包括:

对所述第一反馈信息进行动态嗅探以确定所述第一反馈信息中承载数据的至少一个下级url(uniformresourcelocator,统一资源定位符);

通过模拟的所述客户端程序向所述目标业务系统发送携带所述下级url的第三http请求,接收所述目标业务系统根据所述第三http请求提供的第二反馈信息;

对所述第二反馈信息进行动态嗅探以提取所述第二反馈信息中携带的所述目标业务系统下的业务数据。

优选地,

还包括:预先设置最小延迟时间和最大延迟时间;

则,

所述向所述目标业务系统发送携带所述下级url的第三http请求,包括:

a1、从确定的各个所述下级url中选择一个未被选择过的所述下级url;

a2、通过模拟的所述客户端程序向所述目标业务系统发送携带选择的所述下级url的第三http请求;

a3、检测是否存在未被选择过的所述下级url,如果是,则执行a4;否则,结束当前流程;

a4、生成不小于所述最小延迟时间且不大于所述最大延迟时间的随机延迟时间,并在所述随机延迟之间之后执行a1。

优选地,

还包括:根据预设的至少一个过滤字段对提取的所述业务数据进行数据清洗。

优选地,

还包括:利用进行数据清洗后的所述业务数据形成对应于所述下级url的xml文件。

优选地,

所述监听并记录指定终端向目标业务系统发送的第一http请求,包括:

监听指定终端通过其网卡发出的http请求;

检测监听的所述http请求是否携带指定关键字,若是,则将所述http请求记录为向目标业务系统发送的第一http请求。

优选地,

还包括:预先设置并存储对应于所述目标业务系统的用户登录信息;

在接收到所述目标业务系统发送的验证请求时,接收第三方业务系统提供的验证信息,并将所述用户登录信息及所述验证信息发送至所述目标业务系统。

第二方面,本发明提供了一种数据采集装置,包括:

监听处理模块,用于监听并记录指定终端向目标业务系统发送的第一http请求;

信息获取模块,用于根据记录的所述第一http请求模拟客户端程序;通过模拟的所述客户端程序向所述目标业务系统发送第二http请求,接收所述目标业务系统根据所述第二http请求提供的第一反馈信息,所述第二http请求与记录的所述第一http请求具有相同的请求规则且携带相同的请求内容;

数据提取模块,用于对所述第一反馈信息进行动态嗅探以提取所述目标业务系统下的业务数据。

第三方面,本发明提供了一种可读介质,包括执行指令,当电子设备的处理器执行所述执行指令时,所述电子设备执行如第一方面中任一所述的方法。

第四方面,本发明提供了一种电子设备,包括处理器以及存储有执行指令的存储器,当所述处理器执行所述存储器存储的所述执行指令时,所述处理器执行如第一方面中任一所述的方法。

本发明提供了一种数据采集方法、装置、可读介质及电子设备,每个业务系统通常向特定的用户群体开放,比如,医疗机构的放射信息管理系统通常仅向医疗机构中放射科的医生开放,具体为特定的用户可触发部署在指定终端(比如,部署在放射科的个人计算机)上的浏览器(也可以是与业务系统相对应的其他计算机应用程序),通过指定终端向业务系统发送对应的http请求,进而通过浏览器显示业务系统根据其接收的http请求提供的反馈信息所对应的应用程序界面,而该反馈信息携带目标业务系统下的业务数据;本发明提供的技术方案通过对指定终端向目标业务系统发送的第一http请求进行监听并记录,然后则可根据第一http请求模拟出可以与目标业务系统进行通信的客户端程序,即模拟的客户端程序可以形成并发送能够被目标业务系统响应的、与记录的第一http请求具有相同请求规则的http请求,进一步通过模拟的客户端程序向目标业务系统发送与记录的第一http请求具有相同请求内容的第二http请求之后,模拟的客户端程序即可接收目标业务系统根据第二http请求提供的第一反馈信息,该第一反馈信息与目标业务系统根据该第一http请求向指定终端提供的反馈信息应完全相同,因此,后续仅需要对客户端程序接收的第一反馈信息进行动态嗅探,即可提取到目标业务系统下的业务数据。综上可见,本发明实施例提供的技术方案,无需与业务系统的供应商进行协调以更改业务系统的代码,即可采集业务系统下的业务数据。

上述的非惯用的优选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。

附图说明

为了更清楚地说明本发明实施例或现有的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一实施例提供的一种数据采集方法的流程示意图;

图2为本发明一实施例中通过xpath描述的反馈信息的组织结构示意图;

图3为本发明一实施例提供的一种数据采集装置的结构示意图;

图4为本发明一实施例提供的一种电子设备的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合具体实施例及相应的附图对本发明的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提供了一种数据采集方法,包括:

步骤101,监听并记录指定终端向目标业务系统发送的第一超文本传输协议http请求;

步骤102,根据记录的所述第一http请求模拟客户端程序;

步骤103,通过模拟的所述客户端程序向所述目标业务系统发送第二http请求,接收所述目标业务系统根据所述第二http请求提供的第一反馈信息,所述第二http请求与记录的所述第一http请求具有相同的请求规则且携带相同的请求内容;

步骤104,对所述第一反馈信息进行动态嗅探以提取所述目标业务系统下的业务数据。

如图1所示的实施例,每个业务系统通常向特定的用户群体开放,比如,医疗机构的放射信息管理系统通常仅向医疗机构中放射科的医生开放,具体为特定的用户可触发部署在指定终端(比如,部署在放射科的个人计算机)上的浏览器(也可以是与业务系统相对应的其他计算机应用程序),通过指定终端向业务系统发送对应的http请求,进而通过浏览器显示业务系统根据其接收的http请求提供的反馈信息所对应的应用程序界面,而该反馈信息携带目标业务系统下的业务数据;本发明提供的技术方案通过对指定终端向目标业务系统发送的第一http请求进行监听并记录,然后则可根据第一http请求模拟出可以与目标业务系统进行通信的客户端程序,即模拟的客户端程序可以形成并发送能够被目标业务系统响应的、与记录的第一http请求具有相同请求规则的http请求,进一步通过模拟的客户端程序向目标业务系统发送与记录的第一http请求具有相同请求内容的第二http请求之后,模拟的客户端程序即可接收目标业务系统根据第二http请求提供的第一反馈信息,该第一反馈信息与目标业务系统根据该第一http请求向指定终端提供的反馈信息应完全相同,因此,后续仅需要对客户端程序接收的第一反馈信息进行动态嗅探,即可提取到目标业务系统下的业务数据。综上可见,本发明实施例提供的技术方案,无需与业务系统的供应商进行协调以更改业务系统的代码,即可采集业务系统下的业务数据。

相应的,因无需花费过多的时间与各个业务系统的供应商进行协调,即可从多个不同的业务系统分别采集业务数据,后续过程中能够更为快速而高效的将多个不同业务系统下的业务数据提供给大数据管理平台。同时,从一个业务系统采集的业务数据也可提供给另一个业务系统,实现不同业务系统间的数据互通。

对于动态界面来说,由于目标业务系统根据指定终端发送的http请求提供的反馈信息,仅为部署在指定终端上的浏览器(或其他与目标业务系统相对应的计算机应用程序)所显示的动态界面中的局部信息,业务系统(或部署有业务系统的服务器)仅向浏览器提供xml(extensiblemarkuplanguage,可扩展标记语言)或者json格式的反馈信息,后续通过浏览器的js代码将反馈信息渲染到浏览器或客户端程序所显示的网页界面上,即获取数据的真实url也许并不是浏览器所显示的url,本次获取反馈信息的http请求可能由浏览器的js代码发起。本发明实施例提供的技术方案中,不再局限于浏览器地址栏所显示的url,通过对指定终端发送的http请求进行监听,能够截获浏览器中js(javascript)代码发起的隐藏的http请求,截获的http请求中必然携带业务系统下承载业务数据的真实url,从而实现对目标业务系统下的业务数据进行完整而有效的采集。

这里,具体可以使用c++或者其他编程语言模拟可以与目标业务系统进行通信的客户端程序,即模拟出可以形成http请求、向目标业务系统发送形成的http请求、且能够接收到目标业务系统根据该http请求提供的反馈信息的客户端程序。

本发明各个实施例尤其适用于采集医疗数据,即目标业务系统具体可以是医院信息系统、实验室信息管理系统、放射信息管理系统、电子病历系统、医学影像存档与通讯系统等医疗数据管理系统。

目标业务系统根据接收的第一http请求提供的第一反馈信息中除携带业务数据外,通常还存在一个或多个承载数据的下级url,因此,为了实现对业务数据进行更为完整、全面的采集,本发明一个实施例中,所述对所述第一反馈信息进行动态嗅探以提取所述目标业务系统下的业务数据,包括:

对所述第一反馈信息进行动态嗅探以确定所述第一反馈信息中承载数据的至少一个下级url;

通过模拟的所述客户端程序向所述目标业务系统发送携带所述下级url的第三http请求,接收所述目标业务系统根据所述第三http请求提供的第二反馈信息;

对所述第二反馈信息进行动态嗅探以提取所述第二反馈信息中携带的所述目标业务系统下的业务数据。

需要说明的是,模拟的客户端程序向目标业务系统发送携带下级url的第三http请求时,需要根据记录的第一http请求的请求规则形成携带下级url的第三http请求,模拟的客户端程序形成并发送的第三http请求与记录的第一http请求具有相同的请求规则。

显而易见的,对所述第一反馈信息进行动态嗅探时,除确定该第一反馈信息所携带的各个下级url外,还可直接提取第一反馈信息中携带的业务数据。

该实施例中,对接收的第一反馈信息进行动态嗅探以确定第一反馈信息中承载数据的至少一个下级url时,可具体采用深度优先搜索方式或广度优先搜索方式中的任意一种进行搜索。

具体地,目标业务系统提供的反馈信息通常是json或xml文件,即目标业务系统根据其接收的http请求向模拟的客户端程序提供的反馈信息通常是json或xml文件,对反馈信息进行动态嗅探时,具体为首先将模拟的客户端程序接收的json或xml文件转换成html(hypertextmarkuplanguage,超文本标记语言)文档,然后通过树形结构的xpath来描述转换的html文档,进而根据html文档的特征,对xpath进行自动检索以计算出xpath中的列表节点,并确定出xpath中表征字段名称的节点以及表征字段值的节点,然后即可提取出由各个字段名称及其对应的字段值构成的业务数据;而且,通过对每一个节点的组织结构分别进行检测可判断该节点是否为反馈信息的一个下级url,表征下级url的节点通常不能作为反馈信息所携带业务数据的字段名称或字段值。需要说明的是,如反馈信息中存在内容无法定位并抓取,可进行相应的错误提示。

举例来说,利用树形结构的xpath来描述目标业务系统提供的反馈信息所对应html文档,可形成如图2所示的树形结构,根据html文档的特征可计算出节点“parent”为列表节点,节点“div[0]”和“div[1]”为列表节点下的两个列表元素,通过对节点“div[0]”和节点“div[1]”下的各个节点进行比较,可发现节点“div[0]”和节点“div[1]”下存在相同的节点“name”和节点“mount”,且存在不同的节点“x1”、“x2”、“y1”、“y2”;此时,即可将相同节点“name”、“mount”以及表征列表元素的节点“div[0]”、节点“div[1]”分别记录为字段名称,将不同节点分别记录为其父节点所对应的字段值;确定的各个字段名称以及字段值即为反馈信息携带的业务数据。

在一种可能实现的方式中,为了节约计算资源,采用深度优先搜索方式或广度优先搜索方式中的任意一种进行搜索时,可限定最大搜索宽度及做大搜索深度。举例来说,向目标业务系统发送第二http请求时,可根据目标业务系统提供的第一反馈信息在浏览器中显示界面a,界面a包括下级界面b1、b2、b3,且界面b1包括下级界面c1、c2、c3,界面b3包括下级界面c4、c5,界面c1包括下级界面d1,具体以采用深度优先搜索方式进行搜索,若设置最大搜索深度为3、最大搜索宽度为3;则可依次搜索到界面a的下级界面包括b1、c1、c2、b2、b3、c4、c5,应用程序界面包括下界界面,该应用程序界面所对应的反馈信息则应当携带其包括的下级界面的url(即下级url),因此,可搜索到b1、c1、c2、b2、b3、c4、c5分别对应的下级url。

特定用户群体正常使用目标业务系统时,即特定用户群体结合其实际业务需求通过触发部署在指定终端上的浏览器以向目标业务系统发送http请求时,向目标业务系统发送http请求的频率并非固定频率;同时,监听并记录的第一http请求可能包括多个,即与各个第一http请求具有相同请求内容和相同请求规则的第二http请求可能包括多个,且每一个第二http请求所对应的第一反馈信息可能携带多个下级url,相应的,为了实现对目标业务系统下的业务数据进行较为完整的采集,需要通过模拟的客户端程序向目标业务系统分别发送多个http请求。

因此,为了避免模拟的客户端程序以固定的频率向目标业务系统多次发送http请求而被认为是恶意访问目标业务系统,导致目标业务系统不会对其接收的http请求进行响应以向模拟的客户端程序提供对应的反馈信息,本发明一个实施例中,还包括:预先设置最小延迟时间和最大延迟时间;

则,所述通过模拟的所述客户端程序向所述目标业务系统发送携带所述下级url的第三http请求,包括:

a1、从确定的各个所述下级url中选择一个未被选择过的所述下级url;

a2、通过模拟的所述客户端程序向所述目标业务系统发送携带选择的所述下级url的第三http请求;

a3、检测是否存在未被选择过的所述下级url,如果是,则执行a4;否则,结束当前流程;

a4、生成不小于所述最小延迟时间且不大于所述最大延迟时间的随机延迟时间,并在所述随机延迟之间之后执行a1。

显而易见的,最小延迟时间和最大延迟时间可以是经验值。

提取的业务数据可能提供给其它业务系统或大数据管理平台,为了减小向其它业务系统提供的业务数据的数据量,节约存储资源并提高数据传输效率,本发明一个实施例中,还包括:根据预设的至少一个过滤字段对提取的所述业务数据进行数据清洗。

具体地,从反馈信息中直接提取的业务数据可能包括一部分并不具有参考意义或并不是数据需求方需要的数据,而提取的业务数据具体由各个字段名称以及各个字段名称所分别对应的字段值构成,因此,用户可以结合实际业务需求设置一个或多个与业务数据不具有参考意义的数据相关联的过滤字段,对业务数据进行清洗时,若提取的业务系统中存在预设的一个或多个过滤字段,则可对应去除提取的业务数据中所包括的各个过滤字段及其对应的字段值,从而减小业务数据的数据量。

本发明一个实施例中,还包括:利用进行数据清洗后的所述业务数据形成对应于所述下级url的xml文件。这里通过xml文件来描述进行数据清洗后的业务数据,含有语义标签的xml文件有利于与第三方系统集成,即有利于与第三方系统下的数据进行关联、去重复等处理。

需要说明的是,形成xml文件时,每一个下级url可以分别对应一个xml文件,各个xml文件可存储在指定路径下,比如存储在windows用户目录下的scraperworks文件夹下,便于后续过程中对各个xml文件下的业务数据进行管理及溯源。存储的各个xml文件下的业务数据可以批量导入到excel表格,也可以成批进行压缩后传送给集中管理程序。

为了提高数据采集效率,本发明一个实施例中,所述监听并记录指定终端向目标业务系统发送的第一http请求,包括:监听指定终端通过其网卡发出的http请求;检测监听的所述http请求是否携带指定关键字,若是,则将所述http请求记录为向目标业务系统发送的第一http请求。

该实施例中,用户可结合其实际的数据采集需求设置一个或多个与其需要采集的业务数据相关联指定关键字,对指定终端通过其网卡发出的http请求进行监听时,仅记录指定终端发出的携带指定关键字的第一http请求,便于后续过程中对目标业务系统下的业务数据进行针对性的采集,无需完整采集目标业务系统下的全部业务数据,提高数据采集效率。

需要说明的是,当监听的http请求未携带指定关键字时,可在指定终端内通过浏览器或其他应用程序直接显示目标业务系统根据该http请求提供的反馈信息所对应的应用程序界面,用户可查看并找到应用程序界面中包含指定关键字的位置,然后对应用程序界面所显示的指定关键字进行触发,从而使得指定终端向目标业务系统发送携带指定关键字的http请求。

当模拟的客户端程序频繁向目标业务系统发送http请求时,目标业务系统可能认定模拟的客户端程序存在安全风险,要求模拟的客户端程序结合第三方业务系统进行用户身份认证。因此,本发明与一个实施例中,还包括:预先设置并存储对应于所述目标业务系统的用户登录信息;在接收到所述目标业务系统发送的验证请求时,接收第三方业务系统提供的验证信息,并将所述用户登录信息及所述验证信息发送至所述目标业务系统。

具体地,用户登录信息包括目标业务系统所对应的指定用户群体中任一个用户使用该目标业务系统时所需要提供的账号及口令,预先设置的用户登录信息可以存储在一个调度文件中,在需要进行身份认证时,可直接从调度文件中读取用户登录信息及第三方业务系统提供的验证信息,无需用户干预即可自动进行身份认证。

基于与本发明方法实施例相同的构思,请参考图3,本发明实施例提供了一种数据采集装置,包括:

监听处理模块301,用于监听并记录指定终端向目标业务系统发送的第一超文本传输协议http请求;

交互处理模块302,用于根据记录的所述第一http请求模拟客户端程序;通过模拟的所述客户端程序向所述目标业务系统发送第二http请求,接收所述目标业务系统根据所述第二http请求提供的第一反馈信息,所述第二http请求与记录的所述第一http请求具有相同的请求规则且携带相同的请求内容;

数据采集模块303,用于对所述第一反馈信息进行动态嗅探以提取所述目标业务系统下的业务数据。

为了描述的方便,描述以上装置实施例时以功能分为各种单元或模块分别描述,在实施本发明时可以把各单元或模块的功能在同一个或多个软件和/或硬件中实现。比如,在一种可能实现的方式中,监听处理模块可以时部署在指定终端上的计算机应用程序,交互处理模块和数据采集模块可以是部署在另一电子设备上的计算机应用程序;在另一种可能实现的方式中,监听处理模块、交互处理模块以及数据采集模块可以是部署在同一个电子设备(指定终端)上的计算机应用程序。

图4是本发明实施例提供的一种电子设备的结构示意图。在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(random-accessmemory,ram),也可能还包括非易失性存储器(non-volatilememory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。

处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是isa(industrystandardarchitecture,工业标准体系结构)总线、pci(peripheralcomponentinterconnect,外设部件互连标准)总线或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

存储器,用于存放执行指令。具体地,执行指令即可被执行的计算机程序。存储器可以包括内存和非易失性存储器,并向处理器提供执行指令和数据。

在一种可能实现的方式中,处理器从非易失性存储器中读取对应的执行指令到内存中然后运行,也可从其它设备上获取相应的执行指令,以在逻辑层面上形成数据采集装置。处理器执行存储器所存放的执行指令,以通过执行的执行指令实现本发明任一实施例中提供的数据采集方法。

上述如本发明图3所示实施例提供的数据采集装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。

本发明实施例还提出了一种可读介质,该可读存储介质存储有执行指令,存储的执行指令被电子设备的处理器执行时,能够使该电子设备执行本发明任一实施例中提供的数据采集方法,并具体用于执行如图1所示的方法。

前述各个实施例中所述的电子设备可以为计算机。

本领域内的技术人员应明白,本发明的实施例可提供为方法或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例,或软件和硬件相结合的形式。

本发明中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1