我用两行代码清空了掘金沸点

背景

手痒的一天,看了眼自己之前发的掘金沸点,感觉有一种上学时发的中二的QQ空间日志。

然后想着删掉一些吧,不然岂不是暴露了我喜欢瞎折腾的本性。

然后我打开"创作者中心"-"内容管理"-"沸点管理",耐心的一条一条删除......

两分钟过去了,看着还剩 14 页的沸点......

人麻了。

分析

作为一个程序员,我感觉不能这么干下去了......

于是,我干了这么几件事:

  • F12 检查下页面,发现了"删除"的 HTML 元素
  • 点击"删除"按钮,看到了确认弹窗,顺带找了下"确定"按钮是哪个 HTML 元素
  • 分析完毕,心里有谱了。

动手

接下来的事情就很简单,我只需要先这样,然后那样,最后再这样,应该就成了。

哈哈,废话不多说,我们先在浏览器里这样:

scss 复制代码
// 在控制台运行下看看呢
document.getElementsByClassName('byte-dropdown-item')[0].click();

然后,我们再继续这样:

scss 复制代码
// 弹窗出来后,再执行下面的代码
document.getElementsByClassName('btn-confirm')[0].click();

最后,沸点就消失了。

优化

两行代码,让我省掉了半分钟点击的时间,但还是挺累。

作为程序员,必须优化呀。

于是,我写了个方法:

scss 复制代码
function deleteShortMsg() {
  const msgDeleteElements = document.getElementsByClassName('byte-dropdown-item');
  if (msgDeleteElements.length > 0) {
    msgDeleteElements[0].click()
    setTimeout(() => {
      const confirmBtnElements = document.getElementsByClassName('btn-confirm')
      if (confirmBtnElements.length > 0) {
        confirmBtnElements[0].click()
      }
    }, 1000)
  }
}
// 调用
setInterval(deleteShortMsg, 2000)

当我敲下回车,边喝水边看着沸点就在我眼前,一个一个的消失了。

后来

又过了几局连连看的功夫,我的沸点就跟我的口袋一样干净了......

忠告

最后我只想说:不要尝试!不要尝试!不要尝试!

小结

当然,这不是我第一次干类似的事了。

之前的某一天,我偶然打开自己的 QQ 空间,翻着那些不忍直视的文字,就萌生了类似的想法。

所以这算是我把经验挪了过来,原理都差不多。

我在这里还是简单分享下我的思考过程以及想法:

  • 当我们有类似需求的时候,可以先总结出来这些重复性步骤中的核心部分,比如是不是要点开某个元素,然后会出来某个确认弹窗,再点击某个元素,就会达到我们的目的。总结下来就是,尽可能的抽象出来我们要模拟的流程,而且越精准越好
  • 之后再去定位这些关键步骤的元素,因为是 HTML 页面,所以可以考虑用到类似"getElementsByClassName" 的方法。需要注意的是,要注意分析触发元素进入下一个步骤的操作,有些是点击,有些则是鼠标移动,比如掘金的沸点,就用到了"mouseenter" 事件,因此要有耐心的去分析。
  • 最后,这个不仅仅可以用于帮我们干一些简单的重复性操作,其实再做一些基础的爬虫模拟方面,也是很有帮助的。因为有很多简单的爬虫,就可以用无头浏览器,通过代码的模拟人为操作的方式,把数据抓取出来,最后生成文件供我们使用。

至此,一个生活小妙招分享给大家,希望你们都用不到。哈哈。

相关推荐
梦曦i9 分钟前
0.8.2 新增 backFallback 配置,无 tabbar 页返回无忧
前端·uni-app x
Amos_Web13 分钟前
Rspack 源码解析(三十四):rspack_hook 与宏系统如何用过程宏生成异步 Hook 与插件
前端
恋猫de小郭17 分钟前
感人,Flutter 居然有了一个超实用提案,期待落地
android·前端·flutter
wordbaby22 分钟前
为什么 Apifox 能调通,浏览器却报跨域?一次“CORS Error + 403”联调排坑实录
前端
2603_9658966229 分钟前
JavaScript 原型与原型链
开发语言·前端·javascript
Amos_Web29 分钟前
通过 Rspack 源码学 Rust(四):用 `Option<T>` 表达“查询可能没有结果”
前端
朋友圈自动点赞工具35 分钟前
Ruby方法查找:对象不存方法
开发语言·前端·ruby·科技资讯
晓得迷路了39 分钟前
栗子前端技术周刊第 152 期 - Rspack 2.3、TypeScript 7.1 Beta、Bun 1.4.4...
前端·javascript·css
普通人61 小时前
CSS-box-sizing-使用指南
开发语言·前端·css·1024程序员节
风骏时光牛马1 小时前
AI开源工具一站式尝鲜体验
前端