Проверьте, что ваш документ смог прочитать со страницы, и распечатайте его . Если он содержит HTML контент, который может динамически добавляться браузером JavaScript, вам необходимо использовать в качестве инструмента Selenium, а не Jsoup.
Для чтения HTML source , вы можете напишите так:
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 - переносимый фреймворк для тестирования веб-приложений ( более подробно об инструменте 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 вместо изображения.