影刀RPA实操指南:淘宝商品详情页评价翻页采集的完整方案
用影刀RPA采淘宝商品信息的人很多,但一到评价采集就卡住:评价列表翻不动、翻到第二页就报错、采出来的评价缺一半。评价数据对做电商分析和竞品监控的人来说是刚需,恰恰又是详情页里最难采的部分。这篇文章把评价翻页采集从头到尾拆开讲,包括确定总页数和不确定总页数两套翻页方案,都是我实操两年反复验证过的。
先说结论:评价翻页采集的核心难点只有一个——你不知道这个商品到底有多少页评价,所以翻页的退出条件不能写死,要用元素状态来判断。
环境与前置准备:登录态和插件缺一不可
淘宝详情页不登录也能看,但评价区域翻几页后大概率会要求登录。做评价采集前,先在影刀RPA里配置好浏览器插件,用影刀浏览器或Chrome手动登录淘宝,让登录态保持在浏览器里。
如果你用社区版,注意每天有30分钟的执行时长限制,一个商品几百页评价是采不完的,建议把任务拆小,或者分几天跑。创业版没有这个限制,长时间采集任务建议用它。
翻页的第一种情况:能确定总页数怎么采
评价区的分页条上通常有"共XXX条评价"或者页码总数这类文字元素。方案是先把这个文字元素捕获下来,用获取元素信息(web)指令拿到文本,比如"共120页",再用正则或文本处理指令把数字120提取出来。
拿到总页数后有两种走法:
- 批量数据抓取指令一步到位——这个指令支持设置抓取多页,把"下一页按钮"和"抓取页数"两个参数配好,翻页间隔参数建议设5秒以上,给页面留足加载时间,还支持勾选"模拟人工点击翻页按钮"
- For次数循环手动翻——用For次数循环指令循环总页数减一次,循环体内先用获取相似元素列表(web)采当前页评价,再点击下一页按钮,然后等待网页加载完成
我个人更推荐第二种,因为每一页之间可以插入随机等待,对风控更友好,而且中途出错好排查。
翻页的第二种情况:不知道总共多少页
绝大多数商品评价的总页数是不确定的,这是评价采集和列表采集最大的区别。影刀官方文档里给了标准解法,核心思路是盯住下一页按钮的状态。
按下F12看下一页按钮的源代码,会发现一个规律:按钮可以点击的时候,它的class属性里没有disabled;到了最后一页,按钮变成灰色不可点,class里就多了disabled。基于这个规律有两套写法:
# 方法①:用一个同时匹配两种状态的通用定位(class里的disabled用contains通配) //*[contains(@class,"next") and contains(text(),"下一页")] # 判断是否到最后一页:取这个元素的class属性, # 用文本包含判断里面有没有 disabled,有就说明到底了 # 方法②:只匹配"还能点"的下一页按钮(定位里锁死不含disabled的class) //*[contains(@class,"next") and not(contains(@class,"disabled"))]方法①的流程是:无限循环里每次先获取下一页按钮的class属性,用IF 条件判断里面是否包含disabled,包含就执行退出循环指令,不包含就采数据、点翻页、等待加载。
方法②的流程更简单:捕获元素的时候把class里那个有区别的部分勾选上,让这个定位只能找到"还能点"的按钮。无限循环里用IF 元素可见(web)判断这个元素在不在,不在了就说明是最后一页,退出循环。我在自己流程里用的是方法②,判断逻辑短,不容易写错。
评价列表的采集:相似元素循环的正确姿势
翻到某一页之后,评价内容、买家昵称、评价时间、追评信息都在结构相似的评价卡片里。用获取相似元素列表(web)指令一次性把本页所有评价文本取出来,元素操作选获取元素文本内容,输出的就是一个列表变量,勾选输出相似元素个数还能顺便拿到本页评价条数。
两个必须防的坑:
- 每页评价条数不一样——最后一页可能只有几条,用ForEach列表循环遍历返回的列表而不是按固定下标取值,就不会越界报错
- 追加写入而不是覆盖——每页采完用写入内容至Excel工作表指令追加写入,Excel对象打开一次全程复用,最后统一执行保存/另存Excel和关闭Excel指令,频繁开关文件既慢又容易报"发生意外"类错误
数据处理:评价文本的清洗与去重
评价文本里最常见的脏数据是表情符号、换行符和空评价。我的清洗子流程做三件事:用Python代码段去掉换行和首尾空格;把追评和主评拼成一个字段;按买家昵称加评价时间去重,防止翻页重采。
# 输入:变量 comment_text(从页面拿到的原始评价文本)# 输出:变量 clean_text(清洗后的评价文本)importre# 去掉换行符、制表符和首尾空格clean_text=re.sub(r'[\n\t\r]',' ',comment_text).strip()# 压缩连续空格为一个clean_text=re.sub(r' {2,}',' ',clean_text)如果评价量大,与其写Excel不如直接连数据库,连接数据库、数据库批量插入数据、关闭数据库三条指令一条龙,几千条评价插入也就是几秒的事。新手先把Excel链路跑通,再考虑升级。
异常处理:让翻页流程跑得稳
评价采集动辄几十分钟,不做异常处理等于裸奔。把翻页和采集的主体指令放进Try块,Catch块里用打印日志指令记录当前页码和报错信息,再用网页截图指令留下现场截图,Finally块里保证Excel保存关闭。这样哪怕半夜断了,早上起来也能从日志知道断在第几页。
翻页过程中如果弹登录弹窗或者滑块验证,我的做法是先等待元素(web)判断弹窗出现,出现就触发飞书群通知给自己发消息,然后正常结束流程。不要试图在流程里自动处理滑块,风险远大于收益。
工程化与速查:把方案沉淀成模板
这套方案建议拆成四个子流程:01_打开详情页、02_评价翻页循环、03_单页评价采集、04_数据清洗写入。子流程之间用流程参数传递网页对象和页码,主流程一目了然。做成模板后换个商品链接就能复用,这是工程化规范最直接的回报。
最后给一张评价采集专用的易错速查表:
| 现象 | 常见原因 | 处理办法 |
|---|---|---|
| 翻到第2页就报未找到元素 | 页面刷新导致旧元素失效 | 循环内重新获取相似元素列表 |
| 永远翻不到最后一页 | disabled判断写反或定位失效 | 校验class属性,打印出来人工看 |
| 评价条数和页面不符 | 追评被算进或懒加载没等 | 等待网页加载完成后再取列表 |
再补三条细节:
- 总页数提取失败——"共120页"里的数字要用正则提取,直接转数字会报类型错误
- 翻页间隔太短——批量数据抓取的翻页间隔参数低于3秒时,下一页内容没渲染完就开始抓,数据会缺
- 点击下一页无效——按钮被悬浮层遮挡时,取消勾选"模拟人工点击翻页按钮"换一种触发方式试试
延伸阅读
影刀官方文档里「网页数据获取时需要翻页或下拉」这一篇把翻页的所有情况讲得很全,本文的disabled判断就源自它,建议直接搜标题读原文。
完整流程源码我放在代码仓库 home.linyan.cloud,可以直接参考改造,含翻页循环和数据清洗两个子流程,换个商品链接就能用。
#影刀RPA #RPA自动化 #淘宝采集 #评价采集 #网页自动化
作者:林焱