如何检测网页上的导航(菜单)

时间:2011-08-29 17:14:32

标签: python html xhtml

所以我正在编写这个打开页面的程序,它应该做的一件事就是检测网页有多少导航(菜单),主导航多长时间(多少元素),平均文本导航中的元素等......

无论如何我在检测菜单时遇到了一些问题。我认为网络导航有两种编码方式:

1. <ul><li><a>Home</a><li><a>Products</a></li>...</ul>
2. <div><a>Home</a><a>Product</a>...</div>

所以如果我发现这个结构我知道(或者我应该说“我认为”)它的导航。但这不是防弹的。我得到了很多错过的点击。

任何人都可以更好地了解如何检测网页上的导航?

4 个答案:

答案 0 :(得分:4)

没有通用的解决方案。你需要实现一些启发式方法。我会尝试这样的:

  1. 获取递归限制= 1的所有网站页面(如wget -r -l1 http://example.com/
  2. 对于每个内部页面,在该页面上保留一组内部链接
  3. 获得所有集合的交集。
  4. 通过这种方式,您将获得一组固定的内部链接,在大多数情况下,这些内部链接将成为网站的“菜单”。

答案 1 :(得分:2)

在HTML4和XHTML中,没有标准的菜单编写方式。在HTML5中,您有<menu><nav>标记,但正如您所得出的那样,在早期版本中,通常建议使用无序列表。

我可能会编写一些测试,并将它们全部并行使用以尝试查找菜单,例如:基于文档中的位置,结构以及idclass属性(其值通常包含“菜单”)等内容。

答案 2 :(得分:1)

不要忘记HTML5 <nav>代码。

答案 3 :(得分:0)

添加到之前的答案中,包含“nav”的classid的ul或div也可能是您想要的。但是,没有普遍的答案。此外,请记住主要和辅助导航菜单的可能性(例如,顶部菜单和侧面菜单,或页面顶部的Stack Overflow的两个水平菜单。)