2016-04-22 60 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

相关问题