影刀RPA新手教程:网页表格数据提取完全指南——HTML表格到Excel的标准流程
电商后台、数据平台、政府数据网站……大量有价值的数据都藏在网页的表格里。
手工复制粘贴?翻10页表格要花多久?
影刀RPA可以把这件事完全自动化:打开页面,识别表格,提取数据,存到Excel,一气呵成。

一、先区分两种网页表格
类型1:标准 HTML 表格(<table> 标签)
这类表格用浏览器开发者工具看,HTML 结构是:
<table>
<thead>
<tr><th>商品名</th><th>价格</th><th>销量</th></tr>
</thead>
<tbody>
<tr><td>连衣裙</td><td>¥89</td><td>1234</td></tr>
<tr><td>T恤</td><td>¥59</td><td>5678</td></tr>
</tbody>
</table>
影刀处理方式:直接用"获取相似元素列表"配合 XPath 遍历 <tr> 行。
类型2:用 div 模拟的表格

现代网页很多表格不用 <table> 标签,而是用一堆 <div> 拼出来的,结构类似这样:
<div class="table-row">
<div class="col-name">连衣裙</div>
<div class="col-price">¥89</div>
<div class="col-sales">1234</div>
</div>
影刀处理方式:定位外层容器(一行对应一个div.table-row),获取相似列表,再从每行里取各列数据。
拼多多店群自动化报活动上架!
识别方法:F12 开发者工具,点击表格某行,看最外层是 <table><tr> 还是 <div>。

二、标准 HTML 表格的提取流程
步骤1:定位表头,确定列的 XPath
先用 F12 看一下表格的结构,确认每列的 XPath:
# 第一行第一格(通常是标题)
//table//tr[1]/th[1]
# 数据行(从第二行开始,跳过标题)
//table//tbody/tr
# 某一数据行里的第2格
.//td[2]
步骤2:在影刀里配置提取逻辑
# 获取所有数据行
获取相似元素列表("//table//tbody/tr") –> 行列表
# 新建结果表
新建表格对象 –> 结果表
写入行数据(结果表, ["商品名", "价格", "销量", "店铺"])
# 遍历每一行
遍历列表(行列表, 当前行元素):
商品名 = 获取元素文本(当前行元素 + "/.//td[1]")

价格 = 获取元素文本(当前行元素 + "/.//td[2]")
销量 = 获取元素文本(当前行元素 + "/.//td[3]")
店铺 = 获取元素文本(当前行元素 + "/.//td[4]")
写入行数据(结果表, [商品名, 价格, 销量, 店铺])
导出表格(结果表, "D:\\采集结果.xlsx")
三、div 模拟表格的提取流程
# 假设每行是一个 class='goods-row' 的 div
获取相似元素列表("//div[contains(@class,'goods-row')]") –> 行列表
新建表格对象 –> 结果表
写入行数据(结果表, ["商品名", "价格", "销量"])
遍历列表(行列表, 当前行):
# .// 是从当前行内部开始查找
商品名 = 获取元素文本(当前行 + "/.//div[contains(@class,'name')]")
价格 = 获取元素文本(当前行 + "/.//div[contains(@class,'price')]")
销量 = 获取元素文本(当前行 + "/.//div[contains(@class,'sales')]")
写入行数据(结果表, [商品名, 价格, 销量])
导出表格(结果表, "D:\\采集结果.xlsx")
四、带翻页的表格提取
很多表格有分页,每页 20~50 条数据,需要翻到最后一页才能拿完。
翻页类型1:按钮翻页(最常见)

条件循环(True):
# 先采集当前页
采集当前页数据()
# 判断是否有下一页按钮(且可点击)
判断元素是否存在("//a[text()='下一页' and not(contains(@class,'disabled'))]") –> 有下页
如果 有下页:
点击元素("下一页按钮")
等待元素出现("表格数据行", 5秒)
否则:
跳出循环
翻页类型2:URL 参数翻页(最稳定)
很多网站翻页是通过 URL 参数实现的,比如:
https://example.com/list?page=1
https://example.com/list?page=2
这种情况可以直接构造 URL,循环访问每一页,不用模拟点击:
总页数 = 20 # 先手动确认或用元素提取总页数
遍历数字(1, 总页数+1, 当前页):
url = f"https://example.com/list?page={当前页}"
打开网页(url)
等待元素出现("表格数据行", 8秒)

