【问题标题】:how to detect navigation (menu) on web page如何检测网页上的导航(菜单)
【发布时间】:2011-08-30 02:26:25
【问题描述】:

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

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

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

所以如果我找到这个结构,我知道(或者我应该说“我认为”)它的导航。但这不是防弹的。我得到了很多未命中的命中。

那么 any1 有更好的方法来检测网页上的导航吗?

【问题讨论】:

    标签: python html xhtml


    【解决方案1】:

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

    1. 获取递归限制=1 的所有网站页面(如 wget -r -l1 http://example.com/
    2. 对于每个内部页面,在该页面上保留一组内部链接
    3. 获取所有集合的交集。

    通过这种方式,您将获得一组恒定的内部链接,在大多数情况下,这些链接将是网站的“菜单”。

    【讨论】:

    • 有趣的解决方案!虽然它确实需要比试图简单地分析单个页面的“类似菜单”的 HTML 结构更多的处理(和加载),但您可能是对的,它可以很好地估计站点的菜单是什么。
    【解决方案2】:

    在 HTML4 和 XHTML 中没有编写菜单的标准方法。在 HTML5 中,您有 &lt;menu&gt;&lt;nav&gt; 标签,但正如您所得出的结论,在早期版本中,通常推荐的方法是使用无序列表。

    我可能会编写许多测试,并同时使用它们来尝试找到菜单,例如基于文档中的位置、结构以及 idclass 属性(其值通常包含“菜单”)。

    【讨论】:

      【解决方案3】:

      不要忘记 HTML5 &lt;nav&gt; 标签。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-03-13
          • 1970-01-01
          • 2018-02-08
          • 2017-07-24
          • 2012-02-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多