影刀RPA 网页表格采集进阶:合并单元格处理
影刀RPA 网页表格采集进阶合并单元格处理作者林焱什么情况用什么采集网页表格时遇到合并单元格——表头跨了两列、某个分类名占了三行——直接按行遍历会导致数据错位。在影刀RPA里需要先解析表格结构还原合并单元格的值再按行列提取数据。适用场景采集带合并表头的报表、财务表格的合并分类行、排班表的跨行单元格、带层级结构的表格数据。怎么做基础表格采集简单表格直接用影刀【提取网页数据表格】或pandas读取拼多多店群自动化报活动上架importpandasaspd# 方式1pandas直接读取HTML表格tablespd.read_html(https://example.com/report)dftables[0]# 取第一个表格# 方式2影刀【提取网页数据表格】指令# 在影刀中直接用可视化指令提取适合标准表格合并单元格处理frombs4importBeautifulSoupimportrequestsdefextract_table_with_merged_cells(html,table_index0):提取带合并单元格的表格soupBeautifulSoup(html,html.parser)tablesoup.find_all(table)[table_index]rowstable.find_all(tr)ifnotrows:return[]# 1. 计算表格实际列数考虑colspanmax_cols0forrowinrows:cols0forcellinrow.find_all([td,th]):colspanint(cell.get(colspan,1))colscolspan max_colsmax(max_cols,cols)# 2. 初始化数据矩阵num_rowslen(rows)num_colsmax_cols data[[None]*num_colsfor_inrange(num_rows)]# 3. 填充数据处理rowspan和colspanforr,rowinenumerate(rows):cellsrow.find_all([td,th])col_idx0forcellincells:# 跳过已被rowspan占用的位置whilecol_idxnum_colsanddata[r][col_idx]isnotNone:col_idx1ifcol_idxnum_cols:breaktextcell.get_text(stripTrue)colspanint(cell.get(colspan,1))rowspanint(cell.get(rowspan,1))# 填充当前及合并的列forcinrange(colspan):ifcol_idxcnum_cols:data[r][col_idxc]text# 填充rowspan占用的行forr_offinrange(1,rowspan):ifrr_offnum_rows:forcinrange(colspan):ifcol_idxcnum_cols:data[rr_off][col_idxc]text col_idxcolspan# 4. 转为DataFramedfpd.DataFrame(data[1:],columnsdata[0])# 第一行作为表头returndf# 使用urlhttps://example.com/sales_reportresponserequests.get(url,timeout10)dfextract_table_with_merged_cells(response.text,table_index0)df.to_excel(rC:\Data\table_data.xlsx,indexFalse)影刀RPA中的操作流程1. 【打开网页】→ 打开目标报表页面 2. 【执行Python代码】→ 获取页面HTML 3. 【执行Python代码】→ 解析合并单元格表格 4. 【写入Excel文件】→ 保存数据 5. ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/8f1c1666cd15454a8749e60ed924ad80.png#pic_center) 6. 【翻页处理】→ 如果有分页循环1-4在影刀中的Python代码节点# 获取当前页面HTML# 方式1用影刀【获取网页源代码】指令获取html存到变量# 方式2直接用requestsimportrequestsfrombs4importBeautifulSoupimportpandasaspd urlhttps://example.com/report?page1headers{User-Agent:Mozilla/5.0...}responserequests.get(url,headersheaders,timeout10)dfextract_table_with_merged_cells(response.text)# 通过yd_var传递给影刀yd_var[table_data]df.to_dict(records)yd_var[row_count]len(df)多页表格合并采集defscrape_multi_page_table(base_url,max_pages10):采集多页表格数据all_data[]forpageinrange(1,max_pages1):urlf{base_url}?page{page}responserequests.get(url,headersheaders,timeout10)dfextract_table_with_merged_cells(response.text)ifdf.empty:print(f第{page}页无数据停止)breakall_data.append(df)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/4d47cc3155c841fdb7b7fcd233e88c3c.png#pic_center)print(f第{page}页采集{len(df)}行)# 影刀中可用【等待元素出现】检查是否有下一页按钮# 如果没有下一页则break# 合并所有页resultpd.concat(all_data,ignore_indexTrue)returnresult# 使用resultscrape_multi_page_table(https://example.com/report,max_pages20)result.to_excel(rC:\Data\all_pages.xlsx,indexFalse)有什么坑坑1表头多行合并导致列名丢失有些表格表头有2-3行第一行是分类合并单元格第二行才是具体列名# 问题pandas.read_html默认只取第一行做表头dfpd.read_html(html)[0]# 列名是分类名而不是具体字段名# 解决指定header行dfpd.read_html(html,header1)[0]# 用第二行做表头![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/463ec3449c0344968e0f8e984a9fdc0d.png#pic_center)# 或者自定义表头dfpd.read_html(html,headerNone)[0]df.columns[日期,地区,产品,数量,金额]# 手动指定坑2rowspan导致数据错位一个单元格rowspan3占了3行但后面的行少了一个td直接遍历td会错位TEMU店群矩阵自动化运营核价报活动# 问题直接遍历td数量不一致forrowinrows:cellsrow.find_all(td)# 第一行5个td第二行可能只有4个因为被上面的rowspan占了![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/312ed171dd3f44648e7ca2dcac3e834b.png#pic_center)# 解决用上面的矩阵填充法先初始化空矩阵# 然后跳过已被占用的位置# 参见上面的extract_table_with_merged_cells函数坑3表格在iframe里# 问题requests获取的HTML里没有表格因为表格在iframe里responserequests.get(url)# response.text里找不到table# 解决先找到iframe的src再请求iframe的URLsoupBeautifulSoup(response.text,html.parser)iframesoup.find(iframe)ififrame:iframe_urliframe.get(src)ifnotiframe_url.startswith(http):iframe_urlrequests.compat.urljoin(url,iframe_url)iframe_responserequests.get(iframe_url,headersheaders)# 在iframe_response.text里找表格坑4动态加载的表格表格数据通过AJAX加载requests获取的HTML是空的# 解决1找到AJAX接口直接请求# 在浏览器F12 → Network → XHR中找到数据接口api_urlhttps://example.com/api/table_data?page1responserequests.get(api_url,headersheaders)dataresponse.json()dfpd.DataFrame(data[rows])# 解决2用影刀的浏览器自动化# 【打开网页】→ 【等待元素出现】表格 → 【获取网页源代码】→ 解析坑5表格内嵌格式干扰单元格里有、等标签导致文本混乱# 问题get_text()把所有文字连在一起没有分隔cell.get_text()# 张三经理13800138000# 解决用分隔符cell.get_text(separator ,stripTrue)# 张三 经理 13800138000# 或者更精细地提取forbrincell.find_all(br):br.replace_with(\n)textcell.get_text(stripTrue)# 张三\n经理\n13800138000

