如何用两步把 TikTok 全部评论(含回复)导成 Excel?TikTokCommentScraper 上手指南

📅 发布时间:2026/8/18 18:18:41
如何用两步把 TikTok 全部评论(含回复)导成 Excel?TikTokCommentScraper 上手指南
如何用两步把 TikTok 全部评论含回复导成 ExcelTikTokCommentScraper 上手指南【免费下载链接】TikTokCommentScraper项目地址: https://gitcode.com/gh_mirrors/ti/TikTokCommentScraperTikTokCommentScraper 是一个把 TikTok 视频评论区完整导出为 Excel 的开源小工具一段 JavaScript 在浏览器控制台里替你滚动页面、展开回复一段 Python 脚本把剪贴板里的 CSV 转成 xlsx。它不抓包、不伪装、不需要装插件几分钟就能跑通。这篇文章从一次对不上账的统计事故说起讲清它的取数思路、你能拿到的字段、完整实操步骤以及那些 README 没写明的边界。一次对不上账的评论统计750 与 740 之间消失的评论去哪了去年帮朋友统计一条抽奖视频的评论数。我手动往下滚了快二十分钟从 TikTok 界面看到 750 条可等我真正把所有楼层滚到底数来数去只有 740 条左右。当时我以为自己漏滚了某一段又来回翻了两遍结论不变。后来用 TikTokCommentScraper 把评论区完整读了一遍导出的文件里清清楚楚写着两行对照TikTok 宣称的总数和实际渲染出来的总数差值就摆在那里。这件事给我两个启发。第一显示 750 条往往只是平台的一个概数真实的渲染过程会漏掉零星几条这不是脚本的 bug是平台的常态。第二靠眼睛和手指去核对几百上千条评论本身就是个伪命题——你需要的不是更快的滚动而是把加载、展开、记录这件事交给程序。我试过的三种笨办法为何都不行在遇到这个工具之前我先后走过三条弯路抓接口TikTok 的评论接口带着签名和时间戳校验直接构造请求要么拿不到数据要么很快被风控。对只想统计一次抽奖的我来说逆向成本高得离谱。无头浏览器框架写一套 Playwright 脚本确实能自动滚动但选择器要自己摸、页面改版要跟着修光是把环境跑起来就花了一个晚上。录屏加 OCR识别准确率不稳定中文昵称和 emoji 混在一起时更是重灾区导出的数据还要人工校对等于没导。TikTokCommentScraper 的价值恰恰在于它绕开了这三条路只做了一件最简单的事让你自己打开页面剩下的交给浏览器。换个角度让浏览器自己把评论区读完不伪装、不抓包控制台取数的安全边界这个工具的思路非常朴素你已经在浏览器里登录了 TikTok也看得到评论区那么让一段 JavaScript 替你把滚动页面、点击展开、读取文本这些动作重复执行完最后把结果整理成 CSV 放进剪贴板。全程零网络请求不碰接口不伪造请求头也就谈不上反爬——它只是在模拟一个真实用户的浏览行为。整个项目只有两个依赖Python 侧的pyperclip剪贴板和openpyxlExcel 写入全部写在requirements.txt里。Windows 用户甚至不用装 Python仓库里内置了一个精简到约 7MB 的python38/虚拟环境。两级评论的完整捕获滚动加载 自动点开 View repliesTikTok 评论区是两级结构一级评论下挂着若干条回复。脚本分两轮处理第一轮通过滚动触发评论懒加载把一级评论全部逼出来第二轮专门去找标着 View replies 的按钮逐个点击把二级回复也展开。注意它的选择器里特意只匹配 View 而不是 Hide避免把已经展开的收起按钮再点一遍。为什么选 XPath 而不是 querySelector源码里用 XPath 定位元素注释写得直白——more reliable than querySelector。TikTok 的 class 名是动态生成的但往往带着稳定的片段比如评论容器DivCommentListContainer、回复容器DivReplyContainer。XPath 的优势在于能精确表达某个 class 片段 父子/兄弟关系比如帖子描述就用preceding-sibling来定位这些用 CSS 选择器写起来反而别扭。脚本内部的三幕剧滚动、展开、拼装src/ScrapeTikTokComments.js的核心逻辑可以拆成三幕理解了这三幕你也就知道它会在什么时候停下来。第一幕滚动到末尾直到连续 15 次没有新评论脚本定位到评论区最后一条评论调用scrollIntoView(false)等 300 毫秒再数一遍评论总数。如果数量变多了就把无新内容计数重置如果连续 15 次滚动都没等到新评论就认定加载结束。作者还处理了一个真实坑直接访问链接时页面顶部会先滚出推荐视频列表导致评论列表不动所以它会额外把评论容器本身也scrollIntoView一次确保滚动发生在正确的位置。第二幕点开所有 View replies直到连续 5 轮找不到更多这一轮遍历所有 View replies 按钮并点击每轮间隔 500 毫秒。只要这一轮还能找到按钮缓冲计数就重置连续 5 轮一个按钮都找不到说明回复全部展开了。评论区超过两级的深层嵌套它并不处理但对绝大多数视频来说两级已经够用。第三幕字段提取、CSV 转义、一次复制进剪贴板所有评论渲染完成后脚本逐条读取昵称、账号、正文、时间、点赞数、头像链接等字段用quoteString对内容做 CSV 转义把正文里的替换成再把帖子元信息和每行评论拼接成一个大字符串通过with({ copy })注入的剪贴板 API 一次性复制出去。控制台里出现CSV copied to clipboard!就说明浏览器这边的活儿干完了。导出的 Excel 里到底有什么每条评论的 11 个字段Python 脚本src/ScrapeTikTokComments.py把剪贴板里的 CSV 写入临时文件、清洗掉 Windows 的\r回车符再用openpyxl逐行转成 xlsx。每一行评论包含这些列字段含义Comment Number (ID)评论行号Nickname用户昵称User 用户账号User URL用户主页链接Comment Text评论正文Time评论时间统一为日-月-年格式Likes点赞数Profile Picture URL头像图片链接Is 2nd Level Comment是否为二级回复User Replied To该回复指向的用户昵称Number of Replies这条一级评论下有几条回复帖子头部的那一摞元信息表格之前文件前几行还记录了整条视频的上下文导出时间、帖子链接、作者昵称与主页、发布时间、点赞数、分享数、描述以及两行最关键的对照——实际渲染出的一级/二级评论数和 TikTok 自己显示的总数。有了这个差值你就能判断这次采集漏了多少而不是盲目相信导出结果。评论与回复的层级如何还原这是我最喜欢的一个细节。脚本遍历评论时通过判断当前节点是否属于回复容器来标记层级遇到一级评论就向后偷看连续几条回复的数量填进Number of Replies遇到二级回复就回溯记录它回复的是哪个用户。于是层级关系不用靠缩进猜三列数据就把整棵对话树还原了。五分钟实操从克隆仓库到拿到 xlsx准备清单Chromium 内核、登录、仓库你需要三样东西一个 Chromium 内核的浏览器Chrome、Edge、Brave 都行、一个已登录的 TikTok 账号、一份仓库代码。克隆地址是https://gitcode.com/gh_mirrors/ti/TikTokCommentScraperLinux 用户克隆后执行pip install -r requirements.txt装好pyperclip和openpyxlWindows 用户什么都不用装仓库自带的虚拟环境开箱即用。把 JavaScript 送进开发者控制台打开目标视频页面确认评论区能正常手动滚动按 F12 进入开发者控制台。Windows 下直接双击根目录的Copy JavaScript for Developer Console.cmd脚本会自动把src/ScrapeTikTokComments.js的内容复制到剪贴板非 Windows 系统运行python src/CopyJavascript.py效果相同。回到控制台粘贴、回车接下来就是等。剪贴板里的 CSV 如何变成 Excel看到CSV copied to clipboard!之后回到项目目录双击Extract Comments from Clipboard.cmd或运行python src/ScrapeTikTokComments.py脚本会读取剪贴板、生成一个带时间戳的Comments_时间戳.xlsx然后自动删除中间产生的临时 CSV。整个流程两条命令、两次粘贴前后五分钟左右。边界、调参与安全那些注定缺席的评论必须说清楚这工具拿不到全部评论原因是 TikTok 自己就渲染不全。README 里记录了一次 3000 条评论的实测最终有 64 条始终没被加载出来占比约 2%作者认为大部分场景可以忽略。我在开头遇到的 750/740 也是同类现象。所以拿到文件后请优先看头部元信息里的 Difference 字段心里有个数。为什么绝不该盲贴控制台代码这是 README 里警告语气最重的一段我也深表认同绝不盲目往开发者控制台粘贴来路不明的代码。粘贴并执行一段 JS 等于把当前登录会话完全交给对方。TikTokCommentScraper 的优势之一是代码全程透明、零网络请求剪贴板是唯一的敏感操作——但这份信任只对你亲自核对过的源码成立。运行前花两分钟翻一遍src/ScrapeTikTokComments.js这是对自己账号负责。评论多、网络慢时怎么调如果你发现滚动循环提前退出、评论加载到一半就停了多半是网络太慢导致 300 毫秒等待不够。源码第一幕开头有个loadingCommentsBuffer 30注释里写明如果加载太慢导致循环提前中断就调大这个缓冲值把等待时间从 300 毫秒改到 800 毫秒通常也能改善。作者在测试里提到3000 条评论的规模在中等配置笔记本上会开始有点卡顿这个量级基本是单次采集的舒适上限更大的数据量建议拆成多次。拿到数据之后项目地图与分析路径核心文件索引整套工具只有四个入口全部在项目内按需查阅浏览器采集脚本src/ScrapeTikTokComments.js数据转 Excel 脚本src/ScrapeTikTokComments.py复制 JS 到剪贴板src/CopyJavascript.pyWindows 双击入口Copy JavaScript for Developer Console.cmd与Extract Comments from Clipboard.cmd从 xlsx 出发的分析思路拿到 Excel 后一个多小时就能得到几类结论用数据透视表统计一天内评论的时段分布找出互动高峰对Comment Text做关键词频次统计定位高频话题按Likes排序筛出高赞评论观察什么样的内容更容易引发共鸣再结合Is 2nd Level Comment看回复占比判断讨论氛围是单方面表态还是双向对话。二次开发与合规底线想扩展也很容易把 Python 脚本里的输出换成 JSON 或写进数据库改一行就够想批量处理多个视频把控制台取数这一段包成一个可重复的流程即可。但请记住合规的底线——只采集公开可见的评论尊重用户隐私遵守平台服务条款。数据工具的边界最终是由使用者划定的。一句话收尾下次再有人问你要某个视频的全部评论不用熬夜滚鼠标把这段 JavaScript 交给浏览器然后去泡杯茶回来 Excel 就在那了。☕【免费下载链接】TikTokCommentScraper项目地址: https://gitcode.com/gh_mirrors/ti/TikTokCommentScraper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考