Html Agility Pack DocumentNode.SelectNodes返回null

时间:2017-09-23 14:15:53

标签: c# html winforms visual-studio-2017 html-agility-pack

我在尝试查找元素中的值时遇到了一些麻烦。我认为原因是因为它只在div中而不是在表格中或类似的东西中。我不确定,但这与其他人有什么不同?例子。 这是我的代码:

private async void ButtonNext_Click(object sender, EventArgs e)
    {
        HtmlWeb web = new HtmlWeb();
        var doc = await Task.Factory.StartNew(() => web.Load("https://hsreplay.net/decks/aeVbjoWFmDWILMwbMi9RCh/"));
        var node = doc.DocumentNode.SelectNodes("//*[@id=\"mulligan - guide\"]/div/div/div[1]/div/div[4]/div/div/div[2]");
    }

var节点返回null。我想要获取的值在这里:

89.3%

我试图得到的值是89.3%。

任何帮助都会非常感激! 谢谢!

1 个答案:

答案 0 :(得分:0)

你可能会得到你想要的东西。创建一个WebBrowser实例,设置DocumentCompleted事件处理程序(希望这意味着当事件被触发时,javascript和类似的东西也会完成)。然后,当调用处理程序时,获取WebBrowser的源代码(有希望由脚本更新),创建HtmlAgilityPack.HtmlDocument并在其上激活您的查询。

using(var ie = new WebBrowser())
{
    ie.DocumentCompleted += (s, args) => 
    {
        var doc = new HtmlDocument();
        doc.LoadHtml(ie.DocumentText);
        var node = doc.DocumentNode.SelectNodes("//*[@id=\"mulligan - guide\"]/div/div/div[1]/div/div[4]/div/div/div[2]");
    };
    ie.Navigate("https://hsreplay.net/decks/aeVbjoWFmDWILMwbMi9RCh/");
}

未经过测试