监听抖音直播间的评论并实现存储

监听抖音直播间评论,主要是动态监听dom元素的变化,如果评论是图片类型的,获取alt的值

主要采用的是MutationObserver:https://developer.mozilla.org/zh-CN/docs/Web/API/MutationObserver

index.js如下所示:function getPL() {var targetElement = document.querySelector('.webcast-chatroom___items');targetElement = targetElement.children[0];// 创建 MutationObserver 对象var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObservervar observer = new MutationObserver(function (mutations) {mutations.forEach(function (mutation) {// console.log("元素已经发生了变化");// console.log(mutation.addedNodes[0].innerHTML);var html = mutation.addedNodes[0].innerHTML;var tempElement = document.createElement('div');tempElement.innerHTML = '<div id="zbjdiv">' + html + '</div>';//获取名称var name = tempElement.querySelector('.u2QdU6ht').innerText;name = name.split(':')[0];// 获取评论内容var b = tempElement.querySelector('.WsJsvMP9');b = b.childNodes;var ctext = '';for (var i = 0; i < b.length; i++) {var cname = b[i].getAttribute('class');if (cname == 'webcast-chatroom___content-with-emoji-emoji ') {if (b[i].childNodes) {var c = b[i].childNodes;for (var j = 0; j < c.length; j++) {ctext += c[j]['alt'];}}}if (cname == 'webcast-chatroom___content-with-emoji-text') {ctext += tempElement.querySelector('.webcast-chatroom___content-with-emoji-text').innerText;}}if (mutation.addedNodes && mutation.addedNodes[0].innerText) {content.push({nickname: name,content: ctext,zbj: zbj})// 这里可以添加处理逻辑localStorage.setItem('key1', JSON.stringify(content))}// content.push(mutation.target.innerText)});});// 配置选项var config = { attributes: false, childList: true, subtree: true };// 开始监听observer.observe(targetElement, config);
}
function sendData() {var params = {type: 'save_barrage',barrage_data: content}var xhr = new XMLHttpRequest(); //创建XMLHttpRequest对象xhr.open("post", "存储数据接口"); //设置请求类型为POST并指定URL地址// xhr.setRequestHeader('Content-Type', 'application/json'); //设置请求头部信息(可选)xhr.onreadystatechange = function () { //处理服务器返回结果的函数if (xhr.readyState === 4 && xhr.status === 200) { //当状态变为4且HTTP状态码为200时表示请求成功// console.log(xhr); //输出服务器返回的内容var res = JSON.parse(xhr.responseText);// console.log(res, typeof res)if (res.code == 0) {// console.log('发送成功');content = [];localStorage.setItem('key1', JSON.stringify(content))}} else {// console.log("正在发送"); //若请求失败则打印错误消息}};xhr.send(JSON.stringify(params));
}var time = 10000;
// var content = localStorage.getItem('key1');
// if (content) {
//     content = JSON.parse(content);
// } else {
var content = [];
// }
var zbj = document.querySelector(".aH7KWm2V").innerText;
// if (zbj.indexOf('(')) {
//     zbj = zbj.split('(')[0]
// }
var zbjname = '';
function initZBJ(bool = false, zbjname) {  //发送数据   zbjname = zbjname;if (!zbjname || zbjname == '直播' || zbjname == '直播间') {console.log('请检查是否已输入直播间名称或是否正确输入直播间名称');return false;}if (zbj.indexOf(zbjname) != -1) {if (bool) {getPL();setInterval(function () {if (content.length > 0) {sendData();}}, time)} else {console.log(zbj + '数据没有存储');}} else {console.log('请检查是否已输入直播间名称或是否正确输入直播间名称');}
}

运行index.js

第一种方式:将下面的代码运行在浏览器的console中,缺点:每一次都需要复制下面代码
第二种方式:
在这里插入图片描述

运行代码:
var script = document.createElement('script');
script.src = 'XXX/index.js';  //index.js在服务器存放的位置
document.head.appendChild(script);var bool=true; //true:监听评论并存储,false:不监听不存储script.onload = function () {initZBJ(bool,'监听的直播间名称');//第二个参数:直播间名称(必填)
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/743445.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于深度学习的图像去雨去雾

基于深度学习的图像去雨去雾 文末附有源码下载地址 b站视频地址&#xff1a; https://www.bilibili.com/video/BV1Jr421p7cT/ 基于深度学习的图像去雨去雾&#xff0c;使用的网络为unet&#xff0c; 网络代码&#xff1a; import torch import torch.nn as nn from torchsumm…

拼图小游戏制作教程:用HTML5和JavaScript打造经典游戏

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

自动化构建平台(七)使用Jenkins+Gitblit/Gitlab构建Java项目并生成镜像推送到Harbor/Nexus

文章目录 前言一、准备项目二、在Jenkins中创建项目三、Jenkins项目配置:General四、Jenkins项目配置:源码管理五、Jenkins项目配置:Build六、Jenkins项目配置:Post Steps1、创建项目启动脚本2、创建Dockerfile文件3、构建镜像4、推送镜像到私有库七、Jenkins开始构建八、检…

【数据结构】栈与队列的“双向奔赴”

目录 前言 1.使用“栈”检查符号是否成对出现 2.使用“栈”实现字符串反转 3.使用“队列”实现“栈” 4.使用“栈”实现“队列” 前言 什么是栈&#xff1f; 栈&#xff08;stack&#xff09;是一种特殊的线性数据集合&#xff0c;只允许在栈顶按照后进先出LIFO&#xff…

网上商城购物系统|基于springboot框架+ Mysql+Java+B/S架构的网上商城购物系统设计与实现(可运行源码+数据库+设计文档+部署说明)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 管理员功能登录前台功能效果图 用户功能模块 系统功能设计 数据库E-R图设计 lunwen参…

matlab 中文比较case

1.matlab %区别 cc大学 %as两个字符 dd大学 ccdd ans 12 logical array1 1cc1"大学" %as一个字符整体 dd1"大学" cc1dd1ans logical12.实际应用 问题&#xff1a;simple不精确匹配 ‘康奈尔大学’——‘康乃尔大学’&#xff0c;如果两个中文字符之间有…

ip广播智慧工地广播喊话号角 IP网络号角在塔吊中应用 通过寻呼话筒预案广播

ip广播智慧工地广播喊话号角 IP网络号角在塔吊中应用 通过寻呼话筒预案广播 SV-704XT是深圳锐科达电子有限公司的一款壁挂式网络有源号角&#xff0c;具有10/100M以太网接口&#xff0c;可将网络音源通过自带的功放和号角喇叭输出播放&#xff0c;可达到功率50W。SV-704XT内置有…

LocalDateTime 转 String

