删除微博博文js脚本实现

news2024/9/23 3:24:38

我当前的时间:2024.8.18

脚本可以直接使用,随着时间推移,微博页面元素可能会有变动。

思路:javascript 模拟手动点击,下滑,并且删除博文

首先登录微博,进入自己的博文界面如下:

进入当前页面F12 ,控制台直接执行即可(当前脚本只能从上往下删,且没有跳过,如果需要,可自行扩展)

代码(选其一即可):


//一、优化后最强版本(可长时间执行,但也不保证不会停止)--------------------------------------------------------------------------------------------------------------------------------
{
    function deleteMessage() {
        try {
            var scroHeight = 700; //向下滑动的高度  px
            // 更多按钮
            let iDom = document.getElementsByClassName('woo-font woo-font--angleDown morepop_action_bk3Fq')[0];
            if (iDom) {

                //先找到当前博文
                var currentcontext = iDom.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;
                //一、蓝色警方通告
                var tonggao = currentcontext.getElementsByClassName('woo-box-flex woo-box-alignCenter woo-box-justifyCenter woo-tip-main woo-tip-flat woo-tip-warn tips_tip_3WqKM tips_cursor_2uylm')[0];
                if (tonggao)//找到当前通告的话,删除当前整个博文,并return,并向下滑动
                {
                    //根据通告框找到当前最高级别(用于删除)
                    var tonggaoParent = tonggao.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;
                    //1、先删除自己
                    tonggaoParent.parentNode.removeChild(tonggaoParent);
                    //2、再向下滑动
                    window.scrollBy({
                        top: scroHeight,
                        behavior: 'smooth' // 可选,使滚动平滑进行
                    });
                    return;
                }
                //二、黄色举报通告
                var jubao = currentcontext.getElementsByClassName('woo-box-flex woo-box-alignCenter woo-box-justifyCenter woo-tip-main woo-tip-flat woo-tip-error tips_tip_3WqKM tips_cursor_2uylm')[0];
                if (jubao)//找到当前通告的话,删除当前整个博文,并return,并向下滑动
                {
                    //根据通告框找到当前最高级别(用于删除)
                    var tonggaoParent = jubao.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;
                    //1、先删除自己
                    tonggaoParent.parentNode.removeChild(tonggaoParent);
                    //在向下滑动
                    window.scrollBy({
                        top: scroHeight,
                        behavior: 'smooth' // 可选,使滚动平滑进行
                    });
                    return;
                }

                 当前博文做屏幕居中操作
                获取元素相对于视口的位置
                //var elementRect = iDom.getBoundingClientRect();
                 计算滚动位置
                //var offsetTop = elementRect.top + window.scrollY - (window.innerHeight / 2) + (elementRect.height / 2);
                 滚动到指定位置
                //window.scrollTo({
                //    top: offsetTop,
                //    behavior: 'smooth'
                //});

                iDom.scrollIntoView({
                    behavior: 'smooth',
                    block: 'center',
                    inline: 'center'
                });

                iDom.click();
                setTimeout(() => {
                    let deleteOptions = document.getElementsByClassName('woo-box-flex woo-box-alignCenter woo-pop-item-main');
                    // 循环更多列表内的按钮
                    for (let option of deleteOptions) {
                        // 只对删除按钮点击
                        if (option.textContent.trim() == '删除' || option.textContent.trim() == '取消快转') {
                            option.click();
                            setTimeout(() => {
                                // 等待删除对话框出现后再点击确定按钮
                                var dialogCtrl = document.querySelector('.woo-dialog-ctrl');
                                if (dialogCtrl) {
                                    // 删除弹窗的确定按钮
                                    var secondButton = dialogCtrl.querySelectorAll('button')[1].click();
                                    console.log("删除成功了");
                                }
                            }, 200);
                            break;
                        }
                    }
                }, 100);
            }
        } catch (error) {
            // 异常捕获
            console.error("郭哥报错了!:", error);
        }
    }


    var timerIdMins = [];


    var timers = setInterval(function () {

        //怕有空白处可能导致js不执行,所以刷新一下微博列表
        var buttons = document.querySelectorAll('.Profile_btn_4Wj2Q');
        if (buttons.length > 1) {
            buttons[1].click();// 点击第二个按钮“微博”

        } else {
            return;
        }


        //阻塞函数
        function blockForThreeSeconds() {
            return new Promise(resolve => {
                setTimeout(resolve, 2000);
            });
        }
        //阻塞函数
        function blockForThreeSeconds22() {
            return new Promise(resolve => {
                setTimeout(resolve, 500);
            });
        }

        //blockForThreeSeconds().then(() => {
        //    setInterval(deleteMessage, 200);  //白天快速版本
        //});

        blockForThreeSeconds().then(() => {
            // 获取微博数
            var element = document.querySelector('.wbpro-screen-v2 > div:first-child');
            var number = 0;
            if (element) {
                var text = element.textContent.trim();
                // 提取数字部分
                number = text.match(/\d+/);

                blockForThreeSeconds22().then(() => {

                    timerIdMins.push(setInterval(function () {

                        //达到数量停止定时器
                        if (number < 100000 && number != null && number != 0) {
                            timerIdMins.forEach(function (timerId) {
                                clearInterval(timerId);
                            });
                            //clearInterval(timers);    //先不删大定时器
                            console.log("所有定时器已停止,已经删够啦!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!剩余:" + number);
                            return;
                        }
                        else {
                            deleteMessage();
                        }
                    }, 400));

                });
            } else {
                return;
            }

        });

    }, 1000 * 20);

}


