Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用JSoup从体育参考的数据表中检索数据?_Java_Html_Jsoup - Fatal编程技术网

Java 如何使用JSoup从体育参考的数据表中检索数据?

Java 如何使用JSoup从体育参考的数据表中检索数据?,java,html,jsoup,Java,Html,Jsoup,我试图使用JSoup从体育参考表中检索一个团队的胜利数量 下面是我已经尝试过的,但是当我尝试访问这个元素的文本时,我得到一个空指针异常,告诉我我的代码可能没有正确解析HTML代码 Element wins=document.selectFirst(“td[data stat=\“wins\”]) 我希望此元素的文本为34(或一些数字,取决于团队获胜的次数)。。如果它包含可以由浏览器通过JavaScript动态添加的HTML内容,则需要将其用作工具Selenium而不是Jsoup ,您可以编写类

我试图使用JSoup从体育参考表中检索一个团队的胜利数量

下面是我已经尝试过的,但是当我尝试访问这个元素的文本时,我得到一个空指针异常,告诉我我的代码可能没有正确解析HTML代码

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");