Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 检测网页中的同质元素列表_Html_Parsing_Dom_Web Crawler - Fatal编程技术网

Html 检测网页中的同质元素列表

Html 检测网页中的同质元素列表,html,parsing,dom,web-crawler,Html,Parsing,Dom,Web Crawler,我需要在页面的DOM中检测一系列连续的相同元素。这些元素可以是div、li或span,也可以包含其他元素。这些元素有一个共同的事实,即它们连续出现并且具有相同的内部结构 我试图解决的问题是自动解析搜索结果。我试图找到的解决方案是生成一个包含所有此类元素列表的列表,例如,一个页面可能包含一个包含搜索结果的列表和其他不相关的元素列表;这个解决方案必须足够通用,我不需要事先知道页面的结构 谢谢。一般来说,这个问题太复杂,无法应用某种正则表达式。它可能暗示上下文语法 你必须自己实现一个算法来解决这个问题

我需要在页面的DOM中检测一系列连续的相同元素。这些元素可以是div、li或span,也可以包含其他元素。这些元素有一个共同的事实,即它们连续出现并且具有相同的内部结构

我试图解决的问题是自动解析搜索结果。我试图找到的解决方案是生成一个包含所有此类元素列表的列表,例如,一个页面可能包含一个包含搜索结果的列表和其他不相关的元素列表;这个解决方案必须足够通用,我不需要事先知道页面的结构


谢谢。

一般来说,这个问题太复杂,无法应用某种正则表达式。它可能暗示上下文语法

你必须自己实现一个算法来解决这个问题。我记住的最简单的一点是:

递归跟踪DOM树 在任何递归步骤中: 记住节点中的第一个子元素。 转到下一个子元素并与内存中保存的子元素进行比较。 记住上次访问的子元素。 重复步骤2和3,直到处理完节点中的所有子元素 假设:您正在使用用于数据挖掘的python构建一个可配置的html web爬虫程序

检索数据的步骤:

下载了html页面 构建一个支持查询的DOM;尝试: 根据web爬虫配置查询适当的数据
祝你好运

请给出一个你试图识别的结构的例子。它可能会改变解决方案。例如,如果您要查找的工件的结构非常已知,则可以使用正则表达式如果组件可以以不同的方式嵌套,则正则表达式可能会给您带来麻烦。示例结果列表如下:。。。任何文件都可以包含多个这样的列表,是否要在该列表的所有实例上进行匹配?我想匹配任何相同的连续结构。这只是一个例子。出现在这样一个列表中的结构也可能类似于。列表元素的结构不是预先确定的。这就是为什么这个问题对我来说有些困难。正如我的mpasko256所回答的那样,其中一种方法是加载dom并将其解析为一棵树,查找属于同一父级的相同子树。然而,我想知道,如果我找不到一个更简单的方法,如果你没有一个刚性的结构,那么你将需要加载一个DOM,如mmpasko256所示。您选择的语言是什么?谢谢,如果找不到更简单的解决方案,我会选择这种方法。编写自己的解析器是我试图避免的:对于正在构建网络爬虫的人来说,这不是一个理想的解决方案。如果他正在使用javascript,那么这很好,但如果他没有,那么这不是一个理想的解决方案。如果他的匹配要求像看上去那样简单,那么将页面加载到dom结构中就是浪费资源。