//二、白天快速版本(得盯着点)--------------------------------------------------------------------------------------------------------------------------------
{
    function deleteMessage() {
        try {
            var scroHeight = 700; //向下滑动的高度  px
            // 更多按钮
            let iDom = document.getElementsByClassName('woo-font woo-font--angleDown morepop_action_bk3Fq')[0];
            if (iDom) {

                //先找到当前博文
                var currentcontext = iDom.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;
                //一、蓝色警方通告
                var tonggao = currentcontext.getElementsByClassName('woo-box-flex woo-box-alignCenter woo-box-justifyCenter woo-tip-main woo-tip-flat woo-tip-warn tips_tip_3WqKM tips_cursor_2uylm')[0];
                if (tonggao)//找到当前通告的话,删除当前整个博文,并return,并向下滑动
                {
                    //根据通告框找到当前最高级别(用于删除)
                    var tonggaoParent = tonggao.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;
                    //1、先删除自己
                    tonggaoParent.parentNode.removeChild(tonggaoParent);
                    //2、再向下滑动
                    window.scrollBy({
                        top: scroHeight,
                        behavior: 'smooth' // 可选,使滚动平滑进行
                    });
                    return;
                }
                //二、黄色举报通告
                var jubao = currentcontext.getElementsByClassName('woo-box-flex woo-box-alignCenter woo-box-justifyCenter woo-tip-main woo-tip-flat woo-tip-error tips_tip_3WqKM tips_cursor_2uylm')[0];
                if (jubao)//找到当前通告的话,删除当前整个博文,并return,并向下滑动
                {
                    //根据通告框找到当前最高级别(用于删除)
                    var tonggaoParent = jubao.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;
                    //1、先删除自己
                    tonggaoParent.parentNode.removeChild(tonggaoParent);
                    //在向下滑动
                    window.scrollBy({
                        top: scroHeight,
                        behavior: 'smooth' // 可选,使滚动平滑进行
                    });
                    return;
                }

                 当前博文做屏幕居中操作
                获取元素相对于视口的位置
                //var elementRect = iDom.getBoundingClientRect();
                 计算滚动位置
                //var offsetTop = elementRect.top + window.scrollY - (window.innerHeight / 2) + (elementRect.height / 2);
                 滚动到指定位置
                //window.scrollTo({
                //    top: offsetTop,
                //    behavior: 'smooth'
                //});

                iDom.scrollIntoView({
                    behavior: 'smooth',
                    block: 'center',
                    inline: 'center'
                });

                iDom.click();
                setTimeout(() => {
                    let deleteOptions = document.getElementsByClassName('woo-box-flex woo-box-alignCenter woo-pop-item-main');
                    // 循环更多列表内的按钮
                    for (let option of deleteOptions) {
                        // 只对删除按钮点击
                        if (option.textContent.trim() == '删除' || option.textContent.trim() == '取消快转') {
                            option.click();
                            setTimeout(() => {
                                // 等待删除对话框出现后再点击确定按钮
                                var dialogCtrl = document.querySelector('.woo-dialog-ctrl');
                                if (dialogCtrl) {
                                    // 删除弹窗的确定按钮
                                    var secondButton = dialogCtrl.querySelectorAll('button')[1].click();
                                    console.log("删除成功了");
                                    setTimeout(() => {
                                        // 递归调用此方法
                                        deleteMessage();
                                    }, 200);
                                }
                            }, 200);
                            break;
                        }
                    }
                }, 100);
            }
        } catch (error) {
            // 异常捕获
            console.error("郭哥报错了!:", error);
        }
    }

    setInterval(deleteMessage, 200); 

    //var timers = setInterval(function () {

    //    //怕有空白处可能导致js不执行,所以刷新一下微博列表
    //    var buttons = document.querySelectorAll('.Profile_btn_4Wj2Q');
    //    if (buttons.length > 1) {
    //        buttons[1].click();// 点击第二个按钮“微博”

    //    } else {
    //        return;
    //    }
    //    setInterval(deleteMessage, 200); 

    //}, 1000 * 20);

}

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

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

相关文章

数据结构08--排序及查找

1.基本概念 排序是处理数据的一种最常见的操作&#xff0c;所谓排序就是将数据按某字段规律排列&#xff0c;所谓的字段就是数据节点的其中一个属性。比如一个班级的学生&#xff0c;其字段就有学号、姓名、班级、分数等等&#xff0c;我们既可以针对学号排序&#xff0c;也可以…

c++ opencv开发环境搭建

打开opencv官网&#xff0c;OpenCV - Open Computer Vision Library 然后点击之后&#xff0c;下载即可&#xff0c;下载完成之后&#xff0c;点击安装&#xff0c;等待安装完毕。 这是安装完毕之后的目录&#xff0c;已经包含了头文件与lib库、dll等&#xff0c;开发之前的环境…

RK3568平台(触摸篇)主板端集成厂家触摸屏

一.硬件连接 板卡配触摸框架构如下图&#xff1a; 二.数据流向 板卡配触摸框的数据流向&#xff0c;尽量做到高灵活性&#xff0c;并且简单清晰&#xff1a; 1&#xff09;后台进程从触摸框获取原始数据并计算&#xff0c;计算的点报给 android 内核 input 系统&#xff0c…

【AI/算法类】OPPO 2025届秋招笔试题(B卷)

目录 1. 第一题2. 第二题3. 第三题 ⏰ 时间&#xff1a;2024/08/10 &#x1f504; 输入输出&#xff1a;ACM格式 ⏳ 时长&#xff1a;2h 本试卷还有选择题部分&#xff0c;但这部分比较简单就不再展示。 1. 第一题 小O有一个正整数 x x x&#xff0c;他想知道&#xff0c;第…

【机器学习】(基础篇五) —— 逻辑回归

逻辑回归 逻辑回归&#xff08;Logistic Regression&#xff09;是一种广义线性模型&#xff0c;主要用于处理因变量为二分类或多分类&#xff08;通过独热编码或多输出逻辑回归&#xff09;的问题。尽管名字中带有“回归”二字&#xff0c;但实际上逻辑回归是一种分类算法&am…

SQLite数据库的增删改查(CRUD)

文章目录 SQLite数据库的增删改查&#xff08;CRUD&#xff09;添加数据更新数据删除数据查询数据使用SQL操作数据库添加数据的方法如下&#xff1a;更新数据的方法如下&#xff1a;删除数据的方法如下&#xff1a;查询数据的方法如下&#xff1a; SQLite数据库的增删改查&…

web技术1——jdk目录结构(重要),tomcat服务器(重要)

jdk文件夹结构(重要) bin目录&#xff1a; 里面都是.exe可执行文件。java&#xff0c;javac&#xff0c;javadoc&#xff0c;java编译工具&#xff0c;java监测工具等.exe文件都在这里。 include目录: 底层有用c写的东西&#xff0c;这里面包含很多c语言的文件&#xff0c…

