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

Flutter如何抓取页面中两个class名相同的表格?

抓取第二个class为"online"的表格方法

你已经通过document.getElementsByClassName('online')[0]获取到第一个表格,要抓取第二个表格,只需要将索引从0改为1即可。为了避免重复代码、提升可维护性,建议把表格解析逻辑封装成独立函数,这样两个表格的解析都能复用同一套逻辑。

修改后的完整代码示例

Future extractBothTables() async {
  // 请求目标页面
  final response = await http.Client().get(Uri.parse('http://rte.arso.gov.si/zrak/kakovost%20zraka/podatki/dnevne_koncentracije.html'));
  
  if (response.statusCode == 200) {
    var document = parser.parse(response.body);
    datalist.clear();
    datalist.add("");
    
    // 获取页面中所有class为"online"的表格
    var tables = document.getElementsByClassName('online');
    
    // 确保页面存在至少两个目标表格
    if (tables.length >= 2) {
      // 解析第一个表格
      var table1Data = parseTable(tables[0]);
      // 解析第二个表格
      var table2Data = parseTable(tables[1]);
      
      // 可根据业务需求处理两个表格的数据,比如存入不同变量
      print('第一个表格数据行数: ${table1Data.length}');
      print('第二个表格数据行数: ${table2Data.length}');
    } else {
      print('页面中未找到两个class为"online"的表格');
    }
  } else {
    print('请求失败,状态码: ${response.statusCode}');
  }
}

// 封装表格解析逻辑,实现代码复用
List<List<String?>> parseTable(Element table) {
  List<List<String?>> tableData = [];
  try {
    var rows = table.getElementsByTagName('tr');
    if (rows.isEmpty) return tableData;
    
    var cols = rows[0].getElementsByTagName('th');
    tableData = List.generate(rows.length, (_) => List<String?>.generate(cols.length, (_) => null));
    
    var r = 0;
    for (var row in rows) {
      cols = row.getElementsByTagName(r == 0 ? 'th' : 'td');
      var c = 0;
      for (var col in cols) {
        tableData[r][c] = utf8.decode(latin1.encode(col.text), allowMalformed: true);
        c++;
      }
      r++;
    }
  } catch (e) {
    print('解析表格出错: $e');
  }
  return tableData;
}

关键说明

  • document.getElementsByClassName('online')会返回页面中所有class为"online"的元素集合,索引从0开始,第二个表格对应索引1
  • 封装parseTable函数后,无需重复编写解析逻辑,后续如果要解析更多同结构表格也能直接调用
  • 增加表格数量判断,可避免因页面结构变动导致的索引越界问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 08:32:19