相关新闻

企业管理系统开发别急着上功能,先理流程和数据

企业管理系统开发别急着上功能,先理流程和数据

企业管理系统开发,表面上是在做ERP、OA、CRM、WMS、项目管理、财务协同、人事考勤等模块,真正落地后才会发现,难点并不在页面数量,而在企业流程、组织权限、数据口径、系统集成和后期迭代能不能跑顺。本文从第三方技术观察视角展开…

2026/7/23 8:36:06阅读更多 →
Modbus TCP/RTU 测试工具实战应用指南

Modbus TCP/RTU 测试工具实战应用指南

实用的modbus调试工具 主要功能如下: 1、协议支持Modbus RTU 和Modbus TCP; 2、通信方式支持 串口和TCP方式; 3、寄存器支持0x01/0x02/0x03/0x04/0x05/0x06/0x0f/0x10; 4、数据类型支持BOOL、INT16、UINT16、INT32、UINT32、FLOAT…

2026/7/23 8:36:06阅读更多 →
2026年低代码平台值得推荐的五大标杆厂商深度测评,附选型指南

2026年低代码平台值得推荐的五大标杆厂商深度测评,附选型指南

摘要2026年,企业数字化转型进入深水区,低代码平台已成为组织提升应用交付效率、降低开发门槛的关键基础设施。本文从专业测评视角,选取泛微e-builder、明道云、华为云Astro、道一云七巧、普元EOS五家标杆低代码平台厂商进行深度解析&#xff…

