先放一个 《油猴脚本 之 网教通直播评论记录抓取》那篇文章的传送门

修复内容

  • 将所有表情转为 [符号表情] 字样,而非删除;
  • 修复被禁言用户读取异常,现在被禁言用户表示为 张三 [已禁言]
  • 修复被主播发言读取异常,现在主播发言表示为 张三 [主播]
  • 在导出的文件名后添上导出时间;
  • 添加表头;
  • 汉化所有弹窗;
  • 保存文件时可以取消;
  • 支持在到处之后按 Esc 键重新导出;
  • 实现在加载完所有评论时,自动弹窗询问是否保存;
  • 将评论中所有换行符全部转为 [换行],保证可读性的同时防止格式错乱;
  • 过滤 noscript 标签,防止格式错乱;
  • 若评论区无内容,弹窗提示。

源代码

// ==UserScript==
// @name 评论记录批量加载
// @namespace https://www.cnblogs.com/henrylin/
// @version 2.0
// @description 评论记录批量加载
// @author 林洪平
// @match https://recreation-chat.sdp.101.com/*
// @grant none
// ==/UserScript== (function () {
'use strict';
var x = false;
var timer = setInterval(function () {
if (document.querySelector('div._3Bl-4NTv1A._3bGFQ6biuP'))
document.querySelector('div._3Bl-4NTv1A._3bGFQ6biuP').click(); }, 100); var stopper = setInterval(function () {
if (document.querySelector('._2PJO3f--Nd + span') && document.querySelector('._2PJO3f--Nd + span').innerHTML == '没有更多消息') {
clearInterval(timer);
if (confirm('已全部加载完成。是否导出?')) exporter(); clearInterval(stopper);
}
}, 300) document.onkeydown = function (e) {
var ev = e || window.event;
if (ev.keyCode == 27) {//esc
if (x ? confirm('确定重新导出?') : confirm('确定停止记录并导出?')) {
exporter();
}
}
} function exporter() {
x = true;
clearInterval(timer);
var data = document.getElementById('msg-flow-wrapper').innerHTML;
const linebreaker = '\n';
const attrbreaker = ',';
data = data.replace(/<img src="https:\/\/gcdncs\.101\.com\/v0\.1\/static\/im_emotion\/emoji[^>]+>/g, "[符号表情]");
data = data.replace(/<img src="http:\/\/gcdncs\.101\.com\/v0\.1\/static\/recreation_chat_assets\/smiley[^>]+>/g, "[符号表情]");
data = data.replace(/<span[^>]+>已禁言<\/span>/g, "\uFFFF\uFFFE\uFFFF");
data = data.replace(/<span[^>]+>主播<\/span>/g, "\uFFFF\uFFFD\uFFFF");
data = data.replace(/<img[^>]+>/g, "");
data = data.replace(/<\/?noscript[^>]*>/g, "");
data = data.replace(/<br[^>]+>/g, "[换行]");
data = data.replace(/<[^>]+>/g, "\uFFFF");
data = data.replace(/\uFFFF{19}/g, linebreaker);
data = data.replace(/\uFFFF{15}/g, linebreaker);
data = data.replace(/^\uFFFF[^\uFFFF]+\uFFFF{2}/, "");
data = data.replace(/\uFFFF{5}/g, attrbreaker);
data = data.replace(/\uFFFF{4}/g, attrbreaker);
data = data.replace(/\uFFFF/g, "");
data = data.replace(/^,{2}/, "");
data = data.replace(/,{2}$/, "");
data = data.replace(/\n,+/g, "\n");
data = data.replace(/\n+/g, "\n");
data = data.replace(/\uFFFE/g, " [已禁言],");
data = data.replace(/\uFFFD/g, " [主播],");
if (data == '欢迎来到直播间') {
alert('未抓取到任何内容。将不会导出文件。');
x = true;
return;
}
data = '发言者,时间,内容' + linebreaker + data; var day = new Date();
var time = day.getHours() + '时' + day.getMinutes() + '分' + day.getSeconds() + '秒';
var date = day.getFullYear() + "年" + (day.getMonth() + 1) + "月" + day.getDate() + '日'; var element = document.createElement('a');
const blob = new Blob([data]);
element.download = '评论区记录_' + date + '_' + time + '.csv';
element.style = "display: none";
element.href = URL.createObjectURL(blob);
document.body.appendChild(element);
element.click(); setTimeout(function () {
document.body.removeChild(element);
window.URL.revokeObjectURL(blob);
}, 100);
}
})();

