2017-10-05 106 views
1

我松散知道如何解析在jsoup HTML表格,但我的工作表是在网页的某个地方,我不知道如何得到它: https://finance.yahoo.com/calendar/earnings?symbol=nflx如何在java中使用jsoup提取/解析这个html表?

这是一个与收益日期。

我知道,你所要做的

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

然后在一个循环:

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

我怎么表的需要串?

回答

2

您实际上并不需要遍历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,找出要使用的方法。我认为这足以让你找出去哪里。

+0

谢谢!但是,我将html代码作为输出:

+1

当然可以。你必须更多地解析它。我没有给你这样做的代码,而是我展示了你自己想出来的方式。从你得到的TRs和TRs中你可以得到TD和它的值。我没有给你准确的代码的原因是因为这是一个网站学习/教我们不是一个免费的代码服务。它在答案中,使用'getElementsBy ....'方法,你将得到值。 –