Chrome复制XPath使用HTMLAgilityPack返回null(已删除' tbody')

时间:2014-03-26 17:46:03

标签: c# google-chrome xpath html-agility-pack

我试图从页面http://www.pgatour.com/players/player.24502.adam-scott.html/season

上的表中提取数据

但是我从chrome复制的Xpath返回一个空引用。我尝试了几种变体,但没有任何工作,我之前从未使用过XPath,我错过了什么?

string Url = "http://www.pgatour.com/players/player.24502.adam-scott.html/season";
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load(Url);

var firstTournamentDate = doc.DocumentNode.SelectNodes("//*[@id='player-season-details-table']/div/table/tr[2]/td[1]");

注意:我已从Chrome生成的XPath中删除了tbody轴步骤。

修改

firstTournamentDate变量为null,如果我尝试这个:

var x = doc.DocumentNode.SelectNodes("//*[@id='player-season-details-table']/div/table/tr[2]/td[1]", index)[0].InnerText;

它会抛出null reference exception

1 个答案:

答案 0 :(得分:1)

使用AJAX动态加载数据。您不能简单地使用XPath表达式访问它而不执行JavaScript,例如使用Selenium。

但是使用Firebug / Chrome开发工具并监控“网络”标签,您可以尝试找出所请求的网址。我想你正在寻找

http://www.pgatour.com/data/players/24502/2014results.json

可以轻松返回表内容以解析JSON对象。