2026/7/23 8:36:06阅读更多 →
OC角色动画制作:水仙走路Meme风格全流程解析

OC角色动画制作:水仙走路Meme风格全流程解析

这次我们来看一个关于 OC(原创角色)和水仙走路 meme 的有趣项目。这个项目主要围绕"约的"这个主题展开,涉及原创角色的创作和特定 meme 风格的结合。对于喜欢二次元文化、角色设计和网络 meme 创作的爱好者来说,这是一个…

2026/7/23 10:04:18阅读更多 →
Claude Code 使用限额提升50%:安装配置与高效使用全指南

Claude Code 使用限额提升50%:安装配置与高效使用全指南

最近在开发过程中,很多同学反馈 Claude Code 的使用额度经常不够用,特别是在项目密集迭代阶段。好消息是,官方刚刚宣布将周使用限额提升了 50%,这一政策将持续到 8 月 19 日。作为一款强大的 AI 编程助手,Claude Code …

2026/7/23 10:04:18阅读更多 →
舞蹈视频AI分析工具:从动作识别到场景分割的本地部署实践

舞蹈视频AI分析工具:从动作识别到场景分割的本地部署实践

这次我们来看一个特别的本地部署项目——二点五次元哈尔滨随机舞蹈路演视频的AI处理方案。这个项目不是传统的AI模型,而是针对特定舞蹈视频内容的智能分析工具,能够实现舞蹈动作识别、人物跟踪、场景分割等核心功能。 对于喜欢二次元文化和舞蹈视频处理…

2026/7/23 10:04:18阅读更多 →
AI大模型入门:从原理到应用的通俗指南

AI大模型入门:从原理到应用的通俗指南

1. 为什么普通人需要了解AI大模型? 最近两年,AI大模型突然成为街头巷尾热议的话题。从能写诗的ChatGPT到会画画的Midjourney,这些看似"聪明"的AI应用背后,都离不开大模型技术的支撑。但一提到"模型"、"算…

2026/7/23 10:04:18阅读更多 →
uni-app 鸿蒙端传参变成 [object Object]?顺着源码追到 ArkTS router 底层才搞明白

uni-app 鸿蒙端传参变成 [object Object]?顺着源码追到 ArkTS router 底层才搞明白

上个月同事跑过来问了我一个问题:“uni-app 鸿蒙端跳页面传了个对象过去,接收端打出来是 [object Object],你有遇到过吗?” 我当时正在改一个鸿蒙端商品列表的瀑布流布局,头也没抬回了句:“URL 参数没序列化…

2026/7/23 10:04:18阅读更多 →
2026年AI平民化时代:开源大模型技术选型与本地部署实战指南

2026年AI平民化时代:开源大模型技术选型与本地部署实战指南

如果你是一名开发者,最近可能已经感受到了AI领域的暗流涌动。从去年开始,国内开源大模型如雨后春笋般涌现,而最新的评测数据显示,中国顶尖开源模型在多项关键指标上已经逼近甚至在某些细分领域超越了美国同类产品。 这不仅仅是技…

2026/7/23 10:02:18阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/23 0:56:31阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/23 0:56:31阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 0:56:31阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:00:28阅读更多 →
从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:28阅读更多 →
油泥处理设备哪里能买到

油泥处理设备哪里能买到

油泥处理设备哪里有?这是许多从事油田、炼化、清罐业务的从业者最关心的问题。根据河南三丰环保设备有限公司的行业经验,选购油泥处理设备的核心在于设备能否适配当地环保法规与原料特性,而非单纯看价格。该公司总经理王钦田先生指出&#xf…

2026/7/23 0:00:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/22 22:56:18阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/22 18:55:50阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/22 18:55:50阅读更多 →