本发明属于xpath(xml path language,xml路径语言)的,特别是涉及一种xpath生成方法、系统、存储介质及电子设备。
背景技术:
1、在网络爬虫、数据抓取等应用中,经常需要解析html文档并生成xpath来定位特定的元素。xpath是一种在xml文档中查找信息的语言,可以用来在xml文档中对元素和属性进行遍历。
2、现有技术中,xpath的生成方法主要包括以下几种。
3、(1)基于页面结构通过人工分析、编写的xpath表达式。
4、该方法需要对xpath原理和html知识有所理解。编写的xpath表达式如果考虑不周全,则会导致提取不需要的链接,更严重则会导致链接提取错误。若页面发生改变,则再次修正会更加耗时。例如,如果html文档的结构发生了变化,那么原来的xpath表达式可能就无法正确地定位元素。
5、(2)采用浏览器自带的xpath表达式分析功能。
6、目前,部分浏览器提供了自动生成xpath表达式的功能。该功能通常会解析html文档,根据元素的标签名、属性等信息生成xpath表达式。然而,上述功能通常只能生成简单的xpath表达式;对于复杂的html文档,可能无法生成正确简洁的xpath表达式,需要进行人工修改才能使用。
7、(3)采用插件xpath-help。
8、该插件无法提供准确简洁的xpath表达式,也需要在人工修改后才能使用。
技术实现思路
1、鉴于以上所述现有技术的缺点,本发明的目的在于提供一种xpath生成方法、系统、存储介质及电子设备,能够实现快速高效地提供xpath表达式,且准确率高。
2、第一方面,本发明提供一种xpath生成方法,所述方法包括以下步骤:获取指定区域的html文件;对所述html文件进行清洗;基于清洗后的html文件生成html节点队列;基于所述html节点队列生成节点矩阵;基于所述节点矩阵生成xpath表达式。
3、在第一方面的一种实现方式中,对所述html文件进行清洗包括以下步骤:
4、去除所述html文件中的转义符号;
5、去除所述html文件中的html实体编码。
6、在第一方面的一种实现方式中,基于清洗后的html文件生成html节点队列包括以下步骤:
7、将所述清洗后的html文件转换为html文档对象;
8、采用递归方式逐一获取所述html文档对象的各个节点的节点信息,所述节点信息包括节点名称、节点属性、节点深度和节点身份id;
9、基于所述节点信息将所述各个节点构建为所述html节点队列。
10、在第一方面的一种实现方式中,基于所述html节点队列生成节点矩阵包括以下步骤:
11、获取所述html节点队列中各个节点的节点深度;
12、根据所述节点深度将所述各个节点构建为节点矩阵。
13、在第一方面的一种实现方式中,基于所述节点矩阵生成xpath表达式包括以下步骤:
14、获取所述节点矩阵中各个节点的节点身份id和父节点身份id;
15、倒序遍历所述节点矩阵,对于所述节点矩阵中的每个节点,根据所述节点的节点身份id和父节点身份id构建树结构;
16、遍历所述树结构,生成xpath表达式。
17、在第一方面的一种实现方式中,还包括对于所述树结构中的每个节点,根据所述节点的节点属性判断所述节点是否为文章链接。
18、在第一方面的一种实现方式中,还包括获取所述指定区域的xpath表达式,将所述指定区域的xpath表达式与生成的xpath表达式进行拼接,以获取最终的xpath表达式。
19、第二方面,本发明提供一种xpath生成系统,所述系统包括获取模块、清洗模块、第一生成模块、第二生成模块和第三生成模块;
20、所述获取模块用于获取指定区域的html文件;
21、所述清洗模块用于对所述html文件进行清洗;
22、所述第一生成模块用于基于清洗后的html文件生成html节点队列;
23、所述第二生成模块用于基于所述html节点队列生成节点矩阵;
24、所述第三生成模块用于基于所述节点矩阵生成xpath表达式。
25、第三方面,本发明提供一种电子设备,所述电子设备包括:处理器和存储器;
26、所述存储器用于存储计算机程序;
27、所述处理器用于执行所述存储器存储的计算机程序,以使所述电子设备执行上述的xpath生成方法。
28、第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该程序被电子设备执行时实现上述的xpath生成方法。
29、如上所述,本发明所述的xpath生成方法、系统、存储介质及电子设备,具有以下有益效果。
30、(1)无需人工介入,只需提供指定区域的html文档和指定区域的xpath表达式,即可自动分析列表页面文章链接所在节点的xpath表达式。
31、(2)基于指定html文档,通过深度遍历各个节点来分析列表页面中的文章xpath表达式,并提取各种路径下文章链接所在节点的xpath表达式;其中包括列表页面中或者专题页面中的文章链接所在节点、表格类信息页面中的文章链接所在节点、方格样式页面中文章链接所在节点。
32、(3)根据xpath原理将xpath表达式在不影响使用功能下进行缩减删除,更加简洁、直观。
33、(4)操作简单,智能化程度高,极具实用性。
1.一种xpath生成方法,其特征在于,所述方法包括以下步骤:
2.根据权利要求1所述的xpath生成方法,其特征在于:对所述html文件进行清洗包括以下步骤:
3.根据权利要求1所述的xpath生成方法,其特征在于:基于清洗后的html文件生成html节点队列包括以下步骤:
4.根据权利要求1所述的xpath生成方法,其特征在于:基于所述html节点队列生成节点矩阵包括以下步骤:
5.根据权利要求1所述的xpath生成方法,其特征在于:还包括对于所述树结构中的每个节点,根据所述节点的节点属性判断所述节点是否为文章链接。
6.根据权利要求1所述的xpath生成方法,其特征在于:还包括获取所述指定区域的xpath表达式,将所述指定区域的xpath表达式与生成的xpath表达式进行拼接,以获取最终的xpath表达式。
7.一种xpath生成系统,其特征在于,所述系统包括获取模块、清洗模块、第一生成模块、第二生成模块和第三生成模块;
8.一种电子设备,其特征在于,所述电子设备包括:处理器和存储器;
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被电子设备执行时实现权利要求1至6中任一项所述的xpath生成方法。