「影刀RPA新手教程B站UP主自动化完全指南——视频数据与评论采集实战」作者林焱 | 影刀RPA实战系列前言B站是国内最大的中长视频平台UP主的视频数据、评论互动、粉丝增长都需要持续监控和分析。手动查看每个视频的数据、逐条采集评论效率极低且容易遗漏重要信息。本文用影刀RPA搭建B站UP主自动化方案覆盖视频数据采集、评论批量采集、粉丝数据分析三大场景所有XPath均经过实战验证。模块一B站登录与Cookie管理B站登录推荐使用Cookie注入方式避免每次运行都需要扫码。获取Cookie步骤浏览器手动登录https://www.bilibili.com按F12打开开发者工具Application → Cookies → www.bilibili.com复制以下关键Cookiebili_jct、DedeUserID、DedeUserID__ckMd5、sid、buvid3影刀中注入Cookie的指令配置拖入【设置Cookie】指令逐个注入域名www.bilibili.com Cookie名DedeUserID Cookie值123456789 过期时间1767225600重复操作注入所有关键Cookie。验证登录状态拖入【获取元素文本】指令XPath//div[classuser-face]//img/src若返回值包含用户头像URL说明登录成功真实报错与处理若报Cookie注入后依然未登录B站需要同时注入.bilibili.com和www.bilibili.com两个域名的Cookie用【循环】指令遍历两个域名分别注入。若报Cookie值含特殊字符导致格式错误Cookie值中的和/需要保留不要对Cookie值做任何URL编码处理。模块二UP主页面XPath定位打开UP主空间页面URL格式https://space.bilibili.com/{mid}其中mid是UP主的数字ID可从UP主主页URL中直接获取。获取UP主所有视频列表视频列表容器XPath真实可用//div[classlist-item]//a[classtitle]视频标题XPath//div[contains(class,video-card)]//a[classtitle]视频播放量XPath//div[contains(class,video-card)]//span[contains(class,play)]/text()批量采集视频数据配置拖入【批量获取元素属性】指令父元素XPath//div[contains(class,video-card)]子字段标题.//a[classtitle]/text()链接.//a[classtitle]/href播放量.//span[contains(class,play)]/text()弹幕数.//span[contains(class,danmu)]/text()发布时间.//span[contains(class,time)]/text()真实报错与处理若报视频列表元素未找到B站UP主空间有动态加载机制需要在打开页面后加【滚动到元素】指令XPath//div[classlist-item][last()]滚动到底部等待内容加载后再采集。模块三视频详情页数据采集进入视频详情页将采集到的相对链接拼接完整URL完整URL https: video_href注意B站的视频链接以//开头需要补全协议头。采集视频详情数据XPath视频标题//h1[classvideo-title]/text()视频简介//div[classvideo-desc]/text()拼多多店群自动化报活动上架点赞数//span[classlike]/text()投币数//span[classcoin]/text()收藏数//span[classcollect]/text()转发数//span[classshare]/text()评论数获取在播放器下方//span[classreply]/text()真实报错与处理若报点赞数等数据为动态加载获取为空B站数据通过WebSocket动态更新需要在页面加载完成后加【等待】5秒再用【获取元素文本】指令获取。若数据依然为空用【执行JavaScript】指令直接读取页面变量returnwindow.__INITIAL_STATE__.videoData.stat.like模块四评论采集XPath与翻页打开评论区B站评论区需要点击查看评论展开XPath//span[contains(class,reply)]//a评论内容XPath真实可用//div[classreply-item]//div[classcontent]/text()评论用户XPath//div[classreply-item]//a[classname]/text()评论点赞数XPath//div[classreply-item]//span[classlike]/text()评论时间XPath//div[classreply-item]//span[classtime]/text()翻页XPath//ul[classpagination]/li[classnext]/a翻页循环配置拖入【DoWhile循环】指令循环条件元素是否存在(//li[classnext]) True循环体内采集当前页评论 → 点击下一页 → 等待3秒真实报错与处理若报评论区需要点击加载更多才能显示B站评论默认只显示部分需要先点击查看全部评论按钮XPath//span[contains(text(),查看全部)]点击后再开始采集。模块五子评论回复采集B站评论有层级结构主评论下可能有子评论。展开子评论XPath//span[contains(class,expand) and contains(text(),回复)]子评论内容XPath//div[classsub-reply-item]//div[classcontent]/text()采集策略在主评论采集循环中对每个有子评论的主评论先点击展开回复再用【批量获取元素文本】采集子评论。真实报错与处理若报子评论展开后页面结构变化XPath失效B站展开子评论后DOM会重新渲染需要在点击展开后重新【等待元素出现】用新的XPath定位子评论内容。模块六粉丝数据与分析打开粉丝列表页面URL格式https://space.bilibili.com/{mid}/fans粉丝昵称XPath//div[classfans-item]//a[classname]/text()粉丝等级XPath//div[classfans-item]//i[contains(class,level)]/class粉丝关注数XPath//div[classfans-item]//span[classfollow]/text()采集粉丝数据注意事项B站粉丝列表需要登录才能查看完整信息未登录只显示前20个粉丝。粉丝数据分析逻辑将采集到的粉丝数据写入Excel后用【执行Python代码】指令做分析importpandasaspddefanalyze_fans(fans_list):# fans_list 从影刀变量传入dfpd.DataFrame(fans_list)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/3b9801a9c06e41019d87cf40e4faed34.png#pic_center)# 按等级分组统计level_statsdf[level].value_counts().to_dict()return{level_stats:level_stats}真实报错与处理若报粉丝列表页面提示权限不足需要确认当前登录账号是否有权限查看该UP主的粉丝部分UP主设置了粉丝列表可见性限制。模块七数据写入Excel与CSV方案选择视频数据量大推荐用CSV格式拖入【写入CSV文件】指令文件路径C:\Users\Aruanjian888\Desktop\bilibili_videos.csv编码UTF-8-BOMExcel打开中文不乱码写入模式追加CSV表头视频标题,视频链接,播放量,弹幕数,点赞数,投币数,收藏数,转发数,评论数,发布时间,采集时间数值清洗B站数据显示为1.2万格式需要转为纯数字再写入。拖入【执行Python代码】指令defparse_bilibili_number(text):textstr(text).strip()if万intext:returnint(float(text.replace(万,))*10000)if亿intext:returnint(float(text.replace(亿,))*100000000)returnint(text)iftext.isdigit()else0真实报错与处理若报CSV写入后Excel打开乱码将编码改为UTF-8-BOM或在写入时选择GBK编码仅限中文Windows系统。模块八定时任务与增量更新配置定时任务任务名称B站UP主数据监控执行频率每天早上9点执行一次Cron表达式0 9 * * *执行方式后台执行增量更新逻辑记录每次采集到的最后一个视频的bvidB站视频ID下次运行时只采集该bvid之后发布的新视频。从视频链接中提取bvidB站视频链接格式https://www.bilibili.com/video/BV1xx411c7mDBV1xx411c7mD即为bvid。用【文本处理】指令提取bvid正则表达式/video/(BV\w)真实报错与处理若报定时任务执行时浏览器无法启动后台执行模式下需要指定Chrome驱动路径在【启动浏览器】指令中勾选后台执行模式并确保本地已安装Chrome浏览器。模块九B站API对接B站有官方API接口可以直接获取数据。获取视频信息的APITEMU店群矩阵自动化运营核价报活动GET https://api.bilibili.com/x/web-interface/view?bvid{bvid}配置HTTP请求指令请求方式GETURLhttps://api.bilibili.com/x/web-interface/view?bvid{{bvid}}请求头User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36Referer: https://www.bilibili.com响应数据解析拖入【解析JSON】指令{code:0,data:{bvid:BV1xx411c7mD,title:视频标题,owner:{name:UP主名称},stat:{view:123456,danmaku:789,like:12345,![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e85f7b2e71d24a98989d95e53a165818.png#pic_center)coin:678,favorite:345,share:123,reply:456}}}真实报错与处理若报HTTP 412 Precondition FailedB站API有反爬检测需要在请求头中加入Cookie将已登录的bili_jct等Cookie传入请求头。若报API返回code-403访问权限不足需要申请B站开放平台API Key在请求参数中加入access_key。模块十评论自动回复在视频下发表评论需要先定位评论输入框。评论输入框XPath//textarea[classtextarea and placeholder]发表评论按钮XPath//button[classcomment-submit]操作步骤【填写输入框】→ 输入评论内容【点击元素】→ 点击发表评论按钮【等待】3秒 → 等待评论发送成功评论内容模板从Excel读取在Excel中准备多个评论模板用【随机选取列表项】指令随机选用避免重复内容被系统判定为垃圾评论。真实报错与处理若报评论发送失败操作频率过高B站限制同一账号每分钟最多发表5条评论需要在每次发表后加【等待】15秒。若报评论内容含敏感词被拦截需要在发表前用【条件判断】指令过滤敏感词或抓取B站官方敏感词库进行预过滤。模块十一异常处理与元素等待B站页面加载慢需要完善的等待机制。全局等待策略打开网页后【等待】5秒点击元素后【等待】3秒翻页后【等待元素出现】等待新内容加载动态数据【执行JavaScript】读取window.__INITIAL_STATE__元素等待配置拖入【等待元素出现】指令XPath//div[contains(class,video-card)]超时时间30000毫秒未出现时的处理截图 发送通知 终止流程真实报错与处理若报元素存在但无法获取文本B站部分数据通过Canvas渲染无法用XPath直接获取需要用【截图OCR】指令识别文字或用【执行JavaScript】从页面JS变量中读取数据。模块十二完整流程与数据报告完整流程串联启动浏览器注入B站Cookie验证登录状态从Excel读取UP主mid列表对每个UP主a. 打开空间页面采集视频列表b. 对每个视频打开详情页采集播放/点赞/评论数据c. 打开评论区采集评论含子评论自动翻页d. 打开粉丝列表采集粉丝数据将所有数据写入CSV文件用Python做数据分析粉丝等级分布、视频数据趋势生成数据报告写入新Sheet发送钉钉通知采集完成情况关闭浏览器任务完成数据报告生成用【执行Python代码】指令生成简易报告defgenerate_report(video_data):total_viewssum(v[views]forvinvideo_data)total_likessum(v[likes]forvinvideo_data)avg_viewstotal_views/len(video_data)ifvideo_dataelse0return{total_views:total_views,total_likes:total_likes,avg_views:round(avg_views,2)}真实报错与处理若流程运行时间过长超过1小时建议将UP主列表分批处理每处理完5个UP主保存一次数据避免中途异常导致所有数据丢失。常见报错汇总报错信息原因解决方案Cookie注入后未登录需要注入两个域名同时注入www和根域名Cookie视频列表未找到动态加载未完成滚动到底部等待加载数据获取为空WebSocket动态更新等待5秒或用JS读取变量评论区未展开需点击查看全部先点击展开按钮再采集API返回412错误反爬检测加入Cookie到请求头评论发送频率过高B站频率限制每次发表后等待15秒CSV乱码编码问题使用UTF-8-BOM编码作者寄语B站自动化的核心难点是动态数据获取XPath能定位到元素但数据可能还未渲染完成。熟练掌握【执行JavaScript】指令直接从页面JS变量读取数据是突破B站动态渲染的关键。建议先用手动方式熟悉B站页面结构再用影刀逐步还原每一步操作。内容标签影刀RPA B站自动化 XPath定位 视频数据采集 评论采集 粉丝分析 浏览器自动化 CSV数据处理 定时任务 API对接 异常处理作者林焱