You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Jsoup按ID提取Unix毫秒级时间戳失败,寻求解决方法

解决动态生成的Unix毫秒时间戳获取问题

问题原因

你用Jsoup获取不到epochMs元素的内容,核心原因是这个时间戳是前端JavaScript实时动态生成并刷新的,而Jsoup只能抓取服务器返回的静态HTML源码,不会执行页面中的JS代码,所以静态源码里epochMs元素本身就是空的,和点击停止计时器无关。

解决方案

方案1:直接在Java中生成(最优)

完全不需要爬取外部网站,Java本身就提供了获取当前Unix毫秒级时间戳的API:

long currentEpochMs = System.currentTimeMillis();
String content = String.valueOf(currentEpochMs);

这是最可靠、高效的方式,避免了网络请求和页面依赖的问题。

方案2:用支持JS执行的工具抓取(如果必须从目标页面获取)

如果一定要从目标页面获取,需要使用能模拟浏览器执行JS的工具,比如HtmlUnit。以下是示例代码:

import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;

public class EpochTimestampFetcher {
    public static void main(String[] args) throws Exception {
        try (WebClient webClient = new WebClient()) {
            // 启用JS执行
            webClient.getOptions().setJavaScriptEnabled(true);
            // 等待JS完成初始渲染
            webClient.waitForBackgroundJavaScript(1000);
            
            HtmlPage page = webClient.getPage("https://www.freeformatter.com/epoch-timestamp-to-date-converter.html");
            String content = page.getElementById("epochMs").getTextContent();
            System.out.println(content);
        }
    }
}

使用HtmlUnit需要添加Maven依赖(若用Maven管理项目):

<dependency>
    <groupId>net.sourceforge.htmlunit</groupId>
    <artifactId>htmlunit</artifactId>
    <version>2.70.0</version>
</dependency>

内容的提问来源于stack exchange,提问作者Mixalis Navridis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 18:55:18