使用 agility html 包获取 <div> 中的所有<p> 文本

Posted

技术标签:

【中文标题】使用 agility html 包获取 <div> 中的所有<p> 文本【英文标题】:get all<p> text in <div> using agility html package 【发布时间】:2016-01-06 02:57:07 【问题描述】:

我尝试使用 agility html 包在&lt;div&gt; 中获取所有&lt;p&gt; 标签。但我只能抢到第一

来自 div 的标签。

<div  id='bodayDiv'>
<p> hi </p>
<p> what is app </p>
<p> in the room </p>
</div>

我使用了这个代码

//div[@id='bodyDiv']/p/text()

或者这个

  //div[@id='bodyDiv']//p

但我只能先得到&lt;p&gt;

【问题讨论】:

【参考方案1】:

如果你想获取所有段落节点的文本,你可以试试这个:

//div[@id='bodyDiv']/p/child::text()

我建议你阅读这篇http://www.w3.org/TR/xpath/#location-paths

【讨论】:

【参考方案2】:

这个问题的解决方法是使用 SelectNodes

     string PageFull = "";
 foreach (HtmlAgilityPack.HtmlNode node2 in doc.DocumentNode.SelectNodes("//div[@id='bodyDiv']/p/text()"))
  PageFull = PageFull + "<p>" + node2.InnerHtml + "</p>"; ;

【讨论】:

以上是关于使用 agility html 包获取 <div> 中的所有<p> 文本的主要内容,如果未能解决你的问题,请参考以下文章

HTML Agility Pack - 使用 Align=left 样式从 DIV 获取文本

使用 HTML Agility 去除 HTML 标签但留下内部文本?

如何使用 HTML Agility Pack 修复格式错误的 HTML?

使用 HTML Agility Pack 替换 HTML div InnerText 标签

使用 html agility xpath 查找 webdriver 元素

Html Agility Pack:查找评论节点