我是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;
};
1 回答
我能够解决这个问题 . 问题是每个页面的HTML节点都不同 . 我不确定这是否与动态HTML概念有关,因此我指定查询的元素返回NULL . 我试图逐个加载100个不同的页面,所以某些页面有一些不同的元素,尽管它们都属于同一个网站 .