如何找到正确的 XPATH?
How Do I find the Correct XPATH?
我正在尝试找到与 HTML Agility Pack 一起使用的正确 XPath。我尝试了多个 XPath,但都给了我 - $exception {“对象引用未设置为对象的实例。”} System.NullReferenceException
以下是我尝试过的一些 XPath。都给我报错
//*[@id="div_team-stats-per_game"]
// html / body / div[2] / div[5] / div[4] / div[3] / div
//*[@id="team-stats-per_game"]/tbody
这是我的代码:
HtmlWeb web1 = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc1 = new HtmlAgilityPack.HtmlDocument();
doc1 = web1.Load("https://www.basketball-reference.com/leagues/NBA_2021.html");
var _extractText = doc1.DocumentNode.SelectSingleNode("//*[@id=\"team-stats-per_game\"]").InnerText;
Console.WriteLine(_extractText);
你会使用LoadFromBrowser方法吗?您当前使用的方法将获取文档的原始 HTML,但不会获取动态加载的内容。
您尝试解析的 table 已通过 javascript 加载到页面中,因此您需要使用 LoadFromBrowser 方法并等待元素显示:
HtmlWeb web1 = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc1 = new HtmlAgilityPack.HtmlDocument();
doc1 = web1.LoadFromBrowser("https://www.basketball-reference.com/leagues/NBA_2021.html", html => {
// Wait for the HTML element to exist
return !html.Contains("<table id=\"team-stats-per_game\">");
});
var _extractText = doc1.DocumentNode.SelectSingleNode("//*[@id=\"team-stats-per_game\"]").InnerText;
Console.WriteLine(_extractText);
我正在尝试找到与 HTML Agility Pack 一起使用的正确 XPath。我尝试了多个 XPath,但都给了我 - $exception {“对象引用未设置为对象的实例。”} System.NullReferenceException
以下是我尝试过的一些 XPath。都给我报错
//*[@id="div_team-stats-per_game"]
// html / body / div[2] / div[5] / div[4] / div[3] / div
//*[@id="team-stats-per_game"]/tbody
这是我的代码:
HtmlWeb web1 = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc1 = new HtmlAgilityPack.HtmlDocument();
doc1 = web1.Load("https://www.basketball-reference.com/leagues/NBA_2021.html");
var _extractText = doc1.DocumentNode.SelectSingleNode("//*[@id=\"team-stats-per_game\"]").InnerText;
Console.WriteLine(_extractText);
你会使用LoadFromBrowser方法吗?您当前使用的方法将获取文档的原始 HTML,但不会获取动态加载的内容。
您尝试解析的 table 已通过 javascript 加载到页面中,因此您需要使用 LoadFromBrowser 方法并等待元素显示:
HtmlWeb web1 = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc1 = new HtmlAgilityPack.HtmlDocument();
doc1 = web1.LoadFromBrowser("https://www.basketball-reference.com/leagues/NBA_2021.html", html => {
// Wait for the HTML element to exist
return !html.Contains("<table id=\"team-stats-per_game\">");
});
var _extractText = doc1.DocumentNode.SelectSingleNode("//*[@id=\"team-stats-per_game\"]").InnerText;
Console.WriteLine(_extractText);