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

使用Jsoup爬取NBA数据时元素无法存入数组的问题求助

Jsoup爬取NBA数据无法加载到ArrayList的问题分析与解决

核心问题排查

  1. 页面动态加载导致静态爬取失效
    NBA Stats页面的球队数据是通过AJAX动态加载的,Jsoup的connect(reference).get()只能获取页面的静态骨架HTML,实际的球队数据并不会包含在这部分内容里。你用getElementsByAttributeValue("field", "TEAM_NAME")这类选择器根本找不到对应元素,自然无法提取数据。

  2. 选择器逻辑不符合页面实际结构
    即使页面是静态的,也需要先确认目标元素是否真的带有field="TEAM_NAME"这类属性。可以在代码中添加System.out.println(nba.html()),查看Jsoup实际获取到的页面内容,验证是否存在你要定位的元素。

  3. 测试代码无法验证数据加载状态
    你当前的测试代码System.out.print(NBA.getClass())只会打印ArrayList的类对象信息,无论集合是否有数据,输出都是class java.util.ArrayList,完全无法判断数据是否被正确添加。应改为打印集合内的具体元素:

for(int i=0; i<NBA.size(); i++) {
    Team team = NBA.get(i);
    System.out.println(team.getName() + " | 有效命中率: " + team.getShootingScore());
}

解决方案建议

方案1:调用NBA官方数据API(推荐)

NBA Stats提供公开的数据API接口,直接请求接口获取JSON格式数据,比爬取页面更稳定可靠。可以通过浏览器开发者工具的「网络」面板筛选XHR请求,找到加载球队四因素数据的API地址,再用Jsoup或HTTP工具请求该接口,解析JSON并映射到Team对象。

方案2:修正页面爬取逻辑(仅适用于静态数据页面)

若坚持爬取页面,需先定位存放数据的表格,再遍历行提取数据。示例代码如下:

// 根据页面实际结构调整选择器,这里假设数据在id为"stats-table"的表格中
Element table = nba.selectFirst("#stats-table");
if (table != null) {
    Elements rows = table.select("tr");
    // 跳过表头行,从第二行开始遍历
    for (int i = 1; i < rows.size(); i++) {
        Elements cols = rows.get(i).select("td");
        if (cols.size() >= 5) {
            String name = cols.get(0).text();
            double shootingScore = Double.parseDouble(cols.get(1).text());
            double turnoversScore = Double.parseDouble(cols.get(2).text());    
            double reboundsScore = Double.parseDouble(cols.get(3).text());  
            double freethrowsScore = Double.parseDouble(cols.get(4).text());  
            NBA.add(new Team(name, shootingScore, turnoversScore, reboundsScore, freethrowsScore));
        }
    }
}

方案3:完善异常处理

添加NumberFormatException捕获,避免因数据格式问题导致程序崩溃:

try {
    // ... 数据提取代码 ...
} catch (IOException e) {
    System.out.println("网络请求异常: " + e.getMessage());
} catch (NumberFormatException e) {
    System.out.println("数据格式转换异常: " + e.getMessage());
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 05:03:36