簡體   English   中英

如何使用 JSoup 從 Sports Reference 的數據表中檢索數據?

[英]How to retrieve data from data table from Sports Reference using JSoup?

我正在嘗試使用 JSoup 從 Sports Reference 表中檢索團隊的獲勝次數。

具體來說,我試圖接收下面突出顯示的以下數據點,並提供了 html 代碼

下面是我已經嘗試過的內容,但是在嘗試訪問此元素的文本時出現空指針異常,這告訴我我的代碼可能沒有正確解析 HTML 代碼。

Element wins = document.selectFirst("td[data-stat=\\"wins\\"]");

我想要的是這個元素的文本是 34(或一些數字,取決於團隊的獲勝次數)。

檢查您的文檔能夠從頁面讀取的內容並打印出來 如果它包含可由瀏覽器通過 JavaScript 動態添加的 HTML 內容,則需要使用 Selenium 而不是 Jsoup 作為工具。

對於閱讀 HTML 源代碼,您可以編寫類似於:

import java.io.IOException;
import org.jsoup.Jsoup;

public class JSoupHTMLSourceEx {
    public static void main(String[] args) throws IOException {
        String webPage = "https://www.basketball-reference.com/teams/CHI/2020.html#all_team_misc";
        String html = Jsoup.connect(webPage).get().html();
        System.out.println(html);
    }
}

由於 Jsoup 支持cssSelector ,您可以嘗試獲取如下元素:

public static void main(String[] args)  {
        String webPage = "https://www.basketball-reference.com/teams/CHI/2020.html#all_team_misc";
        String html = Jsoup.connect(webPage).get().html();

Document document = Jsoup.parse(html);
    Elements tds = document.select("#team_misc > tbody > tr:nth-child(1) > td:nth-child(2)");
        for (Element e : tds) {
            System.out.println(e.text());
        }
}

但更好的解決方案是使用Selenium - 一個用於測試 Web 應用程序的可移植框架(有關 Selenium 工具的更多詳細信息):

public static void main(String[] args) {
    String baseUrl = "https://www.basketball-reference.com/teams/CHI/2020.html#all_team_misc";
    WebDriver driver = new FirefoxDriver();

    driver.get(baseUrl);
    String innerText = driver.findElement(
        By.xpath("//*[@id="team_misc"]/tbody/tr[1]/td[1]")).getText();  
        System.out.println(innerText); 
    driver.quit();
    }
}

您也可以嘗試代替:

driver.findElement(By.xpath("//*[@id="team_misc"]/tbody/tr[1]/td[1]")).getText(); 

以這種形式

driver.findElement(By.xpath("//[@id="team_misc"]/tbody/tr[1]/td[1]")).getAttribute("innerHTML");

PS 將來,添加源鏈接會很有用,您可以從中獲取信息或至少是 DOM 結構的片段而不是圖像。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM