先放一个 《油猴脚本 之 网教通直播评论记录抓取》那篇文章的传送门 。
修复内容
- 将所有表情转为
[符号表情]
字样,而非删除; - 修复被禁言用户读取异常,现在被禁言用户表示为
张三 [已禁言]
; - 修复被主播发言读取异常,现在主播发言表示为
张三 [主播]
; - 在导出的文件名后添上导出时间;
- 添加表头;
- 汉化所有弹窗;
- 保存文件时可以取消;
- 支持在到处之后按 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的更多相关文章
-
C++ 网教通直播刷屏反制 (思路启发)
前言 那些手动刷屏的你们弱爆了! 直播间的讨论区是用来讨论的, 下次谁再在上课时间大量刷屏,就以暴制暴! 思路启发 #define VK_CTRL 0x11 //... keybd_event(VK_ ...
-
Stylus 之 网教通直播间整修
暗色模式 效果 Mozilla 格式源代码 @-moz-document domain("fj.101.com") { * { transition: all .3s; } #wj ...
-
[转帖]油猴脚本管理器 Tampermonkey v4.8 离线CRX安装包(谷歌浏览器版)
https://www.52pojie.cn/thread-1010604-1-1.html 油猴脚本管理器 Tampermonkey v4.8 离线CRX安装包(谷歌浏览器版) 链接:https:/ ...
-
自用chrome+油猴脚本,使用迅雷下载百度云大文件,一键离线下载
油猴是有名的火狐浏览器插件(Greasemonkey),当然也有Chrome版本(tampermonkey),甚至IE.Safari.Opera都有……虽然这些插件是由不同的开发者开发出来的,界面也可 ...
-
Tampermonkey油猴脚本管理插件-最强浏览器插件的安装使用全攻略
对于接触过谷歌浏览器插件的“玩家”们来说,应该没有人没听说过Tampermonkey用户脚本管理器,也就是中文所说的“油猴”这个chrome插件了. 油猴号称全商店最强的浏览器插件绝非浪得虚名,一 ...
-
浏览器插件之王-Tampermonkey(油猴脚本)
大家电脑都在使用浏览器,相信大家对浏览器插件也不陌生,浏览器插件是安装在浏览器里面,对浏览器功能进行拓展的脚本,现在的主流浏览器都有各种各样的插件如图: 这些插件让我们的上网方便了许多,有去广告的插件 ...
-
[Chrome] 谷歌浏览器开启开发模式仍然无法安装油猴脚本
右键 > 属性 > 起始位置 > 添加 --enable-easy-off-store-extension-install 谷歌浏览器无法安装油猴脚本:--enable-easy-o ...
-
使用 Sublime 或其他编辑器调试 Tampermonkey 油猴脚本
作者说由于 Chrome 安全限制,没办法调用外部编辑器调试,但提供了一个间接办法,那就是脚本中使用@require file:///引入本地文件的形式,具体的方法是 打开 chrome://exte ...
-
【接单】找我付费定制Python工具软件或网站开发、Chrome浏览器插件、油猴脚本
各位可付费找我定制Python工具软件或网站开发.Chrome插件.油猴脚本.自动化软件,可通过我做的软件来评判我的实力,一定要先和我沟通你的需求,做不了的我也不会接. 费用50元起,通过淘宝APP或 ...
随机推荐
-
win7下安装mysql后修改密码
mysql的安装教程网上很多,此处不过多介绍,个人觉得下面这篇教程是比较好的,一步到位.MySQL 5.7.9 ZIP 免安装版本配置过程_百度经验 http://jingyan.baidu.com ...
-
【JUC】JDK1.8源码分析之ThreadPoolExecutor(一)
一.前言 JUC这部分还有线程池这一块没有分析,需要抓紧时间分析,下面开始ThreadPoolExecutor,其是线程池的基础,分析完了这个类会简化之后的分析,线程池可以解决两个不同问题:由于减少了 ...
-
Finereport集群配置
增加配置文件cluster.xml 将配置包resource文件夹下的cluster.xml打开,如果没有cluster.xml,则新建一个,基本内容如下: <?xml version=&quo ...
-
jquery之val()和attr(";value";)
1.attr("value")=原来的默认值 ,而val()=用户改变的值.
-
ANDROID对文件的操作介绍
1. Android遵循MVC设计思想: M(业务层):service V:视图(main.xml). C:Activity 2.使用文件如何对数据进行存储 Activity提供了openFileOu ...
-
自定义程序异常Exception
/** * 用于循环时的异常定位抛出异常 * 如第i行记录,抛出异常 * @author zhengwei * */ public class MyExcetion extends RuntimeEx ...
-
yum和编译两种方式升级or降级Centos内核
http://blog.51cto.com/renzhiyuan/1882599 今天探讨用yum和编译两种方式升级或者降级内核版本: 升级:比如玩kvm,docker等虚拟化,centos内核则升级 ...
-
9.C#知识点:线程初识及Thread初识(一)
知识点目录==========>传送门 线程和进程的简单概括. 1.进程就是"活动中"的程序,一个.程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实 ...
-
python 写hive循环脚本
要一个月的数据 一次跑一周的数据 ,建表用插入数据的方法: import os, sys reload(sys); sys.setdefaultencoding( "utf-8" ...
-
理解WEB标准
WEB标准不是某一个标准,而是一系列标准的集合.网页主要由三部分组成:结构(Structure).表现(Presentation)和行为 (Behavior).对应的标准也分三方面:结构化标准语言主要 ...