如何找到正确的 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);