2016-04-22 42 views
0

我對此很陌生,所以任何人都可以指出我正確的方向嗎? 我有一個JavaScript文件,我想從網站中獲取跨度的值。現在網站每1秒動態刷新一次跨度。我正在使用Java(Eclipse)來獲取這些數據。當我嘗試從網站獲取跨度值時,它不會給我任何值,因爲跨度使用JavaScript來存儲這些值。我已經問過這個問題,我會在下面放下一個鏈接。所以我想知道的是,如何使用JSoup動態獲取這些數據。有人評論我的最後一篇文章,稱JavaScript可能正在查詢Web服務並找到該代碼。但是我找不到代碼,我不知道下一步該怎麼做。如何從使用JavaScript動態存儲數據的網站獲取跨度值

這裏是鏈接到我的最後一個問題:Fetching Dynamic Website Data Using Java

這裏是鏈接到一個名爲跨度存儲我想數據的網站「ID =點」(基本上是數字的股票數量):https://www.binary.com/trading?l=EN

最後這裏是鏈接到網站的JavaScript文件,裏面有所有的功能:https://static.binary.com/js/binary.min.js?13b386b

請幫助我,我很新的這一點,我已經花了超過2天試圖找到答案沒有運氣。 謝謝您提前

----------------------------------------- ---------------------------------------.---------- -----------------------------------------

好吧,所以第一部分的問題已解決,但我現在有另一個問題。我複製了這段代碼,但現在我得到了這個錯誤。這裏是我的代碼:

import java.net.URI; 
import java.io.IOException; 
import java.lang.InterruptedException; 
import javax.websocket.*; 

@ClientEndpoint 
public class WSClient { 

@OnOpen 
public void onOpen(Session session) throws java.io.IOException 
{ 
    session.getBasicRemote().sendText("{\"ticks\": \"R_100\"}"); 
} 

@OnMessage 
public void onMessage(String message) 
{ 
    System.out.println("ticks update: " + message); 
} 

public static void main(String[] args) 
    throws IOException, DeploymentException, InterruptedException 
{ 
    WebSocketContainer container = ContainerProvider.getWebSocketContainer(); 
    URI apiUri = URI.create("wss://ws.binaryws.com/websockets/v3"); 
    Session session = container.connectToServer(WSClient.class, apiUri); 
    Thread.sleep(10000); 
} 
} 

這裏是在控制檯上的錯誤:線程「主」了java.lang.RuntimeException

異常:找不到一個實現類。 在javax.websocket.ContainerProvider.getWebSocketContainer(ContainerProvider.java:73) 在WSClient.main(WSClient.java:24)

回答

1

該網站所使用的WebSockets從服務器檢索數據在客戶端顯示:

var onLoad = function(){ 
     trading_page = 1; 
     if(sessionStorage.getItem('currencies')){ 
      displayCurrencies(); 
     }  
     BinarySocket.init({ 
      onmessage: function(msg){ 
       Message.process(msg); //this function is updating that sppan 
      }, 
      onclose: function(){ 
       processMarketUnderlying(); 
      } 
     }); 
     Price.clearFormId(); 
     TradingEvents.init(); 
     Content.populate(); 

所以你不能看到與JSOUP下載的HTML數據。你需要一個java中的無UI界面的瀏覽器,如HTML-UNIT

但首選和更合理的方法是使用API of the site

+0

您能否說明使用API​​的代碼?就像我說的我很新:/ – PICKAB00

+1

他們有不同語言的代碼示例包括java:https://developers.binary.com/demos/ –

+0

感謝您的建議。幫了我很多。但我有另一個問題。我上面編輯了我的問題。 – PICKAB00

相關問題