使用HTMLAgility包检索元素的值

时间:2013-10-24 11:38:53

标签: c# html asp.net xpath html-agility-pack

我正在使用HTMLAgility包来解析html,然后使用xpath检索具有特定类的表列。

HtmlAgilityPack.HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.Load("www.url.com");

foreach (HtmlNode row in doc.DocumentNode.SelectNodes("(//td[@class='titleColumn'])[2]"))
{
    Response.Write(row.InnerHtml + "<br />");
}

我检索数据并且row.Innerhtml看起来像这样。

<a>Title</a> <span>Year</span><br />

我想将a和span元素的值保存在单独的字符串变量中。请帮忙

1 个答案:

答案 0 :(得分:2)

您的xpath表达式选择具有类<td>的第二个titleColumn。根据节点的内部html,此<td> hode有两个子节点:<a><span>。因此,您可以轻松找到这些节点,然后将内部文本(或内部html)放入string变量中。看,这个:

foreach (var row in doc.DocumentNode.SelectNodes("(//td[@class='titleColumn'])[2]"))
{
    var a = row.SelectSingleNode("a");
    var span = row.SelectSingleNode("span");

    Console.WriteLine(a.InnerText);
    Console.WriteLine(span.InnerText);
}

将输出:

Title
Year