【问题标题】:Getting a "summary" of a webpage获取网页的“摘要”
【发布时间】:2010-05-31 05:10:59
【问题描述】:

我有一个棘手的问题,我想为给定的 url 生成几段“描述”,通常是文章的开头。元描述字段是一种方法,但它并不总是很好或设置正确。

公平地说,从截屏的 HTML 中实现这一点有点问题。我有一个大致的想法,也许可以扫描 HTML 以找到第一个“适当”的段,但很难说那是什么,也许是第一段包含一定数量的文本......

有人有什么好主意吗? :) 不一定要万无一失

【问题讨论】:

    标签: c# html regex


    【解决方案1】:

    那么,你想成为一个新的谷歌,是吗? :-)

    如今,许多网站都“对 SEO 友好”。这使您可以查找标题,然后查找下面的段落。

    另外,查找列表。在某种类似选项卡(选项卡、手风琴...)的界面中有很多内容是使用有序或无序列表完成的。

    如果失败,也许寻找一个具有“内容”或“主”类或组合的 div 并从那里开始。

    如果您使用不同的方法,请确保保留哪些有效和哪些无效的统计信息(甚至可以保存一整页),以便您可以查看和调整您的解析和搜索方法。

    作为旁注,我使用htmlagilitypack 成功解析和搜索html。好吧,至少它胜过用正则表达式解析:-)

    【讨论】:

    • 您首先在这里听到了 ;) 但实际上我认为 google 更容易,因为他们可能只是查看搜索文本中的短语/单词并获取周围的文本。寻找第一个 h1 或 h2 并从那里解析是个好主意,谢谢。正如您所说,可能必须使用不同技术的混合来涵盖不同的场景,但这是一个不错的开始。我可能会从用正则表达式替换一些标签开始,运行它以使其格式正确并从那里使用 XML DOM/Xpath 的东西
    • 我会强烈建议不要使用正则表达式。正如我所说,我使用了 htmlagilitypack。它使用 xpath 来遍历 imo 更干净的 html 文档。另见stackoverflow.com/questions/2490765/…
    • 只是 regex 用于剥离一些标签,我同意用 regex 导航 html 很疯狂 :) 虽然导航 XML 树非常简单和高效
    【解决方案2】:

    也许寻找包含最多p 元素的div 元素,然后抓取第一个p 子元素。如果没有div,则从body 元素中获取第一个p

    这总会有它的问题。

    【讨论】:

      【解决方案3】:

      您可以使用此正则表达式去除 HTML 标记

      string stripped = Regex.Replace(textBox1.Text,@"<(.|\n)*?>",string.Empty)
      

      您将获得可用于生成段落的内容文本。

      【讨论】:

      • Ew...我认为这根本不会很好用!你会得到一堆乱七八糟的东西......一堆标题和链接混在一起变成无意义的。
      猜你喜欢
      • 1970-01-01
      • 2017-08-13
      • 2010-12-19
      • 2014-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-01
      • 2019-04-08
      相关资源
      最近更新 更多