影刀RPA新手教程网页表格数据提取完全指南——HTML表格到Excel的标准流程电商后台、数据平台、政府数据网站……大量有价值的数据都藏在网页的表格里。手工复制粘贴翻10页表格要花多久影刀RPA可以把这件事完全自动化打开页面识别表格提取数据存到Excel一气呵成。一、先区分两种网页表格类型1标准 HTML 表格table标签这类表格用浏览器开发者工具看HTML 结构是tabletheadtrth商品名/thth价格/thth销量/th/tr/theadtbodytrtd连衣裙/tdtd¥89/tdtd1234/td/trtrtdT恤/tdtd¥59/tdtd5678/td/tr/tbody/table影刀处理方式直接用获取相似元素列表配合 XPath 遍历tr行。类型2用div模拟的表格现代网页很多表格不用table标签而是用一堆div拼出来的结构类似这样divclasstable-rowdivclasscol-name连衣裙/divdivclasscol-price¥89/divdivclasscol-sales1234/div/div影刀处理方式定位外层容器一行对应一个div.table-row获取相似列表再从每行里取各列数据。拼多多店群自动化报活动上架识别方法F12 开发者工具点击表格某行看最外层是tabletr还是div。二、标准 HTML 表格的提取流程步骤1定位表头确定列的 XPath先用 F12 看一下表格的结构确认每列的 XPath# 第一行第一格通常是标题 //table//tr[1]/th[1] # 数据行从第二行开始跳过标题 //table//tbody/tr # 某一数据行里的第2格 .//td[2]步骤2在影刀里配置提取逻辑# 获取所有数据行获取相似元素列表(//table//tbody/tr)-行列表# 新建结果表新建表格对象-结果表 写入行数据(结果表,[商品名,价格,销量,店铺])# 遍历每一行遍历列表(行列表,当前行元素):商品名获取元素文本(当前行元素/.//td[1])![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/7b1f662d32d14a86b7462ece211abf3a.png#pic_center)价格获取元素文本(当前行元素/.//td[2])销量获取元素文本(当前行元素/.//td[3])店铺获取元素文本(当前行元素/.//td[4])写入行数据(结果表,[商品名,价格,销量,店铺])导出表格(结果表,D:\采集结果.xlsx)三、div 模拟表格的提取流程# 假设每行是一个 classgoods-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秒)否则:跳出循环翻页类型2URL 参数翻页最稳定很多网站翻页是通过 URL 参数实现的比如https://example.com/list?page1 https://example.com/list?page2这种情况可以直接构造 URL循环访问每一页不用模拟点击总页数20# 先手动确认或用元素提取总页数遍历数字(1,总页数1,当前页):urlfhttps://example.com/list?page{当前页}打开网页(url)等待元素出现(表格数据行,8秒)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/885f4f8bdf2243a6a48b5f2f739f9c0c.png#pic_center)采集当前页数据()输出日志(f第{当前页}页采集完成)固定等待(1秒)# 防止请求太快翻页类型3滚动加载无限滚动有些网站表格不分页而是向下滚动自动加载更多。上次行数0条件循环(True):# 获取当前行数获取相似元素列表(//div[classrow-item])-当前行列表 当前行数len(当前行列表)如果 当前行数上次行数:输出日志(没有新内容加载采集完毕)跳出循环 上次行数当前行数# 滚动到页面底部执行JS(window.scrollTo(0, document.body.scrollHeight))固定等待(2秒)# 等待新内容加载五、数据清洗采集后必做采集到的数据通常带有多余字符直接存表格用不了。TEMU店群矩阵自动化运营核价报活动常见问题和处理方法importpandasaspdimportre dfpd.read_excel(D:\采集结果.xlsx)# 1. 清理价格字段去掉¥、逗号、空格df[价格]df[价格].str.replace(r[¥,\s],,regexTrue)df[价格]pd.to_numeric(df[价格],errorscoerce)# 2. 清理销量字段1.2万→12000defparse_sales(s):sstr(s).strip()if万ins:returnfloat(s.replace(万,).replace(,))*10000returnfloat(re.sub(r[^0-9.],,s)or0)df[销量]df[销量].apply(parse_sales)# 3. 去掉完全重复的行dfdf.drop_duplicates()# 4. 去掉关键字段为空的行dfdf.dropna(subset[商品名,价格])df.to_excel(D:\清洗后数据.xlsx,indexFalse)六、实战采集某数据平台的商品榜单以一个常见的采集场景为例过程通用适合举一反三目标采集某电商数据平台的商品热销榜共10页每页20条 字段排名、商品名、类目、价格、30日销量、店铺 流程 1. 打开榜单页 → 提取标题、设置日期范围 2. 获取总页数从分页组件取数字 3. 循环10页 → 每页提取20行 4. 合并200条数据 5. 清洗价格和销量字段 6. 存入Excel按销量降序排列 7. 飞书推送采集完成通知关键代码片段# 获取总页数取分页组件最后一个数字按钮的文本获取元素文本(//ul[classpagination]//li[last()-1]/a)-总页数文字 总页数int(总页数文字)# 遍历每页数据列表[]遍历数字(1,总页数1,当前页码):打开网页(fhttps://xxx.com/rank?page{当前页码})等待元素出现(//tr[classrank-row],8秒)获取相似元素列表(//tr[classrank-row])-行列表 遍历列表(行列表,行):排名获取元素文本(行/.//td[1])商品名获取元素文本(行/.//td[2])类目获取元素文本(行/.//td[3])价格获取元素文本(行/.//td[4])销量获取元素文本(行/.//td[5])店铺获取元素文本(行/.//td[6])数据列表.append([排名,商品名,类目,价格,销量,店铺])固定等待(1秒)# 存表格写入Excel(数据列表,D:\榜单数据.xlsx)七、易错速查问题原因解决获取相似元素返回空XPath 写错或页面还没加载F12 验证 XPath加等待指令拿到的文本包含多余空格HTML 有换行和缩进Pythonstr.strip()处理翻页后数据和上一页一样没等待新页面加载完翻页后等待关键元素重新出现采集到一半网页结构变化页数不同结构不同加异常处理遇到异常截图跳过#影刀RPA #网页数据采集 #HTML表格提取 #RPA自动化 #影刀新手教程作者林焱本文为影刀RPA系列文章之一内容源于实操经验整理与分享。