Java 如何使用JSoup从体育参考的数据表中检索数据?
我试图使用JSoup从体育参考表中检索一个团队的胜利数量 下面是我已经尝试过的,但是当我尝试访问这个元素的文本时,我得到一个空指针异常,告诉我我的代码可能没有正确解析HTML代码Java 如何使用JSoup从体育参考的数据表中检索数据?,java,html,jsoup,Java,Html,Jsoup,我试图使用JSoup从体育参考表中检索一个团队的胜利数量 下面是我已经尝试过的,但是当我尝试访问这个元素的文本时,我得到一个空指针异常,告诉我我的代码可能没有正确解析HTML代码 Element wins=document.selectFirst(“td[data stat=\“wins\”]) 我希望此元素的文本为34(或一些数字,取决于团队获胜的次数)。。如果它包含可以由浏览器通过JavaScript动态添加的HTML内容,则需要将其用作工具Selenium而不是Jsoup ,您可以编写类
Element wins=document.selectFirst(“td[data stat=\“wins\”])代码>
我希望此元素的文本为34(或一些数字,取决于团队获胜的次数)。。如果它包含可以由浏览器通过JavaScript动态添加的HTML内容,则需要将其用作工具Selenium而不是Jsoup
,您可以编写类似于:
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支持,您可以尝试获取如下元素:
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());
}
}
但更好的解决方案是使用一个可移植的框架来测试web应用程序():
您也可以尝试,而不是:
driver.findElement(By.xpath("//*[@id="team_misc"]/tbody/tr[1]/td[1]")).getText();
:
另外,在将来,添加源链接是非常有用的,您可以从中获取信息,或者至少是DOM结构的片段,而不是图像。Selenium不一定是更好的解决方案,它只是解决了一个不同的问题。Jsoup用于解析从服务器返回的原始DOM(不调用JS)。Selenium用于在调用JS后解析DOM。
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");