2017-10-05 117 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 ....'方法,你將得到值。 –