影刀RPA 网页评论采集:展开与分页加载

发布时间:2026/7/23 0:59:58

影刀RPA 网页评论采集:展开与分页加载
影刀RPA 网页评论采集展开与分页加载作者林焱什么情况用什么采集商品评论、文章评论、视频评论——评论数据通常不在页面源码里而是通过AJAX动态加载还有展开更多按钮和分页。在影刀RPA里需要处理评论展开、滚动加载、API接口抓取等多种方式。适用场景电商商品评论分析、新闻评论舆情监控、视频评论采集、社区帖子回复采集。怎么做方式一通过API接口采集推荐拼多多店群自动化上架方案评论通常通过AJAX加载直接请求API最高效importrequestsimportpandasaspdimporttimedefscrape_comments_api(product_id,max_pages50):通过API采集评论all_comments[]headers{User-Agent:Mozilla/5.0...,Referer:fhttps://example.com/product/{product_id}}forpageinrange(1,max_pages1):# API URL需要通过F12 → Network → XHR找到api_urlfhttps://example.com/api/commentsparams{product_id:product_id,page:page,size:20,sort:newest# newest/hot}responserequests.get(api_url,paramsparams,headersheaders,timeout10)ifresponse.status_code!200:print(f第{page}页请求失败:{response.status_code})breakdataresponse.json()commentsdata.get(data,{}).get(list,[])ifnotcomments:print(f第{page}页无评论停止)breakforcincomments:all_comments.append({用户:c.get(username,),评分:c.get(rating,),内容:c.get(content,),时间:c.get(create_time,),点赞数:c.get(like_count,0),回复数:c.get(reply_count,0),})print(f第{page}页:{len(comments)}条, 累计{len(all_comments)}条)time.sleep(1)returnall_comments# 使用commentsscrape_comments_api(123456,max_pages20)pd.DataFrame(comments).to_excel(rC:\Data\comments.xlsx,indexFalse)方式二影刀浏览器自动化当API接口有加密参数无法直接调用时用浏览器操作【打开网页】→ 商品详情页 【等待元素出现】→ .comment-section 【点击元素】→ 查看全部评论按钮如果有 【循环】 【提取相似元素数据】→ 当前页评论 - 用户名.comment-item .username - 内容.comment-item .content - 时间.comment-item .time - 评分.comment-item .rating 【判断元素是否存在】→ 下一页或加载更多 存在 → 【点击元素】→ 等待新评论加载 不存在 → 退出循环 【等待】2秒 【结束循环】方式三滚动加载评论defscrape_comments_scroll(max_scrolls30):滚动加载评论all_comments[]forscroll_numinrange(max_scrolls):# 1. 提取当前可见的评论# 影刀中【提取相似元素数据】→ .comment-itemcurrent_commentsextract_comments()# 2. 去重合并new_count0forcincurrent_comments:c_idc.get(id)orc.get(内容)[:20]# 用ID或内容前20字做唯一标识ifc_idnotin[existing.get(id)forexistinginall_comments]:all_comments.append(c)new_count1print(f第{scroll_num1}次滚动: 新增{new_count}条, 共{len(all_comments)}条)ifnew_count0:# 连续3次无新评论则停止no_new_countgetattr(scrape_comments_scroll,_no_new,0)1ifno_new_count3:breakscrape_comments_scroll._no_newno_new_countelse:scrape_comments_scroll._no_new0# 3. 滚动到评论区域底部# 影刀中【执行JavaScript代码】js var commentArea document.querySelector(.comment-section); if (commentArea) { commentArea.scrollTop commentArea.scrollHeight; } window.scrollTo(0, document.body.scrollHeight); # 【执行JavaScript代码】→ js# 4. 等待新评论加载time.sleep(2)returnall_commentsdefextract_comments():提取页面评论影刀中用可视化指令# 这里模拟返回return[]评论展开处理有些评论被截断需要点击展开才能看到完整内容defexpand_and_scrape_comments():展开所有评论后采集# 1. 先点击所有展开按钮# 影刀中# 【执行JavaScript代码】js_expand_all // 找到所有展开按钮并点击 var expandBtns document.querySelectorAll(.comment-expand, .show-more); expandBtns.forEach(function(btn) { btn.click(); }); return expandBtns.length; # 影刀中执行这段JS返回展开的评论数# 2. 等待展开time.sleep(1)# 3. 提取完整评论# 【提取相似元素数据】→ .comment-item .full-content# 4. 处理查看更多回复js_expand_replies var replyBtns document.querySelectorAll(.view-replies); replyBtns.forEach(function(btn) { if (btn.textContent.includes(查看)) { btn.click(); } }); time.sleep(1)# 5. 提取含回复的完整评论pass评论数据分析defanalyze_comments(comments_df):评论数据分析importpandasaspd analysis{}# 1. 基础统计analysis[总评论数]len(comments_df)analysis[平均评分]comments_df[评分].mean()# 2. 评分分布rating_distcomments_df[评分].value_counts().sort_index()analysis[评分分布]rating_dist.to_dict()# 3. 评论时间趋势comments_df[日期]pd.to_datetime(comments_df[时间],errorscoerce)daily_countcomments_df.groupby(comments_df[日期].dt.date).size()analysis[日均评论]daily_count.mean()![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b9ae85166dbf40d68627e37852de3ef1.png#pic_center)# 4. 关键词统计fromcollectionsimportCounterimportjieba all_text .join(comments_df[内容].astype(str))wordsjieba.cut(all_text)word_countCounter(wforwinwordsiflen(w)1)analysis[高频词]word_count.most_common(20)# 5. 好评/差评比例goodlen(comments_df[comments_df[评分]4])badlen(comments_df[comments_df[评分]2])analysis[好评率]f{good/len(comments_df)*100:.1f}%analysis[差评率]f{bad/len(comments_df)*100:.1f}%returnanalysis有什么坑TEMU店群如何管理运营坑1API参数加密# 问题评论API的参数有sign签名无法直接构造请求# 如params {sign: a1b2c3..., timestamp: 1234567890}# 解决1用影刀浏览器自动化不直接调API# 【打开网页】→ 【滚动】→ 【提取数据】# 解决2从页面中提取sign# 有些网站在页面HTML中嵌入了token# 先【获取网页源代码】→ 用正则提取token → 再调API# 解决3用浏览器拦截AJAX响应# 影刀中用【执行JavaScript代码】拦截XHR![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/bdbea58e815a49e6b25b067d61b90b4d.png#pic_center)js_intercept var originalOpen XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open function(method, url) { if (url.includes(comment)) { window._comment_api_url url; } return originalOpen.apply(this, arguments); }; 坑2评论内容有HTML标签# 问题评论内容包含br、span等标签# 解决用BeautifulSoup清理frombs4importBeautifulSoupdefclean_comment_text(text):清理评论文本ifnottext:return# 去HTML标签soupBeautifulSoup(text,html.parser)textsoup.get_text(separator ,stripTrue)# 去多余空白text .join(text.split())returntext comments_df[内容]comments_df[内容].apply(clean_comment_text)坑3评论按热度排序时翻页数据不连续# 问题按热度排序翻页时由于点赞数实时变化评论可能跳过或重复# 解决用时间排序采集然后本地按热度排序# 采集时用时间排序params[sort]newest# 而不是hot![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/75577a69fc9d4a3989d81dc166f4548e.png#pic_center)# 本地排序comments_dfcomments_df.sort_values(点赞数,ascendingFalse)坑4评论太多导致内存溢出# 问题一个商品有几万条评论全部加载到内存# 解决分批保存batch_size500forpageinrange(1,max_pages1):commentsscrape_one_page(page)all_comments.extend(comments)# 每500条保存一次iflen(all_comments)batch_size:dfpd.DataFrame(all_comments)# 追加写入Excelwithpd.ExcelWriter(output_file,modea,engineopenpyxl)aswriter:df.to_excel(writer,startrowwriter.sheets[Sheet1].max_row,headerFalse)all_comments[]# 清空坑5评论中有追评/回复# 问题一条评论可能有追评和商家回复结构嵌套# 解决分两层采集# 第一层主评论main_commentssoup.select(.comment-item:not(.reply))forcommentinmain_comments:# 主评论内容main_textsafe_text(comment.select_one(.content))# 追评同一评论块内的追加内容append_textsafe_text(comment.select_one(.append-content))![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/9046e333631142ca9788ddadc5207985.png#pic_center)# 商家回复replycomment.select_one(.merchant-reply)reply_textsafe_text(reply.select_one(.reply-content))ifreplyelsedata{主评论:main_text,追评:append_text,商家回复:reply_text}

相关新闻

2026适合新手的AI官网制作软件有哪些?小白们看过来啦!

2026适合新手的AI官网制作软件有哪些?小白们看过来啦!

2026/7/23 0:59:58

2026适合新手的AI官网制作软件有哪些?小白们看过来啦!据《2026年中国企业数字化建站行业白皮书》显示,超42%的中小微企业在使用低门槛工具搭建官网后,遭遇了“百度/谷歌长期零收录”或“后期改版被平台卡死”的窘境。某广州初创贸…

看过来啦!2026AI建站收费模式有哪些呢?

看过来啦!2026AI建站收费模式有哪些呢?

2026/7/23 0:59:58

2026AI建站收费模式都有哪些?这里一文讲透。各位正在琢磨给自己生意安个“线上门面”的老板们可以看过来了,当然,如果已经被各种建站报价单搞得头昏脑涨、不知道选免费还是选几千块年费的老板也可以看过来,今天小编来聊聊AI建站收…

影刀RPA 网页滚动控制:滚动到底、滚动到元素、懒加载触发

影刀RPA 网页滚动控制:滚动到底、滚动到元素、懒加载触发

2026/7/23 0:59:58

影刀RPA 网页滚动控制:滚动到底、滚动到元素、懒加载触发 作者:林焱 什么情况用 你用影刀RPA采集一个网页,发现只拿到了前几条数据,明明页面上有几十条?你的网页有个"加载更多"按钮,但需要滚动到…

NE2-S1W以太网模组:串口转TCP/UDP透传的工业物联网解决方案

NE2-S1W以太网模组:串口转TCP/UDP透传的工业物联网解决方案

2026/7/23 2:00:00

如果你正在为工业设备联网、PLC远程监控或者串口设备上云而头疼,那么亿佰特的NE2-S1W以太网模组可能正是你需要的解决方案。这个只有1719mm大小的贴片模组,却能在串口和以太网之间搭建起稳定可靠的数据桥梁,让传统的串口设备瞬间具备网络通信…

识别关键人才:企业真正的竞争,是“谁”在关键岗位上

识别关键人才:企业真正的竞争,是“谁”在关键岗位上

2026/7/23 2:00:00

上一节课我们拆解了关键岗位,清楚了企业80%的核心结果,来自20%的核心岗位,解决了“企业要守住哪些位置”的问题。 但同样的岗位,为什么结果天差地别? 同样是店长岗位,有人单店年入千万,有人常…

Linux 效率神器:fc 命令详解 —— 快速编辑  重执行历史命令

Linux 效率神器:fc 命令详解 —— 快速编辑 重执行历史命令

2026/7/23 2:00:00

一、命令简介fc(Fix Command)是 Bash 等 shell 的内建命令,主要用于显示、编辑和重新执行历史命令。它允许用户快速调用、修改并再次运行之前执行过的命令,是提升命令行工作效率的重要工具。二、语法格式fc 命令主要有两种语法格式…

拼音打字提速:盲打训练与输入法优化技巧

拼音打字提速:盲打训练与输入法优化技巧

2026/7/23 2:00:00

1. 拼音打字提速的核心逻辑拼音输入法作为中文输入的主流方式,其效率瓶颈往往不在于输入法本身,而在于使用者的操作习惯和认知模式。我见过太多人把打字慢归咎于"输入法不好用",实际上90%的打字效率问题都出在以下三个层面&#xf…

Unity后处理堆栈Volume系统:从原理到实战,掌握效果混合与动态控制

Unity后处理堆栈Volume系统:从原理到实战,掌握效果混合与动态控制

2026/7/23 2:00:00

1. 项目概述:为什么Unity后处理值得你投入时间如果你在Unity里鼓捣过画面效果,大概率接触过“后处理”这个词。从简单的颜色校正、Bloom泛光,到复杂的屏幕空间反射、环境光遮蔽,这些让游戏画面从“能看”跃升到“好看”的关键技术…

JSON文件操作全解析:从基础语法到性能优化

JSON文件操作全解析:从基础语法到性能优化

2026/7/23 1:50:00

1. JSON文件基础认知与核心价值JSON(JavaScript Object Notation)作为当前最流行的轻量级数据交换格式,其设计哲学与XML形成鲜明对比。我至今记得2012年第一次接触JSON时那种惊艳感——相比当时主流的XML配置,一个简单的用户数据用…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/21 5:45:57

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/21 9:56:14

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/23 1:54:13

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…

企业级AI搜索落地选型实战手册(含LLM+RAG+Hybrid架构对比矩阵与ROI测算模板)

企业级AI搜索落地选型实战手册(含LLM+RAG+Hybrid架构对比矩阵与ROI测算模板)

2026/7/23 0:09:56

更多请点击: https://kaifayun.com 第一章:企业级AI搜索落地选型实战手册(含LLMRAGHybrid架构对比矩阵与ROI测算模板) 企业级AI搜索系统落地成败,核心在于技术选型与业务价值的精准对齐。盲目堆砌大模型能力或过度依赖…

TM4C129LNCZAD外设实战:LCD、比较器与PWM寄存器配置详解

TM4C129LNCZAD外设实战:LCD、比较器与PWM寄存器配置详解

2026/7/23 0:09:56

1. 项目概述与核心价值在嵌入式系统开发,尤其是基于ARM Cortex-M内核的微控制器项目中,深入理解并熟练配置芯片的片上外设,是从“点亮LED”迈向“实现复杂系统功能”的关键一步。Tiva™ TM4C129LNCZAD作为TI公司Cortex-M4F家族中的高性能成员…

AtomCode `fmt_dur` 争议溯源:两个函数、三段演进、四个事实

AtomCode `fmt_dur` 争议溯源:两个函数、三段演进、四个事实

2026/7/23 0:09:56

一、快速声明与争议背景本文是对 AtomCode 终端 spinner 时长显示 fmt_dur 相关说法的事实性核验。2026 年 7 月 CSDN 上出现两篇互相矛盾的博文,近期又有 AI 在对话中输出格式描述 XhYm / YmZs / Zs。本文基于 AtomCode 仓库 main4677ddfa 及全分支 Git 历史给出可…