使用HTML Agility Pack获取内部文本

时间:2015-10-28 00:46:02

标签: c# html css .net html-agility-pack

我有以下webpage

enter image description here

我正在尝试抓取具有ID和类名的字段:

        label =
            node.SelectSingleNode(
                ".//h3[@class='item_header']"
                ).InnerText.Replace("Label: ","").Trim();
        Console.WriteLine(label);

但是,我正在努力弄清楚如何获取文字:

enter image description here

如何在没有ID或类的标签中解析文本,如下所示?

<b>Label Cat. #: WEST 3007/8</b>

如果它有用,这里是唯一的选择器:

#\31 42248 > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(1) > b:nth-child(1)

2 个答案:

答案 0 :(得分:3)

HTML Agility Pack有一个配套的CSS Selector库,您可以在其中使用问题中的选择器来查找元素。

https://www.nuget.org/packages/HtmlAgilityPack.CssSelectors/

答案 1 :(得分:0)

您拥有该表的ID。你可以从那里出发。

HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//table[@id='142248']//b");

foreach (HtmlNode n in nodes)
{
    if (n.InnerText.ToLower().Contains("label"))
    {
         Console.WriteLine(n.InnerText);
    }
}

上面代码中的xpath为您提供了表中id为142248的所有内容。