采集当前页数据()
输出日志(f"第{当前页}页采集完成")
固定等待(1秒) # 防止请求太快
翻页类型3:滚动加载(无限滚动)
有些网站表格不分页,而是向下滚动自动加载更多。
上次行数 = 0
条件循环(True):
# 获取当前行数
获取相似元素列表("//div[@class='row-item']") –> 当前行列表
当前行数 = len(当前行列表)
如果 当前行数 == 上次行数:
输出日志("没有新内容加载,采集完毕")
跳出循环
上次行数 = 当前行数
# 滚动到页面底部
执行JS("window.scrollTo(0, document.body.scrollHeight)")
固定等待(2秒) # 等待新内容加载
五、数据清洗(采集后必做)
采集到的数据通常带有多余字符,直接存表格用不了。
TEMU店群矩阵自动化运营核价报活动

常见问题和处理方法:
import pandas as pd
import re
df = pd.read_excel("D:\\采集结果.xlsx")
# 1. 清理价格字段(去掉¥、逗号、空格)
df['价格'] = df['价格'].str.replace(r'[¥,\\s]', '', regex=True)
df['价格'] = pd.to_numeric(df['价格'], errors='coerce')
# 2. 清理销量字段("1.2万"→12000)
def parse_sales(s):
s = str(s).strip()
if '万' in s:
return float(s.replace('万', '').replace('+', '')) * 10000
return float(re.sub(r'[^0-9.]', '', s) or 0)
df['销量'] = df['销量'].apply(parse_sales)
# 3. 去掉完全重复的行
df = df.drop_duplicates()
# 4. 去掉关键字段为空的行
df = df.dropna(subset=['商品名', '价格'])
df.to_excel("D:\\清洗后数据.xlsx", index=False)
六、实战:采集某数据平台的商品榜单
以一个常见的采集场景为例(过程通用,适合举一反三):
目标:采集某电商数据平台的商品热销榜,共10页,每页20条
字段:排名、商品名、类目、价格、30日销量、店铺
流程:
1. 打开榜单页 → 提取标题、设置日期范围
2. 获取总页数(从分页组件取数字)
3. 循环10页 → 每页提取20行
4. 合并200条数据
5. 清洗价格和销量字段
6. 存入Excel,按销量降序排列
7. 飞书推送采集完成通知
关键代码片段:

# 获取总页数(取分页组件最后一个数字按钮的文本)
获取元素文本("//ul[@class='pagination']//li[last()-1]/a") –> 总页数文字
总页数 = int(总页数文字)
# 遍历每页
数据列表 = []
遍历数字(1, 总页数+1, 当前页码):
打开网页(f"https://xxx.com/rank?page={当前页码}")
等待元素出现("//tr[@class='rank-row']", 8秒)
获取相似元素列表("//tr[@class='rank-row']") –> 行列表
遍历列表(行列表, 行):
排名 = 获取元素文本(行 + "/.//td[1]")
商品名 = 获取元素文本(行 + "/.//td[2]")
类目 = 获取元素文本(行 + "/.//td[3]")
价格 = 获取元素文本(行 + "/.//td[4]")
销量 = 获取元素文本(行 + "/.//td[5]")
店铺 = 获取元素文本(行 + "/.//td[6]")
数据列表.append([排名, 商品名, 类目, 价格, 销量, 店铺])
固定等待(1秒)
# 存表格
写入Excel(数据列表, "D:\\榜单数据.xlsx")
七、易错速查
| 获取相似元素返回空 | XPath 写错或页面还没加载 | F12 验证 XPath,加等待指令 |
| 拿到的文本包含多余空格 | HTML 有换行和缩进 | Python str.strip() 处理 |
| 翻页后数据和上一页一样 | 没等待新页面加载完 | 翻页后等待关键元素重新出现 |
| 采集到一半网页结构变化 | 页数不同结构不同 | 加异常处理,遇到异常截图跳过 |
#影刀RPA #网页数据采集 #HTML表格提取 #RPA自动化 #影刀新手教程

作者:林焱
本文为影刀RPA系列文章之一,内容源于实操经验整理与分享。 




