有哪些技术可以从网页中提取导航菜单?
Posted
技术标签:
【中文标题】有哪些技术可以从网页中提取导航菜单?【英文标题】:What techniques are there to extract a navigational menu from a web page? 【发布时间】:2011-08-16 06:10:15 【问题描述】:我正在寻找一种方法来从包含大量链接(可能还有文本)的网页中提取用于导航的菜单。我感兴趣的页面是非常简单、有效的 Xhtml,并且可以安全地假设菜单位于页面的开头或结尾。但是到目前为止,我还没有找到一种很好的通用方法来找到它的确切位置 - 我希望你能在这方面帮助我。
快速说明:我不是在寻找诸如可读性之类的东西 - 找到主要文章并删除其他所有内容,而是寻找专门找到菜单的东西。 此外,“找到一个有很多链接作为继任者的元素”这种幼稚的方法也不能很好地工作——因为我的页面往往包含很长的链接列表。
编辑:我需要菜单来获取其中链接的页面的内容(我为信息提取项目构建了一个网络抓取工具)。 我使用的一些示例页面:
http://p2.cs.berkeley.edu/ http://www.cs.cornell.edu/bigreddata/maybms/(注意:这里我需要指向出版物/下载的菜单而不是侧边栏导航,但使用 Readability 之类的东西更容易摆脱侧边栏导航)。【问题讨论】:
你能给个页面样本吗? 1。你想用菜单做什么? 2。我们可以看到页面吗?否则无法为您提供帮助。 关于示例页面 - 我已经添加了一些,但主要问题是我正在寻找一个尽可能少页面特定的解决方案。 【参考方案1】:我会计算 子元素文本 in 链接的长度总和 与 子元素文本 out 链接的长度总和 的比率。如果比率高于某个阈值,并且链接的绝对数量高于某个阈值,那么您可以假设该元素包含一个菜单。
如果这还不够,您必须渲染页面(例如在浏览器中,或使用 webkit 库无头)以获取渲染元素在页面上的位置。
【讨论】:
您能否详细说明呈现页面将如何帮助/可以用于自动设置? 还有一些标准名称应该用作“家”、“关于我们”等功能【参考方案2】:正如 Drag0nR3b0rn 提到的,您应该使用链接/非链接文本比率 + 常用菜单词作为特征和手动/训练的决策树。对于爬行,我会推荐 HtmlUnit
【讨论】:
其实user481112提到过以上是关于有哪些技术可以从网页中提取导航菜单?的主要内容,如果未能解决你的问题,请参考以下文章