【问题标题】:get text of all <p> in div htmlagilitypack获取 div htmlagilitypack 中所有 <p> 的文本
【发布时间】:2012-06-15 05:42:07
【问题描述】:

我有一个 div,其中包含这样的段落标签

<div class="div_5">
                <p>First Paragraph</p>
                <p>Second Paragraph</p>
                <p>Third Paragraph</p>
                <p>Fourth Paragraph</p>
 </div>
<div class="div_5">
                <p>First Paragraph</p>
                <p>Second Paragraph</p>
                <p>Third Paragraph</p>
                <p>Fourth Paragraph</p>
 </div>

我需要使用htmlagiitypack获取所有段落文本的文本我试过这个,

Dim oPB As HAP.HtmlNodeCollection = doc.DocumentNode.SelectNodes("//div[@class='post-bodycopy clearfix']/child::text()/"]
For Each item As HAP.HtmlNode In oPB
                    debug.print(item.InnerText)
                Next

每个 div 字符串的预期输出是

First Paragraph
Second Paragraph
Third Paragraph
Fourth Paragraph

但是我在返回的文本中得到了一些 html,有人可以帮我解决问题

【问题讨论】:

  • 如果 p 包含 HTML(不在您的示例数据中),则内部文本将显示它。你期待什么?
  • 是的 p 的 conytain html 在源代码中,但不在呈现的文本中。我能不能得到 p 之间的文本

    this text

    .

标签: .net winforms parsing html-agility-pack


【解决方案1】:

您必须实际选择段落的内部文本。你的 xpath 得到了完全不同的东西。

Dim query = doc.DocumentNode.SelectNodes("//div[@class='div_5']/p/text()")

【讨论】:

  • 谢谢,这会返回所有五个段落的组合,因为这是我需要的
  • 不,在这种情况下,它将返回每个单独的文本节点(由于包含text())。因此,根据您的示例,您将获得 4 个节点的集合,每个节点都有各自的内部文本值(即"First Paragraph""Second Paragraph" 等)。如果您想要一个字符串,则必须将它们组合起来。
  • 我试过你的解决方案,但它选择了带有类属性的 p 和没有这个的那些。我不想选择带有类属性的 p
猜你喜欢
  • 2012-10-27
  • 1970-01-01
  • 1970-01-01
  • 2016-01-06
  • 2012-11-06
  • 2015-12-30
  • 1970-01-01
  • 1970-01-01
  • 2017-10-14
相关资源
最近更新 更多