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

如何用iMacros提取DIV下tr(odd/even类)数据到Excel?

问题:iMacros提取表格数据至Excel失败

需求:从包含多个子元素的DIV中,提取class为odd或even的<tr>标签内的数据到Excel,每个<tr>对应一行数据,其中<td>的class如rightcelltd 1cell对应独立列。

对应的HTML代码片段:

<div class="dataTables_scrollBody" style="position: relative; overflow: auto; max-height: 310px; height: 310px; width: 100%;">
  <table id="opt_montage_table" class="montage_table dataTable" style="width: 100%;">
    <tbody>
      <tr class="odd">
          <td class="rightcelltd 1cell"></td>
          <td class="rightcelltd 2cell"></td>
          <td class="rightcelltd 3cell"></td>
      </tr>
      <tr class="even">
          <td class="rightcelltd 1cell"></td>
          <td class="rightcelltd 2cell"></td>
          <td class="rightcelltd 3cell"></td>
      </tr>
      <tr class="odd">
          <td class="rightcelltd 1cell"></td>
          <td class="rightcelltd 2cell"></td>
          <td class="rightcelltd 3cell"></td>
      </tr>
      <tr class="even"></tr>
      <tr class="odd"></tr>
      <tr class="even"></tr>
      <tr class="odd"></tr>
      <tr class="even"></tr>
    </tbody>
  </table>
</div>

尝试过以下无效命令(均返回#enaf#错误):

  • TAG POS=5 TYPE=DIV ATTR=CLASS:"dataTables_scrollBody" EXTRACT=TXT
  • TAG POS=5 TYPE=TABLE ATTR=CLASS:"montage_table dataTable" EXTRACT=TXT
  • TAG POS=5 TYPE=TABLE ATTR=CLASS:"opt_montage_table" EXTRACT=TXT
  • TAG POS=5 TYPE=TABLE ATTR=CLASS:"montage_table dataTable" EXTRACT=TXT
  • TAG POS=5 TYPE=DIV ATTR=CLASS:"montage_table dataTable" EXTRACT=TXT

解决方案

核心思路

放弃直接提取整个容器文本的方式,改为循环遍历所有目标<tr>,逐行提取每个<td>的独立数据,再将整理后的数据输出为Excel兼容格式。

具体iMacros脚本实现

SET !EXTRACT_TEST_POPUP NO
' 获取所有符合条件的<tr>总数
TAG POS=1 TYPE=TR ATTR=CLASS:odd||even EXTRACT=TXT
SET !VAR1 {{!EXTRACT}}
SET !EXTRACT NULL
TAG POS=R-1 TYPE=TR ATTR=CLASS:odd||even EXTRACT=TXT
SET !TOTAL_LOOPS {{!EXTRACT}}
SET !EXTRACT NULL

' 循环遍历每一行数据
SET !LOOP 1
TAG POS={{!LOOP}} TYPE=TR ATTR=CLASS:odd||even
' 提取当前行的3列数据(注意用<SP>代替空格)
TAG POS=R-1 TYPE=TD ATTR=CLASS:rightcelltd<SP>1cell EXTRACT=TXT
SET !COL1 {{!EXTRACT}}
SET !EXTRACT NULL
TAG POS=R-1 TYPE=TD ATTR=CLASS:rightcelltd<SP>2cell EXTRACT=TXT
SET !COL2 {{!EXTRACT}}
SET !EXTRACT NULL
TAG POS=R-1 TYPE=TD ATTR=CLASS:rightcelltd<SP>3cell EXTRACT=TXT
SET !COL3 {{!EXTRACT}}
SET !EXTRACT NULL

' 合并为制表符分隔格式,适配Excel列识别
SET !EXTRACT {{!COL1}}<TAB>{{!COL2}}<TAB>{{!COL3}}
' 保存为CSV文件,可直接用Excel打开
SAVEAS TYPE=EXTRACT FOLDER=* FILE=table_data.csv

关键说明

  1. 定位逻辑修复:之前用POS=5硬编码位置容易出错,改用POS={{!LOOP}}配合循环遍历所有符合条件的<tr>。
  2. 精确列提取:针对每个<td>的class单独提取,用<SP>代替空格匹配class属性中的空格,避免提取混乱。
  3. Excel兼容格式:用<TAB>分隔列数据,保存为CSV后可直接导入Excel,自动识别列结构。
  4. 空行处理:如果存在空<tr>,脚本会提取空值,可按需添加判断跳过空行:
IF {{!COL1}} == "" AND {{!COL2}} == "" AND {{!COL3}} == "" THEN
  GOTO SKIP_ROW
ENDIF
' 保存数据的代码
LABEL SKIP_ROW

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 05:39:24