Qt传入参数到mysql语句

试过两种方法都成功了 方法1&#xff1a;使用bool QSqlQuery::prepare和void QSqlQuery::bindValue传入参数,然后再使用bool QSqlQuery::exec() 执行Mysql语句 QSqlDatabase db //数据库 QSqlQuery result(db); // 基于已连接的数据库db建立 QSqlQuery 对象 QString strTime…

Linux du命令估算文件空间使用情况

du命令&#xff0c;估算文件空间使用情况&#xff0c;命令格式&#xff1a; du [option]... [file]... option&#xff1a; -a, --all显示所有文件的计数&#xff0c;而不仅仅是目录-d, --max-depthN打印文件夹深度小于等于N的总空间-h, --human-readable以人性化可读格式打…

Kotlin学习-01创建kotlin学习环境

安装idea https://www.jetbrains.com/zh-cn/ 创建项目 选择kotlin 修改Main.kt fun main() {print("Hello World!") }运行

类与对象(中(1))

开头 上一期内容&#xff0c;我们初步学习了类与对象中的基础知识&#xff0c;了解了类的定义&#xff0c;实例化以及this指针等相关内容&#xff0c;不知各位是否有一定的收获。今天&#xff0c;我们将更进一步&#xff0c;对类与对象中的默认成员函数部分进行一个初步的了解…

【排序篇】实现快速排序的三种方法

&#x1f308;个人主页&#xff1a;Yui_ &#x1f308;Linux专栏&#xff1a;Linux &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &#x1f308;数据结构专栏&#xff1a;数据结构 文章目录 1 交换排序1.1 冒泡排序1.2 快速排序1.2.1 hoare版本1.2.2 挖坑法1.2.3 前后指针…

C++求职LinuxWebServer面试篇(项目介绍)

⭐️我叫忆_恒心,一名喜欢书写博客的在读研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三连支持一下呗。👍⭐️❤️ Qt5.9专栏定期更新Qt的一些项目Demo 项目与…

【数学建模】趣味数模问题——棋子颜色问题

问题描述&#xff1a; 在任意拿出黑白两种颜色的棋子共 n 个&#xff0c;随机排成一个圆圈。然后根据以下规则放置棋子&#xff1a; 在两颗颜色相同的棋子中间放一颗黑色棋子在两颗颜色不同的棋子中间放一颗白色棋子 放完后撤掉原来所放的棋子&#xff0c;重复以上过程&…

仿某知识蝉在线学习副业项目知识付费系统小程序源码

一、仿知识蝉知识付费系统源码简介 知识付费系统&#xff0c;集合了图文、音频、视频、直播授课&#xff0c;专栏&#xff0c;品牌商城等主流功能和付费形式&#xff0c;并且包含多种多样的营销方案和互动模块&#xff0c;打造属于自己的知识付费系统。 安装步骤&#xff1a;…

聚星文社的工具使用0.2.9版本

聚星文社是一个在线写作社区&#xff0c;提供多种工具供用户使用。以下是聚星文社的工具使用说明&#xff1a; 聚星文社的工具https://docs.qq.com/doc/DRU1vcUZlanBKR2xy 写作工具&#xff1a;聚星文社提供了一个强大的在线写作工具&#xff0c;包括富文本编辑器、字数统计、拼…

计算机毕业设计选题推荐-民宿管理系统-酒店预定系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

windows下TortoiseSVN切换账号的方法

前言 在项目开始初期的时候大家会使用一个默认账号,后面会根据需要给每个人分配各自的个人账号,这个时候就需要重登陆新的svn账号,下面就是讲解下怎样在windows下修改登录TortoiseSVN的账号。 方法 1.首先在桌面右键&#xff0c;选择TortoiseSVN-settings 2.进入设置页面&a…

Android常见的界面布局

目录 ​前言 1.线性布局LinearLayout 2.相对布局RelativeLayout 3.表格布局TableLayout 4.网格布局GridLayout 实现一个计算器界面 改Button按钮颜色 5.帧布局FrameLayout 前言 在Android应用程序中&#xff0c;界面是由布局和控件组成的。控件是功能单元&#xff0c;负…