htmlagilitypack选择节点返回null

时间:2018-08-12 08:52:06

标签: c# linq select html-agility-pack

我使用此代码获取页面信息,但是现在站点已更改,我的应用程序返回空错误。

document.styleSheets

这是我的html:

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(page);
var query = doc.DocumentNode
  .SelectNodes("//table[@class='table table-striped table-hover']/tr")
  .Select(r => {
    return new DelegationLink()
    {
        Row = r.SelectSingleNode(".//td").InnerText,
        Category = r.SelectSingleNode(".//td[2]").InnerText
    };
}).ToList();

我在哪里错了?

1 个答案:

答案 0 :(得分:3)

表行不是表的直接后代,但是它们嵌套在其他标记中,这就是代码返回null的原因。另外,您还想跳过标题,而只刮擦表的正文。

var query = doc.DocumentNode
    .SelectNodes("//table[@class='table table-striped table-hover']/tbody/tr")
    .Select(r =>
    {
        return new DelegationLink()
        {
            Row = r.InnerText,
            Category = r.SelectSingleNode(".//td[2]").InnerText
        };
    }
).ToList();