如何快速提取推文评论区的所有账号?
在浏览推文时,如果需要统计或收集评论区的用户账号,往往会面临一个痛点:由于推特(X)的加载机制,评论区无法一次性展示所有账号,手动记录不仅低效且极易遗漏。
为了解决这个问题,可以使用一段简单的 JavaScript 脚本。它的逻辑是:在脚本运行期间,你只需持续向下滚动浏览评论区,脚本会在后台实时抓取出现的账号,并在执行完毕后自动完成去重处理,将最终名单输出在控制台中。
操作指南
该脚本无需安装插件,直接通过浏览器内置的开发者工具即可运行:
- 在浏览器中打开目标推文页面。
- 按下 F12 键(或右键点击页面选择“检查”)打开开发者界面。
- 切换到 Console(控制台)面板。
- 将以下代码粘贴进去并回车执行。
// 循环获取账号。默认时长 20 秒,修改 maxCounter 值即可。// 获取所有 class 为 test 的 div 元素
var elements = document.getElementsByClassName("css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0");
// 定义一个正则表达式来匹配带有 @的字符串
var regex = /@(w+)/g;
// 创建一个 Set 来保存匹配到的字符串
var uniqueStrings = new Set();
// 定义一个计数器和一个最大计数器值,这里是 20
var counter = 0;
var maxCounter = 20;
// 定义一个定时器,每秒执行一次
var timer = setInterval(function() {
// 检查计数器是否已经达到最大值
if (counter >= maxCounter) {
// 停止定时器
clearInterval(timer);
// 打印所有唯一的匹配到的字符串
uniqueStrings.forEach(function(str) {console.log(str);
});
// 打印所有唯一的匹配到的字符串,带有序号
var index = 1;
uniqueStrings.forEach(function(str) {console.log(index + "." + str);
index++;
});
} else {
// 遍历所有元素并查找带有 @的字符串
for (var i = 0; i < elements.length; i++) {var matches = elements[i].innerHTML.match(regex);
if (matches !== null) {for (var j = 0; j < matches.length; j++) {uniqueStrings.add(matches[j]);
}
}
}
// 递增计数器
counter++;
}
}, 1000);
注意事项
- 动态抓取:脚本运行期间,请务必在页面中 向下滚动,以便触发页面加载更多评论,否则脚本只能获取当前可见的账号。
- 时长自定义:默认抓取时间为 20 秒。如果评论区内容非常多,可以修改代码中的
maxCounter数值来延长运行时间。 - 结果查看:运行结束后,去重后的账号列表(含序号版)将直接显示在 Console 窗口中。
运行效果:
正文完
