如何使用jsoup在java中提取/解析这个html表?

时间:2017-10-05 21:51:28

标签: java html io html-table jsoup

我松散地知道如何在jsoup中解析html表格,但我正在使用的表格在网页的某个地方,我不知道如何去做: https://finance.yahoo.com/calendar/earnings?symbol=nflx

是收入日期的那个。

我知道你必须这样做

Document doc = Jsoup.connect("https://finance.yahoo.com/calendar/earnings?symbol=nflx").get();

然后循环:

for (Element table : doc.select("some string") {

如何获取表格所需的字符串?

1 个答案:

答案 0 :(得分:3)

您实际上并不需要使用for (Element table : doc.select("some string") {遍历所有代码,您可以直接从代码中获取表格。

为了能够获得该表,您需要首先使用您喜欢的浏览器的开发人员工具检查代码(假设您使用的是那个)。像这样:

enter image description here

并确定您想要获得的元素,在您的情况下,特定的表是:

<table class="data-table W(100%) Bdcl(c) Pos(r) BdB Bdc($c-fuji-grey-c)" data-reactid="4">

要获得它的代码是:

Document doc = Jsoup.connect("https://finance.yahoo.com/calendar/earnings?symbol=nflx")
                    .timeout(600000) //added timeout because my internet sucks
                    .get();
Elements tableDiv = doc.getElementsByAttributeValue("class", "data-table W(100%) Bdcl(c) Pos(r) BdB Bdc($c-fuji-grey-c)");

然后你有一个org.jsoup.select.Elements集合,你可以用同样的方式解析,使用方法getElementsBy[whateverAreAvailable]

从表格中获取元素

以下是如何仅打印该表的示例:

tableDiv.forEach(tbody -> tbody.getElementsByTag("tbody")
                               .forEach(tr -> System.out.println(tr)));

使用您喜欢的IDE找出要使用的方法。我认为这足以让你弄明白去哪里。