gpt4 book ai didi

html - 查找 HTML 节文档的内容

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:54:06 26 4
gpt4 key购买 nike

这实际上不是一个编程问题,更像是一个算法问题。

问题:查找 HTML 页面的“内容”部分。

“内容”是指包含人类看到的页面内容的 dom,没有噪音,只是“页面实际内容”。我知道问题没有明确定义,但让我们继续......例如在博客网站中,这通常很容易,当浏览到特定的帖子时,您通常在页面顶部有一些工具栏,可能在 LHS 上有一些导航元素,然后您有包含内容的 div。试图从 HTML 中弄清楚这一点可能很棘手。然而,幸运的是,大多数博客都有 RSS 提要,在这个特定帖子的提要中,您会找到一个 部分(或 ),这正是您想要的。因此,为了细化内容的定义,这是页面上包含有趣部分的实际内容,删除所有广告、导航元素等。所以从博客中查找内容相对容易,假设它们有 RSS。其他 RSS 支持站点也是如此。

新闻网站呢?在许多情况下,新闻站点都有 RSS,但并非总是如此。那么如何在新闻网站上找到内容呢?更一般的网站呢?许多网页(当然不是全部)都有内容部分和其他部分。你能想出一个好的算法来找到“有趣”的部分和不太有趣的部分吗?也许是那些不变的部分发生了变化?

希望我已经说清楚了...谢谢!

最佳答案

我还没有这样做,但这将是我的一般方法。

正如您所指出的,HTML 的可见内容部分缺乏结构(即它没有 headernavigationads 等标签)意味着很难找到关键页面的一部分。我的方法是首先删除您确定不感兴趣的不同元素。可能的排除列表可能是:

  • 元元素,例如 !doctype , head (将title作为单独的一条数据)
  • 动态元素,例如 object , embed , applet , script
  • 图像(取决于是否要保留它们),img
  • 表单元素,即form , input , textarea , label , legend , select , option

第二遍可以开始排除常见的 divul id/class 名称,以及其中的所有标签,例如:

  • header , footer , meta
  • nav , navigation , topnav , sidebar
  • ad , ads , adu (以及其他常用于广告的名称)

这有望从页面中删除大量装饰。下一个挑战是尝试从剩下的内容中识别主要内容,我建议首先假设网站作者正确使用语义 HTML,因此主要使用 h1 , h2头标签和 p段落标记。

为了识别内容,我会寻找任何标题标签,然后是段落标签。 (对于您的主要内容,这可能是 h2h1 标签经常(并且可以说是不正确的)用于显示站点名称或 Logo ,但希望通过排除页面的标题部分来消除这种情况。)每个后续段落都应添加到当前内容中,直到出现中断,这可能是 div 的结尾。或 td元素,或者它可以是与您开始时相同级别的 header 元素。

由于您可能仍然在页面上收集了几组内容(可能是主要内容加上关于作者的简介),您需要在此处测试和完善决策步骤,选择最有可能的内容候选人。这通常是最大的,无论是在长度还是在使用的段落元素数量方面。

当您收集到更多内容示例时,您可以为您的算法添加支持措施;这可能是因为您注意到许多页面使用 div id="content"id="maincontent" .保留您检测到的次要内容项可能也很有用,这样如果某些站点有一种奇怪的内容结构方式,那么一旦您将捕手添加到您的算法中,它就可以针对此重新运行网站的内容。

关于html - 查找 HTML 节文档的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1226416/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com