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

使用Jsoup获取游戏统计网站h1标签内容为空问题咨询

你遇到的标签内容为空的核心原因是:这些h1标签里的胜率、MVP次数、对局场数等数据,是页面加载完成后由JavaScript动态请求接口、再填充到标签里的。Jsoup默认只能获取服务器返回的原始静态HTML,不会执行页面的JS逻辑,因此无法拿到动态渲染后的内容。你之前能拿到的IGN、段位、等级这些属于静态渲染在页面里的内容,所以可以正常获取。

解决方案1:直接调用后端数据接口(更推荐)

这种方法性能最高、稳定性最好,不需要解析HTML:

  • 打开浏览器的开发者工具(F12),切换到「网络」面板,筛选「Fetch/XHR」类型的请求
  • 刷新目标页面,逐个查看请求的响应内容,找到返回胜率、MVP、对局数等统计数据的接口
  • 直接用Java发送HTTP请求调用该接口,解析返回的JSON数据即可拿到目标字段

解决方案2:使用支持JS渲染的爬取工具

如果找不到对应接口,可以用无头浏览器工具模拟浏览器完整的页面加载逻辑,等JS执行完成后再提取内容,常用工具可选HtmlUnit、Selenium、Playwright等,以下是HtmlUnit的示例代码:

// 引入HtmlUnit依赖后使用
WebClient webClient = new WebClient(BrowserVersion.CHROME);
// 配置关闭不必要的报错、启用JS
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setCssEnabled(false);

// 加载页面,等待JS渲染完成
HtmlPage page = webClient.getPage("https://na.wildstats.gg/en/profile/60ae4f204a9aa2000f3d5f33");
webClient.waitForBackgroundJavaScript(3000); // 等待3秒让JS执行完成

// 现在可以拿到渲染后的内容了
DomNodeList<DomElement> winRates = page.getElementsByClass("text-center m-0");
for (DomElement element : winRates) {
    System.out.println(element.getTextContent());
}
webClient.close();

注意事项

  • 请求时建议带上合法的User-Agent头,避免被网站的反爬策略拦截
  • 爬取数据请遵守目标网站的使用协议和robots规则,控制请求频率避免对服务器造成压力

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:54:04