Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# //div[@id='resultStats']错误_C#_Xpath_Html Agility Pack - Fatal编程技术网

C# //div[@id='resultStats']错误

C# //div[@id='resultStats']错误,c#,xpath,html-agility-pack,C#,Xpath,Html Agility Pack,我想以div的形式获取google结果,但我将error Object reference设置为未设置为对象实例 我的代码: var doc = new HtmlWeb().Load("http://www.google.com/search?q=love"); var div = doc.DocumentNode.SelectSingleNode("//div[@id='resultStats']"); var text = div.InnerHtml.ToString();

我想以div的形式获取google结果,但我将error Object reference设置为未设置为对象实例

我的代码:

var doc = new HtmlWeb().Load("http://www.google.com/search?q=love");
var div = doc.DocumentNode.SelectSingleNode("//div[@id='resultStats']");
var text = div.InnerHtml.ToString();         <---    this line
textBox1.Text = div.ToString();
var matches = Regex.Matches(text, @"About ([0-9,]+) ");
var total = matches[0].Groups[1].Value;
我在留言框里看到了97

但我尝试了以下代码:

int counter = 0;
HtmlWeb hw = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = hw.Load("http://www.google.com/search?q=love");
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
{
    counter = counter + 1;
}
MessageBox.Show(counter.ToString());
HtmlWeb hw = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = hw.Load("http://www.google.com/search?q=love");
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
{
    MessageBox.Show(link.ToString());
}

我在messagebox中看到了HtmlAgiliytPack.HtmlNode 97次。

第一个错误是因为加载的HTML不包含id='resultStats'的元素。这就是div变量为null的原因,因此div.InnerHtml会给您一个NullReferenceException

至于第二个问题:通过使用link.ToString,您可以调用HtmlNode类型的变量的.ToString方法,该方法似乎没有重载,并且只返回一个简短的类型名。我怀疑您希望输出链接节点本身。为此,只需在链接上使用.OuterHtml属性:

MessageBox.Show(link.OuterHtml);

附带说明:HtmlNode.InnerHtml属性是一种字符串类型,因此在这里不需要对一种字符串类型调用ToString方法。

也许ToString不是您要寻找的方法。请在调试器中逐步检查代码,并查看div和link包含的内容。提示:它们不是字符串。谢谢您的回复。我理解。但我想知道在谷歌搜索结果页面上获取resultsstats div???