C#,Html Agility,选择div标签中的每个段落

时间:2011-01-19 16:19:36

标签: c# html html-agility-pack

如何选择div标签中的每个段落。

<div id="body_text">
<p>Hi</p>
<p>Help Me Please</P>
<p>Thankyou</P>

我已经在我的程序中下载并引用了Html Agility,我需要的只是段落。可能存在可变数量的段落,并且存在大量不同的div标签,但我只需要body_text中的内容。然后我假设这可以存储为一个字符串,然后我想写入.txt文件供以后参考。三江源。

2 个答案:

答案 0 :(得分:3)

您案例的有效XPATH为//div[@id='body_text']/p

foreach(HtmlNode node in yourHTMLAgilityPackDocument.DocumentNode.SelectNodes("//div[@id='body_text']/p")
{
  string text = node.InnerText; //that's the text you are looking for
}

答案 1 :(得分:1)

这是一个解决方案,将段落作为HtmlNodes的枚举:

HtmlDocument doc = new HtmlDocument();
doc.Load("your.html");
var div = doc.GetElementbyId("body_text");
var paragraphs = div.ChildNodes.Where(item => item.Name == "p"); 

没有明确的Linq:

var paragraphs = doc.GetElementbyId("body_text").Elements("p");