给定起始节点和近似路径的在树中查找具有特定属性的节点的算法

时间:2014-12-18 10:17:51

标签: html algorithm dom graph graph-algorithm

我正在寻找一个逻辑,它预测特定元素在特定页面的DOM中的位置,因为我们知道元素的一些常规属性,以及从模板中的几个固定节点到元素的近似路径(通过分析相似类型的几页获得)。

具体示例:

有几个维基百科页面需要分析:

http://en.wikipedia.org/wiki/Econometrics

http://en.wikipedia.org/wiki/History_of_economic_thought

等 。 。

在以下条件下,算法必须在这些页面中获得正确的导航框(class="vertical-navbox nowraplinks plainlist"):

  1. 所有页面中元素的类名称可能不相同
  2. 可以在几页(测试用例)中从标题(id="firstHeading")和其他一些固定节点到导航框的路径
  3. 标题(和其他固定节点)在每个页面中始终具有相同的ID
  4. 某些网页可能在路径中有一些额外的节点(第二个链接中为class="hatnote"
  5. 这个盒子的一些属性(它是蓝色的,它是一张桌子等......)是已知的
  6. 是否有针对此目的的算法?

1 个答案:

答案 0 :(得分:0)

所以,让我们做一些假设,看看它们是否与你的情况相符。

假设您有一个测试页面,在该测试页面中您可以完成dom树访问。

在这种情况下,我们可以执行一系列反转路径遍历,从每个叶子到根,假设一个节点在开始时得分为0,如果我们出现的分支包含所需节点,则添加+1 。

在我们为从叶子到根的所有可能路径完成此操作之后,我们再次进行完全访问,并将先前计算的分数除以每个节点具有的子(子树或叶子)的数量。

这意味着现在每个节点都有一个百分比告诉您包含所需节点的该节点的随机子树的概率。

现在,对于预测部分,您需要一些方法将另一个页面中的节点与您有概率的节点之一进行匹配(对此我恐怕我不知道它是怎么回事完成)。

一旦你有了这样的匹配,并且假设测试页面确实是预测性的,你就会自动为新页面的每个节点设置一个有意义的概率因子,尽管有任何可能的中间附加节点。

请注意,使用匹配算法,您可以对多个测试页执行相同的计算,并在每个过程结束时计算每个节点的总体概率,希望这些概率比原始节点更精确。

希望这就是你所需要的。