我对此很陌生,所以有人能指出我正确的方向吗? 我有一个 JavaScript 文件,我想通过它从网站获取跨度的值。现在网站每 1 秒动态刷新一次跨度。我正在使用 Java (Eclipse) 来获取此数据。当我尝试从网站获取跨度值时,它没有给我任何值,因为跨度使用 JavaScript 来存储这些值。我已经问过这个问题,我将在下面放置一个链接。所以我想知道的是,如何使用 JSoup 动态获取这些数据。有人对我的上一篇文章发表评论说 JavaScript 可能正在查询 Web 服务并找到该代码。但我找不到代码,我不知道下一步该怎么做。
这是我最后一个问题的链接:Fetching Dynamic Website Data Using Java
以下是网站的链接,该网站将我想要的数据存储在名为“id=spot”的范围内(基本上是库存数字):https://www.binary.com/trading?l=EN
最后是该网站的 JavaScript 文件的链接,该文件具有所有功能:https://static.binary.com/js/binary.min.js?13b386b
请帮助我,因为我对此很陌生,我花了两天多的时间试图找到答案,但没有运气。 预先感谢您
------------------------------------------------------------ ---------------------------------.---------------- -----------------------------------
好的,问题的第一部分已经解决,但我现在遇到了另一个问题。我复制了这段代码,但现在收到此错误。这是我的代码:
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);
}
}
这是控制台上的错误:
Exception in thread "main" java.lang.RuntimeException: Could not find an implementation class. at javax.websocket.ContainerProvider.getWebSocketContainer(ContainerProvider.java:73) at WSClient.main(WSClient.java:24)
最佳答案
该站点使用 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中的数据。你需要一个像 HTML-UNIT 这样的 Java 中无 UI 的浏览器.
但首选且更合理的方法是使用 API of the site .
关于javascript - 如何使用 JavaScript 从动态存储数据的网站获取跨度值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36798419/