我是HTMLAgilityPack的新手,但现在逐渐能够在我的程序中成功实施。我所拥有的问题是" SelectNodes"间歇性地返回Nullpointer异常。但它确实有效。我试图强行等待,使用Sleep命令,调试/步骤代码,但没有帮助,有时我通过线但有时我失败在那条线上有错误 "未处理的类型' System.ArgumentNullException'发生在System.Core.dll中 附加信息:值不能为空。"
这个网站我试图从节点加载和读取值... https://www.g2crowd.com/categories/mobile-app-testing
不确定这是否与Cookie /网页页面超时有关...我无法弄明白,我可能忽略了需要为HTMLWeb设置的任何属性()
这是我的代码:
HtmlWeb webGet = new HtmlWeb();
var document = webGet.Load("https://www.g2crowd.com/categories/mobile-app-testing");
//THIS BELOW LINE INTERMITTENTLY FAILS, AT TIMES , IT POPULATES THE ARRAY
HtmlNode[] symbolnodes = document.DocumentNode.SelectNodes("//h5[@class=\"margin-bottom-4th font-weight-bold ellipsis\"]").ToArray();
foreach (HtmlNode item in symbolnodes)
{
}
我怀疑在cookies上,我试图添加以下代码,但也没有帮助
webGet.PreRequest += request =>
{
request.CookieContainer = new System.Net.CookieContainer();
return true;
};
答案 0 :(得分:0)
我能够解决这个问题。问题是每个页面的HTML节点都不同。我不确定这是否与动态HTML概念有关,因此我指定查询的元素返回NULL。我试图逐个加载100个不同的页面,所以某些页面有一些不同的元素,尽管它们都属于同一个网站。