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

使用Jsoup爬取Itau网站表格数据仅获部分内容,请求排查问题

分析Jsoup爬取Itau网站表格数据失败的原因及解决方案

我来帮你拆解下为什么用doc.getElementsByClass("tabela2")只能拿到部分数据,没法提取具体数值:

1. 数据是动态加载的(最可能的原因)

现代金融网站很少会把所有核心数据塞进初始HTML里,Itau这个页面大概率是通过AJAX异步请求拉取表格数值的。Jsoup只能抓取页面首次加载的静态HTML,那些实际的收益数据是页面加载完成后,浏览器执行JS才从后端接口获取并渲染到表格里的——所以你用Jsoup拿到的doc里只有表格的空框架,没有具体数值。

验证方法:打开浏览器开发者工具(F12),切换到「网络」标签页,刷新页面后看看有没有XHR/Fetch请求返回了JSON格式的表格数据,你要的数值肯定藏在某个接口响应里。

解决思路:

  • 直接定位到那个动态数据接口,用Jsoup或OkHttp请求该接口,解析返回的JSON数据,这比爬页面要高效得多;
  • 如果必须模拟完整浏览器渲染流程,可以用Selenium、Playwright这类工具,它们能执行页面JS,等数据完全加载后再抓取。

2. 反爬机制的限制

Itau这类金融网站通常会有反爬检测:

  • 你的userAgent可能不够完整,或者缺少必要的请求头(比如Accept、Referer、Cookie),导致服务器返回的页面不包含完整数据;
  • 服务器可能识别出请求并非来自真实浏览器,故意返回不完整的内容。

解决思路:

  • 复制浏览器请求该页面时的全部请求头(在开发者工具「网络」栏查看请求的Headers),把它们都加到Jsoup的connect()中:
    doc = Jsoup.connect(url)
        .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36")
        .header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
        .header("Referer", "https://www.itau.com.br/")
        // 复制浏览器中的Cookie内容(注意Cookie可能会过期)
        .header("Cookie", "你的浏览器Cookie内容")
        .get();
    
  • 可以尝试添加请求延迟,模拟人类访问的节奏,避免因请求过于频繁被拦截。

3. 表格结构的定位偏差

可能你选中的"tabela2"只是表格的外层容器,实际的数值单元格在更深的子元素里,或者类名存在动态变化(比如带随机后缀的类名)。

验证方法:在浏览器中用「检查元素」查看表格的DOM结构,确认具体数值所在的标签和类名——比如是不是在<td class="valor">这类子元素里。

解决思路:

  • 调整选择器精度,比如用doc.select(".tabela2 td.valor")直接定位数值单元格,而不是只抓取外层表格容器;
  • 如果表格是嵌套结构,可以用更精准的CSS选择器或XPath来定位元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:36:43