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

4 投票
4 回答
937 浏览
提问于 2025-04-17 00:32

我正在写一个程序,这个程序会打开网页,其中一个功能是检测网页有多少个导航菜单,主导航有多长(也就是有多少个元素),导航元素中的平均文本量等等……

不过,我在检测菜单时遇到了一些问题。我觉得网页导航的编码方式大致有两种:

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

如果我找到这种结构,我就知道(或者说“我认为”)这就是导航。但这并不是绝对可靠的,我经常会出现误判。

所以有没有人有更好的方法来检测网页上的导航呢?

4 个回答

1

别忘了使用HTML5中的<nav>标签哦。

2

在HTML4和XHTML中,没有标准的方法来写菜单。在HTML5中,你可以使用<menu><nav>标签,但正如你所说,在早期的版本中,通常推荐的做法是使用无序列表。

我可能会写一些测试,然后同时使用这些测试来尝试找到菜单,比如根据文档中的位置、结构,以及像idclass这样的属性(这些属性的值通常会包含“menu”)。

5

没有一种通用的解决方案。你需要实现一些经验法则。我会尝试这样做:

  1. 用递归限制为1的方式获取所有网站页面(就像用wget命令:wget -r -l1 http://example.com/
  2. 对于每个内部页面,记录该页面上的内部链接集合
  3. 找出所有集合的交集。

这样你就能得到一个稳定的内部链接集合,在大多数情况下,这个集合就是网站的“菜单”。

撰写回答