最近刚学Python的小侄子找我“叔我想分析一下我喜欢的UP主的视频数据看看哪期播放量最高投币率怎么样但手动记太麻烦了”我笑着说“这事儿交给Python啊用B站的第三方库1小时写个脚本一键获取所有视频的播放量、点赞、投币、收藏还能自动生成Excel做分析”今天就把这个超简单、新手零门槛的实战教程分享给你——不用自己处理复杂的API加密不用登录用现成的bilibili-api-python库跟着步骤走你也能做出自己的“UP主运营分析工具”一、准备工作先把家伙事儿备齐10分钟搞定1. 安装Python和VS Code和之前的教程完全一样如果还没装翻回去看我前几篇的“准备工作”部分保姆级步骤零基础也能10分钟搞定。2. 安装必要的Python库用国内镜像源下载速度快10倍打开VS Code的“终端”快捷键Ctrl ~依次输入下面的命令每输完一行按回车# 1. 安装bilibili-api-pythonB站官方API的第三方封装库超简单pipinstallbilibili-api-python -i https://pypi.tuna.tsinghua.edu.cn/simple# 2. 安装pandas和openpyxl整理数据生成Excel表格pipinstallpandas openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple# 3. 安装matplotlib可选做简单的数据可视化pipinstallmatplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple如果终端显示“Successfully installed xxx”就说明安装成功了二、选一个你喜欢的UP主获取UP主的mid要爬取UP主的视频数据首先需要获取UP主的midB站用户的唯一ID获取方法超简单打开B站进入你喜欢的UP主的主页复制浏览器地址栏的URL格式通常是https://space.bilibili.com/12345678URL里的数字12345678就是这个UP主的mid今天我就用老番茄B站知名UP主mid12345678做演示如果这个mid失效了你可以自己找一个喜欢的UP主替换mid就行。三、写代码完整可运行附详细注释一键获取分析在VS Code里新建一个Python文件命名为bilibili_up_spider.py把下面的代码复制进去我加了超级详细的注释零基础也能看懂# 1. 导入我们需要的库frombilibili_apiimportuser,syncimportpandasaspdimporttimefromdatetimeimportdatetimedefget_up_videos(mid,max_videos50): 爬取指定B站UP主的视频数据整理成Excel做简单分析 :param mid: UP主的唯一ID从UP主主页URL里复制 :param max_videos: 最多爬取的视频数量建议50-100条不要爬太多 try:# 2. 初始化UP主对象uuser.User(mid)# 3. 获取UP主的基本信息昵称、粉丝数等print(正在获取UP主基本信息...)up_infosync(u.get_user_info())up_nameup_info[name]fans_countup_info[fans]print(f✅ UP主{up_name}粉丝数{fans_count})# 4. 获取UP主的视频列表print(f正在爬取视频数据最多爬取{max_videos}条...)video_list[]page1# 从第一页开始whilelen(video_list)max_videos:print(f正在爬取第{page}页视频...)# 获取当前页的视频数据# 参数说明ps30每页30条pnpage当前页码orderpubdate按发布时间排序ressync(u.get_videos(ps30,pnpage,orderpubdate))videosres[list][vlist]# 如果没有视频了停止爬取ifnotvideos:print(⚠️ 没有更多视频了停止爬取)break# 5. 遍历当前页的每一条视频提取数据forvideoinvideos:iflen(video_list)max_videos:break# 提取视频数据bvidvideo[bvid]# 视频BV号titlevideo[title]# 视频标题play_countvideo[play]# 播放量danmaku_countvideo[video_review]# 弹幕数like_countvideo[like]iflikeinvideoelse0# 点赞数部分旧视频可能没有coin_countvideo[coin]ifcoininvideoelse0# 投币数favorite_countvideo[favorites]iffavoritesinvideoelse0# 收藏数durationvideo[length]# 视频时长publish_timedatetime.fromtimestamp(video[created])# 发布时间时间戳转日期# 计算投币率投币数/播放量衡量视频质量coin_rate(coin_count/play_count*100)ifplay_count0else0# 把提取到的数据添加到列表里video_list.append({BV号:bvid,视频标题:title,播放量:play_count,弹幕数:danmaku_count,点赞数:like_count,投币数:coin_count,收藏数:favorite_count,投币率(%):round(coin_rate,2),视频时长:duration,发布时间:publish_time.strftime(%Y-%m-%d %H:%M:%S)})# 6. 每爬完一页暂停2-3秒避开反爬别爬太快sleep_time2(page%2)print(f✅ 第{page}页爬取成功已获取{len(video_list)}条视频暂停{sleep_time}秒...)time.sleep(sleep_time)page1# 7. 用pandas把列表转换成DataFramedfpd.DataFrame(video_list)# 8. 做简单的运营数据分析print(\n UP主运营数据分析 )ifnotdf.empty:# 播放量最高的视频top_play_videodf.loc[df[播放量].idxmax()]print(f 总视频数{len(df)})print(f 平均播放量{round(df[播放量].mean(),0)})print(f 平均投币率{round(df[投币率(%)].mean(),2)}%)print(f 播放量最高的视频《{top_play_video[视频标题]}》播放量{top_play_video[播放量]}发布时间{top_play_video[发布时间]})# 9. 生成Excel文件名current_timedatetime.now().strftime(%Y%m%d_%H%M%S)excel_filenamefB站UP主_{up_name}_视频数据_{current_time}.xlsx# 10. 保存到Excel文件df.to_excel(excel_filename,indexFalse,engineopenpyxl)print(f\n 全部爬取成功)print(f✅ 视频数据已保存到{excel_filename})exceptExceptionase:# 捕获所有异常打印错误信息print(f\n❌ 爬取失败错误信息{e})if__name____main__:# 11. 在这里修改你要爬的UP主的mid和参数# 注意mid从UP主主页URL里复制比如https://space.bilibili.com/12345678mid就是12345678up_mid12345678# 替换成你要爬的真实UP主的midmax_videos_count50# 最多爬50条视频建议50-100条不要爬太多# 12. 调用爬取函数get_up_videos(up_mid,max_videos_count)四、运行代码一键搞定在VS Code的终端里输入下面的命令按回车python bilibili_up_spider.py如果终端显示“ 全部爬取成功”就说明成功了打开VS Code左侧的“资源管理器”第一个图标你会看到生成的Excel文件双击打开就能看到UP主的所有视频数据包括播放量、点赞、投币、投币率、发布时间等还有简单的运营数据分析五、新手常见问题解答我帮你踩过的坑1. 终端提示“‘python’ 不是内部或外部命令”原因安装Python时没有勾选“Add Python 3.x.x to PATH”。解决方法翻回去看我第一篇爬天气预报的教程的“新手常见问题解答”部分。2. 终端提示“ModuleNotFoundError: No module named ‘bilibili_api’”原因没有安装bilibili-api-python库或者安装库时用了错误的镜像源。解决方法重新用清华镜像源安装bilibili-api-python检查VS Code的Python解释器是否正确。3. 终端提示“RequestException”或“412 Precondition Failed”原因爬太快被B站暂时屏蔽了或者网络不好。解决方法把代码里的max_videos_count改成更小的数比如20-30条把代码里的sleep_time改成更大的数比如5-10秒检查网络连接过一会儿再试。4. 部分视频的点赞数、投币数为0原因bilibili-api-python获取旧视频的点赞、投币数可能有限制或者UP主隐藏了部分数据。解决方法这是正常现象不影响整体分析可以忽略。5. 终端提示“User not found”原因UP主的mid不对或者UP主账号被封禁/注销了。解决方法检查mid是否正确从UP主主页URL里复制确认UP主账号正常。六、进阶玩法有兴趣可以试试爬取更多视频数据把max_videos_count改成更大的数但不要爬太多避免给B站服务器造成压力。数据可视化用matplotlib库画一个播放量趋势图、投币率分布图看看UP主的视频数据变化。筛选高质量视频筛选出投币率5%的视频看看这些视频的标题、时长、发布时间有什么规律。对比多个UP主爬取多个同类型UP主的视频数据对比他们的平均播放量、投币率分析哪个UP主的运营更好。结尾怎么样是不是超简单用现成的bilibili-api-python库新手也能1小时搞定这个脚本不仅能帮你分析喜欢的UP主的视频数据你还可以用它分析自己的B站账号如果有的话看看哪期视频最受欢迎优化自己的内容创作⚠️最后再次提醒本文仅供学习交流使用不要用于商业用途不要爬取大量数据严格遵守B站的用户协议