Я видел много похожих сообщений, оба из них говорят о том, что SelectSingleNode возвращает null. Я не совсем уверен, что моя проблема связана с этим. Возможно, у меня были некоторые проблемы, которые я не мог понять. Здесь мои коды:
string url = "https://www.google.com/#q=nothing";
HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
web.Load(url);
var nodes = doc.DocumentNode.SelectNodes("//div[@class='content']");
if (nodes != null) {
foreach(HtmlNode item in nodes) {
if (item != null) {
string s = item.InnerText;
listView1.Items.Add(s);
}
}
} else {
MessageBox.Show("Nothing found here");
}
Если нет тегов <div>
с классом, равным content
, то ничего не найдено, и у вас есть null
. Это по дизайну.
UPDATE: вы не загружаете данные в HtmlDocument
. У вас есть экземпляр doc
который не связан с данными, которые вы загружаете. Используйте документ, возвращаемый методом Load
:
HtmlDocument doc = web.Load(url);