2017-09-23 129 views
0

Im在查找元素中的值时遇到了一些麻烦。我认为这是因为它只是在div中,而不是在桌子或类似的东西中。我不确定,但这与其他例子不同。 这是我的代码:Html Agility Pack DocumentNode.SelectNodes返回null

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.The值Im试图让在这里:

89.3%

这是价值89.3%的IM试图让。

任何帮助将grealy赞赏! 谢谢!

+0

你正在试图获得的内容通过JavaScript加载asynchron。尝试在您选择的浏览器中禁用JavaScript。如果您像加载一样加载网页,则禁用JavaScript时看到的内容就是您所拥有的内容。据我所知HtmlAgilityPack是强大的HTML解析器,但它不呈现任何东西。但我可能是错的。 – Michael

回答

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/"); 
} 

没有测试

+0

我试过了,它抱怨“发件人”。错误:CS0163。 – Venerik

+0

如果您阅读错误描述,我确信您能够解决此错误;) – Michael