ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

影刀RPA新手教程:数据处理全流程实战——从文本提取清洗到JSON解析入库

影刀RPA新手教程:数据处理全流程实战——从文本提取清洗到JSON解析入库 影刀RPA新手教程数据处理全流程实战——从文本提取清洗到JSON解析入库我第一次做电商数据采集时从网页上采集到的数据很脏价格里混着¥和元、商品标题有换行符、销量是1万这种文本。我排查了一下午才知道需要用正则提取和数字转换来处理。后来我总结了数据处理的完整流程现在采集到的数据基本不需要手动清洗。文本提取与清洗4种方法直接给用法1. 正则提取什么时候用从文本中提取指定格式的内容比如从价格¥150元中提取150。怎么用指令从文本中提取内容 原始文本价格¥150元 提取方式正则表达式提取 正则表达式\d 保存到price_listprice_list的结果是一个列表[150]。如果要把它变成字符串用【获取列表指定位置项】指令取出第0项。真实场景从商品标题中提取商品型号比如从iPhone 13 Pro Max 256G中提取13 Pro Max。指令从文本中提取内容 原始文本iPhone 13 Pro Max 256G 提取方式正则表达式提取 正则表达式\d.*?G # 匹配13 Pro Max 256G 保存到model_list我踩过的坑正则表达式写错了提取到空列表。解决方法是用 regex101.com 在线测试正则确保能正确匹配再放进流程。2. 字符串分割什么时候用把一段文本按照指定分隔符分割成列表比如把苹果,香蕉,橙子分割成[苹果, 香蕉, 橙子]。怎么用指令文本处理 原始文本苹果,香蕉,橙子 操作分割字符串 分隔符, 保存到fruit_list真实场景把商品标签比如新品,热销,包邮分割成列表然后逐个写入Excel的不同列。关键点分隔符要准确。如果文本中是苹果香蕉橙子中文逗号分隔符就要用中文逗号。3. 替换空白字符什么时候用删除文本中的空格、制表符、换行符等空白字符。怎么用指令文本处理 原始文本 Hello World \n 操作替换字符串 查找内容 # 空格 替换内容 # 空字符串 保存到cleaned_text真实场景清洗商品标题删除标题前后的空格和中间的换行符。指令文本处理 原始文本product_title # 比如 iPhone 13\nPro Max 操作替换字符串 查找内容 # 空格 替换内容 # 空字符串 保存到title_no_spaces 指令文本处理 原始文本title_no_spaces 操作替换字符串 查找内容\n # 换行符 替换内容 # 空字符串 保存到cleaned_title我第一次做的时候只替换了空格没有替换换行符导致写入Excel时一个标题占了两行。后来把空格、换行符、制表符都替换了才解决这个问题。4. 去除换行什么时候用删除文本中的换行符\n和回车符\r。怎么用指令文本处理 原始文本第一行\n第二行 操作替换字符串 查找内容\n 替换内容 # 或者替换成逗号把两行合并成一行 保存到single_line真实场景采集到的商品描述有多行需要合并成一行再写入Excel。我的一般做法先把所有的\n和\r都替换成空格然后再把多个连续空格替换成一个空格这样文本看起来比较整齐。JSON解析HTTP请求返回JSON→转字典→取嵌套值→转文本场景用【发送HTTP请求】指令获取API数据返回的是JSON格式的字符串需要解析这个JSON取出里面的值。第1步发送HTTP请求获取JSON指令发送HTTP请求 请求URLhttps://api.example.com/products 请求方法GET 保存到responseresponse的结构是一个字典包含status_code、headers、body等键。body是API返回的实际数据通常是JSON格式的字符串。第2步把response的body转成JSON对象字典指令JSON转字典 JSON字符串response[body] # 或者用工猫取字典键值指令 保存到data_dict我踩过的坑response[body]是字符串类型的JSON不是字典。必须先用【JSON转字典】指令转换才能像字典一样取值。第3步取嵌套值如果JSON是简单的键值对指令获取字典键值 目标字典data_dict 键名product_name 保存到product_name如果JSON有嵌套字典里面还有字典假设data_dict是 { code: 200, data: { products: [ {name: 商品A, price: 150}, {name: 商品B, price: 200} ] } } 要取商品A的名称 指令获取字典键值 目标字典data_dict 键名data 保存到data_dict 指令获取字典键值 目标字典data_dict 键名products 保存到products_list 指令获取列表指定位置项 目标列表products_list 索引0 保存到product_a_dict 指令获取字典键值 目标字典product_a_dict 键名name 保存到product_name # 结果是商品A第4步转文本如果取出来的值是数字类型要转成字符串才能写入Excel或者拼接其他字符串指令数字转文本 数字product_price # 假设是150数字类型 保存到price_text # 现在是150字符串类型真实案例从网页监听指令获取到的数据是JSON格式的字符串需要解析这个JSON取出商品列表。1. 获取网页监听结果 - 指令获取网页监听结果 - URLhttps://api.example.com/goodsDetail - 保存到listen_result 2. 把监听结果转成字典 - 指令JSON转字典 - JSON字符串listen_result[body] - 保存到data_dict 3. 取出商品列表假设在data_dict[data][goodsDetailList]中 - 指令获取字典键值 - 目标字典data_dict - 键名data - 保存到data_dict - 指令获取字典键值 - 目标字典data_dict - 键名goodsDetailList - 保存到goods_list 4. 循环处理每一个商品 - 指令for每个循环 - 列表goods_list - 循环变量goods - 指令获取字典键值 - 目标字典goods - 键名goodsName - 保存到goods_name - 指令获取字典键值 - 目标字典goods - 键名price - 保存到goods_price - ...把goods_name和goods_price写入Excel...我第一次做的时候不知道【获取网页监听结果】指令返回的是字典直接把它当字符串来处理导致一直提取不到数据。后来用【打印日志】指令打印这个变量的类型才发现是字典需要用【获取字典键值】指令来取值。数据格式转换列表转字典/字典转列表/文本转数字1. 列表转字典场景从Excel中读取的数据是列表类型的需要转成字典方便按key取值。怎么转假设product_list是 [[商品A, 150, 100], [商品B, 200, 200]] 转成字典 { 商品A: {price: 150, sales: 100}, 商品B: {price: 200, sales: 200} } 用循环处理 指令新建字典 字典名product_dict 指令for每个循环 列表product_list 循环变量product 指令获取列表指定位置项 目标列表product 索引0 保存到name 指令获取列表指定位置项 目标列表product 索引1 保存到price 指令获取列表指定位置项 目标列表product 索引2 保存到sales 指令设置字典键值 目标字典product_dict 键名name 键值{price: price, sales: sales}2. 字典转列表场景处理完字典数据后需要转成列表才能写入Excel因为【写入Excel内容】指令的写入内容只接受列表类型。怎么转假设product_dict是 { 商品A: {price: 150, sales: 100}, 商品B: {price: 200, sales: 200} } 转成列表 [[商品A, 150, 100], [商品B, 200, 200]] 用循环处理 指令新建列表 列表名product_list 指令字典循环 目标字典product_dict 键名变量name 键值变量info 指令新建列表 列表名row_data 指令列表追加元素 目标列表row_data 元素name 指令获取字典键值 目标字典info 键名price 保存到price 指令列表追加元素 目标列表row_data 元素price 指令获取字典键值 目标字典info 键名sales 保存到sales 指令列表追加元素 目标列表row_data 元素sales 指令列表追加元素 目标列表product_list 元素row_data3. 文本转数字场景从Excel中读取到的数字是文本类型的比如150需要转成数字类型才能做计算。怎么转指令文本转数字 文本内容150 保存到price # 现在是150数字类型真实场景从网页上采集到的价格是¥150元先用正则提取提取出150文本类型再转成数字类型然后做计算比如乘以2。1. 正则提取提取价格数字 - 指令从文本中提取内容 - 原始文本¥150元 - 提取方式正则表达式提取 - 正则表达式\d - 保存到price_list 2. 取出价格数字现在是列表类型 - 指令获取列表指定位置项 - 目标列表price_list - 索引0 - 保存到price_text # 现在是150文本类型 3. 转成数字类型 - 指令文本转数字 - 文本内容price_text - 保存到price # 现在是150数字类型 4. 做计算比如乘以2 - 指令乘法运算 - 被乘数price - 乘数2 - 保存到double_price我踩过的坑文本中包含非数字字符比如¥150元直接转数字会报错。解决方法是先正则提取提取出数字部分再转成数字类型。数据去重列表去重两种方法方法1用影刀指令【列表去重】怎么用指令列表去重 目标列表product_list 保存到unique_product_list优点简单不需要写代码。缺点只能去重简单的列表比如[1, 2, 2, 3]如果列表中的元素是字典或者列表去重效果可能不符合预期。方法2用Python代码去重适用于列表中的元素是字典的情况假设product_list是 [{name: 商品A, price: 150}, {name: 商品B, price: 200}, {name: 商品A, price: 150}] # 重复了 去重后 [{name: 商品A, price: 150}, {name: 商品B, price: 200}] 用Python代码处理 def remove_duplicates(lst): seen set() result [] for item in lst: # 把字典转成元组才能放到set中 item_tuple tuple(item.items()) if item_tuple not in seen: seen.add(item_tuple) result.append(item) return result def main(args): product_list [{name: 商品A, price: 150}, {name: 商品B, price: 200}, {name: 商品A, price: 150}] unique_list remove_duplicates(product_list) print(unique_list)我的一般做法如果列表中的元素是简单类型数字、字符串就用【列表去重】指令。如果列表中的元素是字典或者列表就用Python代码去重。案例主线从网页采集的脏数据→清洗→格式化→写入Excel→入库的完整流程场景从电商网站上采集商品数据但是采集到的数据很脏商品标题有换行符和前后空格价格是¥150元这种格式需要提取出数字部分销量是1万这种文本需要转成数字有重复的商品同一个商品被采集了多次需要处理这些脏数据然后写入Excel最后存入MySQL数据库。完整流程1. 从网页上采集商品数据假设采集到列表product_list中 - product_list的格式 [[ iPhone 13\nPro Max , ¥150元, 1万], [华为Mate 40, ¥200元, 5000], [ iPhone 13\nPro Max , ¥150元, 1万]] # 重复 2. 数据清洗 - 指令新建列表 - 列表名cleaned_list - 指令for每个循环 - 列表product_list - 循环变量product - 指令获取列表指定位置项 - 目标列表product - 索引0 - 保存到raw_title a. 清洗标题删除换行符和前后空格 - 指令文本处理 - 原始文本raw_title - 操作替换字符串 - 查找内容\n - 替换内容 - 保存到title_no_newline - 指令文本处理 - 原始文本title_no_newline - 操作替换字符串 - 查找内容 - 替换内容 - 保存到cleaned_title - 指令获取列表指定位置项 - 目标列表product - 索引1 - 保存到raw_price b. 清洗价格提取数字部分 - 指令从文本中提取内容 - 原始文本raw_price - 提取方式正则表达式提取 - 正则表达式\d - 保存到price_list - 指令获取列表指定位置项 - 目标列表price_list - 索引0 - 保存到price_text - 指令文本转数字 - 文本内容price_text - 保存到cleaned_price - 指令获取列表指定位置项 - 目标列表product - 索引2 - 保存到raw_sales c. 清洗销量把1万转成10000 - 指令文本处理 - 原始文本raw_sales - 操作替换字符串 - 查找内容万 - 替换内容0000 - 保存到sales_text - 指令文本转数字 - 文本内容sales_text - 保存到cleaned_sales - 指令新建列表 - 列表名cleaned_product - 指令列表追加元素 - 目标列表cleaned_product - 元素cleaned_title - 指令列表追加元素 - 目标列表cleaned_product - 元素cleaned_price - 指令列表追加元素 - 目标列表cleaned_product - 元素cleaned_sales - 指令列表追加元素 - 目标列表cleaned_list - 元素cleaned_product 3. 数据去重 - 指令列表去重 - 目标列表cleaned_list - 保存到unique_list 4. 写入Excel - 指令启动Excel - 文件路径D:\商品数据.xlsx - 驱动方式office - 保存到excel_obj - 指令写入Excel内容 - Excel对象excel_obj - 写入方式写入行 - 起始列A - 行号1 - 写入内容[标题, 价格, 销量] - 指令for每个循环 - 列表unique_list - 循环变量product - 指令写入Excel内容 - Excel对象excel_obj - 写入方式追加数据 - 写入内容product 5. 存入MySQL数据库 - 指令连接数据库 - 连接字符串DSNMySQL;SERVER127.0.0.1;PORT3306;DATABASEecommerce;USERroot;PASSWORD123456;CHARSETutf8 - 保存到db_obj - 指令数据库批量插入数据 - 连接方式数据库连接对象 - 数据库连接对象db_obj - 数据库插入语句INSERT INTO products (name, price, sales) VALUES (?, ?, ?) - 待插入数据unique_list - 指令关闭数据库 - 数据库连接对象db_obj 6. 保存并关闭Excel - 指令保存Excel - Excel对象excel_obj - 指令关闭Excel - Excel对象excel_obj关键点数据清洗要按照提取→替换→转换的顺序进行数据去重要在写入Excel和入库之前做避免重复数据入库前要关闭Excel文件否则数据库操作会卡住12大模块覆盖检查认识影刀/安装【发送HTTP请求】指令、【JSON转字典】指令的使用元素定位四合一从网页采集数据本文的前提变量与数据类型保存清洗后的数据、保存字典和列表流程控制for循环清洗每一条数据、if判断数据格式网页自动化从网页采集数据本文的前提数据处理文本提取与清洗、JSON解析、数据格式转换、数据去重本文核心鼠标键盘图像自动化不需要数据处理是后台操作进阶技能用Python代码处理复杂的数据去重逻辑平台实战可以把清洗后的数据上传到home.linyan.cloud我搭建的一个数据展示页面系统联动数据处理是系统联动的一部分网页采集→数据处理→写入Excel→入库工程化与规范数据清洗的规范先提取→再替换→最后转换、数据去重的规范写入前一定要去重速查表/常见报错正则提取提取到空列表正则表达式写错JSON解析时报string indices must be integers把字符串当字典来取值文本转数字时报错文本中包含非数字字符列表去重效果不符合预期列表中的元素是字典或列表写入Excel时数据格式不对没有做数据格式转换速查表文本提取与清洗方法的选择方法使用场景优先级正则提取从文本中提取指定格式的内容最高最灵活字符串分割把一段文本按照指定分隔符分割成列表高适用于有固定分隔符的文本替换空白字符删除文本中的空格、制表符、换行符等高数据清洗必备去除换行删除文本中的换行符和回车符高数据清洗必备速查表数据格式转换方法的选择转换方式使用场景优先级列表转字典需要按key取值时高数据处理常用字典转列表需要写入Excel时写入内容只接受列表类型高写入Excel必备文本转数字需要做计算时最高最常遇到数字转文本需要写入Excel或者拼接字符串时最高最常遇到我总结的数据处理黄金法则先打印原始数据不要假设采集到的数据一定是干净的先用【打印日志】指令打印原始数据看看有什么问题正则提取前先测试正则表达式在regex101.com或者regexr.com测试正则表达式确保能正确匹配JSON解析前要转字典【发送HTTP请求】指令返回的数据是字符串类型的JSON必须先用【JSON转字典】指令转换文本转数字前要提取数字部分如果文本中包含非数字字符直接转数字会报错数据去重要在写入前进行避免重复数据写入Excel或者入库复杂的数据去重要用Python代码影刀指令【列表去重】只能处理简单类型的列表常见报错与解决方法报错1正则提取提取到空列表原因正则表达式写错了或者原始文本的格式和预期的不一样。解决方法用【打印日志】指令打印原始文本看看格式到底是什么在regex101.com或者regexr.com测试正则表达式确保能正确匹配报错2JSON解析时报string indices must be integers原因把字符串当字典来取值比如data[code]但是data是字符串类型不是字典类型。解决方法用【JSON转字典】指令把字符串转成字典再用【获取字典键值】指令取值报错3文本转数字时报错原因文本中包含非数字字符比如¥150元。解决方法先用正则提取提取出数字部分再转成数字类型报错4列表去重效果不符合预期原因列表中的元素是字典或者列表【列表去重】指令的去重效果可能不符合预期。解决方法用Python代码去重或者先把列表中的元素转成字符串类型再去重报错5写入Excel时数据格式不对原因没有做数据格式转换比如把数字类型的150写入Excel但是Excel中显示的是文本类型的150。解决方法写入Excel前用【数字转文本】指令把数字转成文本或者用【文本转数字】指令把文本转成数字看你需要什么格式最后的建议数据处理是影刀RPA中最容易出问题的环节因为采集到的数据往往很脏需要大量的清洗工作。我建议先在小范围测试不要一上来就清洗1万条数据先清洗10条把清洗逻辑调通多用【打印日志】指令记录原始数据是什么、清洗后的数据是什么方便排查问题正则表达式是神器一定要学会能解决90%的文本提取问题JSON解析要一步步来不要假设JSON的结构先打印出来看看再写取值逻辑如果你在实践过程中遇到问题可以访问home.linyan.cloud查看我整理的更多案例和解决方案。内容标签影刀RPA 数据处理 文本提取 正则提取 JSON解析 数据清洗 新手教程作者林焱
返回列表