油猴脚本 之 网教通直播评论记录抓取 v2.0的更多相关文章

  1. C++ 网教通直播刷屏反制 (思路启发)

    前言 那些手动刷屏的你们弱爆了! 直播间的讨论区是用来讨论的, 下次谁再在上课时间大量刷屏,就以暴制暴! 思路启发 #define VK_CTRL 0x11 //... keybd_event(VK_ ...

  2. Stylus 之 网教通直播间整修

    暗色模式 效果 Mozilla 格式源代码 @-moz-document domain("fj.101.com") { * { transition: all .3s; } #wj ...

  3. [转帖]油猴脚本管理器 Tampermonkey v4.8 离线CRX安装包(谷歌浏览器版)

    https://www.52pojie.cn/thread-1010604-1-1.html 油猴脚本管理器 Tampermonkey v4.8 离线CRX安装包(谷歌浏览器版) 链接:https:/ ...

  4. 自用chrome+油猴脚本,使用迅雷下载百度云大文件,一键离线下载

    油猴是有名的火狐浏览器插件(Greasemonkey),当然也有Chrome版本(tampermonkey),甚至IE.Safari.Opera都有……虽然这些插件是由不同的开发者开发出来的,界面也可 ...

  5. Tampermonkey油猴脚本管理插件-最强浏览器插件的安装使用全攻略

      对于接触过谷歌浏览器插件的“玩家”们来说,应该没有人没听说过Tampermonkey用户脚本管理器,也就是中文所说的“油猴”这个chrome插件了. 油猴号称全商店最强的浏览器插件绝非浪得虚名,一 ...

  6. 浏览器插件之王-Tampermonkey(油猴脚本)

    大家电脑都在使用浏览器,相信大家对浏览器插件也不陌生,浏览器插件是安装在浏览器里面,对浏览器功能进行拓展的脚本,现在的主流浏览器都有各种各样的插件如图: 这些插件让我们的上网方便了许多,有去广告的插件 ...

  7. [Chrome] 谷歌浏览器开启开发模式仍然无法安装油猴脚本

    右键 > 属性 > 起始位置 > 添加 --enable-easy-off-store-extension-install 谷歌浏览器无法安装油猴脚本:--enable-easy-o ...

  8. 使用 Sublime 或其他编辑器调试 Tampermonkey 油猴脚本

    作者说由于 Chrome 安全限制,没办法调用外部编辑器调试,但提供了一个间接办法,那就是脚本中使用@require file:///引入本地文件的形式,具体的方法是 打开 chrome://exte ...

  9. 【接单】找我付费定制Python工具软件或网站开发、Chrome浏览器插件、油猴脚本

    各位可付费找我定制Python工具软件或网站开发.Chrome插件.油猴脚本.自动化软件,可通过我做的软件来评判我的实力,一定要先和我沟通你的需求,做不了的我也不会接. 费用50元起,通过淘宝APP或 ...

随机推荐

  1. Spring 中基于 AOP 的 XML架构

    Spring 中基于 AOP 的 XML架构 为了使用 aop 命名空间标签,你需要导入 spring-aop j架构,如下所述: <?xml version="1.0" e ...

  2. C# 数据操作系列 - 14 深入探索SqlSugar

    0.前言 在上一篇中,我们知道了如何使用SqlSugar,但是也只是简单的了解了如何使用,仿佛是套着镣铐行走,这明显不符合一个合格的程序员应有的素养.所以,这一篇我们将对其进行深挖,探究其背后的秘密. ...

  3. Pyqt5_QWidget

    QWidget常用方法: Qwidget.size()#获得客户区的大小 QWidget.width().QWidget.height()#获得客户区的宽度与高度 #设置不可以变宽.高 QWidget ...

  4. 基于 abp vNext 和 .NET Core 开发博客项目 - 异常处理和日志记录

    在开始之前,我们实现一个之前的遗留问题,这个问题是有人在GitHub Issues(https://github.com/Meowv/Blog/issues/8)上提出来的,就是当我们对Swagger ...

  5. zepto快速入门教程

    * zepto* 特点:1.体积8kb2.针对移动端的框架3.语法同jquery大部分一样,都是$为核心函数4.目前功能完善的框架体积最小的左右* 同jquery相似的语法核心:$--作为函数使用参数 ...

  6. SQL SERVER修改为sa登陆权限报错,233,18456接连出现【抓狂ing】

    [记录生活] 今天做作业需要修改sa权限,本人电脑没错误. 同样教程发给朋友,错误百出.... 话不多说,百度很多解决方法,但是都没有解决,贴出解决方法. 0.用Windows身份验证登录,执行SQL ...

  7. JavaScript之倔强的字符串

    关于倔强的JavaScript字符串:不可以被修改 我们是字符串 我们的口号是:你可以消灭我,但是你不能改变我 JavaScript字符串是不可改变的,当真是这样的吗? 让我们来试验一下. var n ...

  8. [JavaWeb基础] 031.dom4j写入xml的方法

    上一篇我们讲述了dom4j读取xml的4种方法,甚是精彩,那么怎么样写入xml呢?我们直接看下源码实现. public static void main(String[] args) throws E ...

  9. Vulnerability of SSL to Chosen-Plaintext Attack 读书报告

    这篇文章讲述了在SSL上的选择明文攻击.我想分四个部分讲讲我对这篇文章的理解. 1.CPA的定义: 2.文章讲述SSL相关基本概念漏洞: 3.对SSL的CPA攻击的过程: 4.实现这种攻击的可能性以及 ...

  10. 腾讯云EMR大数据实时OLAP分析案例解析

    OLAP(On-Line Analytical Processing),是数据仓库系统的主要应用形式,帮助分析人员多角度分析数据,挖掘数据价值.本文基于QQ音乐海量大数据实时分析场景,通过QQ音乐与腾 ...