【发布时间】:2014-05-12 03:03:31
【问题描述】:
我正在尝试使用 HTML Agility Pack 在雅虎财务上获取公司的部门,但我不断收到未设置为对象异常实例的对象引用。为什么我的代码会抛出这个异常?我已经多次检查了 xpath Id。
string Url = "http://www.finance.yahoo.com/q/pr?s=MSFT+Profile";
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load(Url);
string xpathid = "//*[@id=\"yfncsumtab\"]/tbody/tr[2]/td[1]/table[2]/tbody/tr/td/table/tbody/tr[2]/td[2]/a";
string sector = doc.DocumentNode.SelectNodes(xpathid)[0].InnerText;
Console.WriteLine(sector);
这是引发异常的行:
string sector = doc.DocumentNode.SelectNodes(xpathid)[0].InnerText;
【问题讨论】:
-
基本上,您的 XPath 不匹配任何元素,因此,当您尝试访问不存在的(
null)元素的InnerText时 - 会抛出NullReferenceException。 -
我使用chrome浏览器并按F12查找xpath id,所以我认为xpath id是有效的。
-
在访问之前测试SelectNodes的结果。
-
@user1637158 这大概是因为Chrome works against the DOM not the basic HTML source code。可能存在差异。
标签: c# xpath html-agility-pack