我试图在WinForms C#中使用HtmlAgilityPack从DIV中获取一些文本。
我的代码是:
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml("http://www.tibia.com/news/?subtopic=latestnews");
var res = doc.DocumentNode.SelectSingleNode("//div[@id='PlayersOnline']");
var content = res.InnerHtml;
// Print content
MessageBox.Show(content);
我想要的内容来自: http://www.tibia.com/news/?subtopic=latestnews
在网站的右上角有一个方框,上面写着“玩家在线”的数量。我想得到那么多。
网站上的HTML如下所示:
<div id="PlayersOnline" onclick="window.location = 'https://secure.tibia.com/community/?subtopic=worlds';">11723<br>Players Online</div>
所以我希望得到11723
作为输出。如果我得到整个:11723<br>Players Online
作为输出并不重要。我可以在以后进行正则表达式匹配或拆分字符串或其他东西,以忽略br标记。
但是我的代码都没有工作,我不知道为什么。应用程序崩溃并说
System.NullReferenceException: 'Object reference not set to an instance of an object.'
<res>5__8 was null.
答案 0 :(得分:0)
更改此行:
HtmlAgilityPack.WebSite webSite = new HtmlAgilityPack.WebSite();
HtmlAgilityPack.HtmlDocument document = webSite.Load("http://www.tibia.com/news/?subtopic=latestnews");
string content = document.GetElementbyId("PlayersOnline").OuterHtml;
答案 1 :(得分:0)
尝试使用InnerText
代替InnerHtml
var content = doc.DocumentNode.SelectSingleNode("//div[@id='PlayersOnline']").InnerText;