import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class Main { public static void main(String[] args) { // 获取当前时间 LocalDateTime now LocalDateTime.now(); // 定义日期格式化器 DateTimeFormatter formatter DateTime…

OneDrive教育版迁移记录

背景 微软再次削减教育版优惠的OneDrive容量&#xff0c;从原先的5T直接砍到100G/人&#xff0c;同时对每个学校保留总共100TB的共享存储容量。 右键Onedrive图标——设置——存储容量可见 100GB对于重度用户显然是不够使用的&#xff0c;为此笔者改换Microsoft Office365家庭…

Mysql 死锁案例6-并发 insert on duplicate key 导致的死锁

场景复现 mysql 5.7.12 ,事务隔离级别RR CREATE TABLE t (id int(11) NOT NULL,a int(11) DEFAULT NULL,b int(11) DEFAULT NULL,PRIMARY KEY (id),UNIQUE KEY a (a) ) ENGINEInnoDB DEFAULT CHARSETutf8;/*Data for the table t */insert into t(id,a,b) values (0,0,0),(5,…

mac启动skywalking报错

这个命令显示已经成功 但是日志报错了以上内容。 然后去修改。vim .bash_profile 查看全局变量&#xff0c;这个jdk却是有2个。所以这个问题没解决。

C++基础——C++ make_pair用法,map与pair的使用

C基础——C make_pair用法-CSDN博客 std::pair用法 std::pair主要的作用是将两个数据组合成一个数据&#xff0c;两个数据可以是同一类型或者不同类型。 例如std::pair<int,float> 或者 std::pair<double,double>等。 pair实质上是一个结构体&#xff0c;其主要的…

【哈希映射】【 哈希集合】 381. O(1) 时间插入、删除和获取随机元素 - 允许重复

作者推荐 视频算法专题 本文涉及知识点 哈希映射 哈希集合 LeetCode 381. O(1) 时间插入、删除和获取随机元素 - 允许重复 RandomizedCollection 是一种包含数字集合(可能是重复的)的数据结构。它应该支持插入和删除特定元素&#xff0c;以及删除随机元素。 实现 Randomiz…

【java/image】将指定路径下所有的png图片进行反色处理

【需求】 在桌面上有若干png图片&#xff0c;是使用截图软件FSCapture7.6对通达信的K线图截图而得&#xff0c;在打印这些K线图前&#xff0c;需要将它们进行反色处理。 【代码】 package test240313;import java.awt.image.BufferedImage; import java.awt.image.ByteLooku…

express-generator生成nodejs服务基本骨架

1. 安装 express-generator 构建工具 npm install -g express-generator 2. 新建express项目 express my-node-server // my-node-server是项目名 3. 初始化后的项目文件的目录结构如下 app.js 应用的主入口 bin 启动脚本 node_modules 依赖的模块 package.json node 模块…

python爬虫实战——小红书

目录 1、博主页面分析 2、在控制台预先获取所有作品页的URL 3、在 Python 中读入该文件并做准备工作 4、处理图文类型作品 5、处理视频类型作品 6、异常访问而被中断的现象 7、完整参考代码 任务&#xff1a;在 win 环境下&#xff0c;利用 Python、webdriver、JavaS…

<.Net>VisaulStudio2022下用VB.net实现socket与汇川PLC进行通讯案例(Eazy521)

前言 此前&#xff0c;我写过一个VB.net环境下与西门子PLC通讯案例的博文&#xff1a; VisaulStudio2022下用VB.net实现socket与西门子PLC进行通讯案例&#xff08;优化版&#xff09; 最近项目上会用到汇川PLC比较多&#xff0c;正好有个项目有上位机通讯需求&#xff0c;于是…

InnoDB对MVCC的实现

MVCC是啥&#xff1f; (Multiversion Concurrency Control) 多版本并发控制 是个方法&#xff0c;是个思想。 解决多并发事务操作同一数据库数据&#xff0c;数据保持一致的问题。 怎么做&#xff1a;每个数据行上维护多个版本 当一个事务要对数据进行修改&#xff0c;为该事…

mysql转达梦的python脚本

mysql_ddl&#xff1a; CREATE TABLE ops_app_import (id char(32) NOT NULL COMMENT 主键ID,pkg_name varchar(255) NOT NULL DEFAULT COMMENT 导入包名称,pkg_md5 varchar(32) NOT NULL COMMENT 导入包md5值,backup_pkg_name varchar(255) DEFAULT COMMENT 备份包名称,bac…

[剪藏] - 由哇哈哈和农夫山泉所想到的

哇哈哈和农夫山泉的缠斗最近冒出来一个有趣的点&#xff1a;营销大于内容的胜利。 具体来说是这样的&#xff1a;农夫山泉很多年前做广告&#xff0c;说纯净水没有矿物质&#xff0c;长期喝是不利于人体健康的。农夫还做了个营销的对比实验&#xff0c;大概是用矿泉水养水仙花&…