【问题标题】:Retrieving value of element using HTMLAgility pack使用 HTMLAgility 包检索元素的值
【发布时间】:2013-11-03 02:21:31
【问题描述】:

我正在使用 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 元素的值保存在单独的字符串变量中。请帮忙

【问题讨论】:

  • row.InnerText.....?
  • @Aran Thats 给出了字符串“Title Year”。我想将这两个单独保存在字符串变量中
  • 那么向我们展示 HTML 的样子。我们不知道您要对抗的是什么。
  • @Arran 如果你读过。我说行返回“Title Year
  • 然后只需先选择-tag,然后选择-tag?

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


【解决方案1】:

您的 xpath 表达式选择第二个具有 titleColumn 类的 &lt;td&gt;。根据节点的内部html,这个&lt;td&gt; hode 有两个子节点:&lt;a&gt;&lt;span&gt;。因此,您可以轻松找到这些节点,然后将内部文本(或内部 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 2011-05-03
    • 2013-07-13
    • 2020-04-26
    • 1970-01-01
    • 2011-07-29
    相关资源
    最近更新 更多