#!/usr/bin/env/python3
# -*- coding:utf-8 -*-
'''
Author:leo
Date&Time:2020/11/20 11:11
Project:Python3  FileName:douban_comment.py
Comment:
背景介绍:之前在豆瓣发言有点凡尔赛体,想着批量删除评论,于是写了这个脚本。
主要流程:
1.登录;
2.进入-我的发帖;
3.进入-帖子详情;
4.依次删除评论(直接确定和页面确定)
'''
# -*- coding: utf-8 -*-
from selenium import webdriver
from tqdm import tqdm
import timeclass AppDynamicsJob():ROBOT_LIBRARY_SCOPE = 'GLOBAL'def __init__(self):self.driver = webdriver.Chrome(r"D:\Mytest\config\chromedriver.exe")self.driver.implicitly_wait(30)def isElementExitst(self,driver,element):self.driver.implicitly_wait(5)flag = Truetry:driver.find_element_by_xpath(element)return flagexcept:flag = Falsereturn flagself.driver.implicitly_wait(20)def wait_time_progress_bar(self, time_secend,message="等待时间"):pbar = tqdm([wait_second for wait_second in range(int(time_secend) + 1)][1:])for char in pbar:time.sleep(1) pbar.set_description("----{} {:<2}".format(message, char))def test_login(self):print("\n----开始登陆----\n")driver = self.driverdriver.get("https://accounts.douban.com/passport/login")print(driver.title)driver.find_element_by_xpath('//li[text()="密码登录"]').click()time.sleep(0.5)driver.find_element_by_id("username").clear()driver.find_element_by_id("username").send_keys("123")driver.find_element_by_id("password").clear()driver.find_element_by_id("password").send_keys("123")driver.find_element_by_xpath('//a[text()="登录豆瓣"]').click()def test_delete_post(self):print("\n----进入小组----\n")driver = self.drivermainWindows = driver.current_window_handledriver.find_element_by_xpath('//*[text()="小组"]').click()self.wait_time_progress_bar(1, "等待跳转")print(driver.title)for window in driver.window_handles:driver.switch_to.window(window)if window != mainWindows:breakprint(driver.title)send_list = driver.find_elements_by_xpath("//tbody/tr")# for page in range(3, len(send_list))[::1]:for page in [4]:while self.isElementExitst(self.driver, "//*[contains(text(),'发起')]")==False:time.sleep(1)driver.find_element_by_xpath("//*[contains(text(),'发起')]").click()while self.isElementExitst(self.driver, '//tr[last()]/td/a[@title]')==False:time.sleep(1)driver.find_element_by_xpath(f'//tr[{page}]/td/a[@title]').click()delete_button = self.isElementExitst(self.driver, "//*[text()='删除']")while delete_button:print("\n----开始删除----\n")print(driver.title)self.wait_time_progress_bar(1, "开始删除")mouseAddr = self.driver.find_element_by_xpath("//*[text()='删除']")driver.execute_script("arguments[0].click();", mouseAddr)driver.switch_to.alert.accept()self.wait_time_progress_bar(1, "等待跳转")cur_titile = driver.titleif "删除小组讨论" in cur_titile:driver.find_element_by_xpath('//input[@value="确定"]').click()self.wait_time_progress_bar(1, "等待跳转")delete_button = self.isElementExitst(self.driver, "//*[text()='删除']")else:driver.get("https://www.douban.com/group/")def test_delete_replay(self):print("\n----进入小组----\n")driver = self.drivermainWindows = driver.current_window_handledriver.find_element_by_xpath('//*[text()="小组"]').click()self.wait_time_progress_bar(1, "等待跳转")print(driver.title)for window in driver.window_handles:driver.switch_to.window(window)if window != mainWindows:breakprint(driver.title)send_list = driver.find_elements_by_xpath("//tbody/tr")for page in range(1, len(send_list), 1):while self.isElementExitst(self.driver, "//*[contains(text(),'回应(')]")==False:time.sleep(1)driver.find_element_by_xpath("//*[contains(text(),'回应(')]").click()while self.isElementExitst(self.driver, '//tr[last()]/td/a[@title]')==False:time.sleep(1)driver.find_element_by_xpath(f'//tr[{page}]/td/a[@title]').click()delete_button = self.isElementExitst(self.driver, '//h4/a[text()="123"]/../../../../div[2]//a[text()="删除"]')while delete_button:try:print("\n----开始删除----\n")print(driver.title.encode("gbk", "ignore").decode("gbk"))self.wait_time_progress_bar(1, "开始删除")mouseAddr = self.driver.find_element_by_xpath('//h4/a[text()="123"]/../../../../div[2]//a[text()="删除"]')driver.execute_script("arguments[0].click();", mouseAddr)driver.switch_to.alert.accept()self.wait_time_progress_bar(1, "等待跳转")cur_titile = driver.titleif "删除小组讨论" in cur_titile:driver.find_element_by_xpath('//input[@value="确定"]').click()self.wait_time_progress_bar(1, "等待跳转")delete_button = self.isElementExitst(self.driver, '//h4/a[text()="123"]/../../../../div[2]//a[text()="删除"]')except Exception as e:print(e)else:driver.get("https://www.douban.com/group/")send_list = driver.find_elements_by_xpath("//tbody/tr")
if __name__ == "__main__":test = AppDynamicsJob()test.test_login()# test.test_delete_post()test.test_delete_replay()

D:\TestFiles\Python3\python.exe test_ui/douban_comment.py

----开始登陆----

登录豆瓣

----进入小组----

----等待跳转 1 : 100%|██████████| 1/1 [00:01<00:00,  1.00s/it]
豆瓣
我的小组讨论

----开始删除----

0%|          | 0/1 [00:00<?, ?it/s]…
----开始删除 1 : 100%|██████████| 1/1 [00:01<00:00,  1.00s/it]
----等待跳转 1 : 100%|██████████| 1/1 [00:01<00:00,  1.00s/it]

----开始删除----


----开始删除 1 : 100%|██████████| 1/1 [00:01<00:00,  1.00s/it]
----等待跳转 1 : 100%|██████████| 1/1 [00:01<00:00,  1.00s/it]
----等待跳转 1 : 100%|██████████| 1/1 [00:01<00:00,  1.00s/it]

----开始删除----


----开始删除 1 : 100%|██████████| 1/1 [00:01<00:00,  1.00s/it]
----等待跳转 1 : 100%|██████████| 1/1 [00:01<00:00,  1.00s/it]
----等待跳转 1 : 100%|██████████| 1/1 [00:01<00:00,  1.00s/it]

----开始删除----


----开始删除 1 : 100%|██████████| 1/1 [00:01<00:00,  1.00s/it]
----等待跳转 1 : 100%|██████████| 1/1 [00:01<00:00,  1.00s/it]
----等待跳转 1 : 100%|██████████| 1/1 [00:01<00:00,  1.00s/it]

----开始删除----


----开始删除 1 : 100%|██████████| 1/1 [00:01<00:00,  1.00s/it]
----等待跳转 1 : 100%|██████████| 1/1 [00:01<00:00,  1.00s/it]

Process finished with exit code 0

【Web_UI自动化_Python3_豆瓣批量删帖_seleniumtqdm】登录豆瓣-进入详情-批量删除留言-批量删除帖子_20201130相关推荐

  1. 【脚本共享】CSDN版主批量删帖工具。

    如果你不是版主,那么这个工具对你作用不大,请绕路. 使用方法: 1.复制如下HTML代码到记事本中: 2.保存文件,编码为"UTF8",扩展名为".HTA": ...

  2. 微信小程序系列(7)如何用微信小程序写一个论坛?贴心代码详解(五)删帖页【完结篇】

    源代码已开源,如果对你有帮助可以点个星:https://github.com/linkaimin/xdzs 写论坛不难,重点是各页面之间的信息传递! 先放成品图,虽然有点单调....但是麻雀虽小五脏俱 ...

  3. 私删手机照片?豆瓣道歉了

    每经编辑:毕陆名 针对近日网友爆料其保存在手机相册的图片无故被豆瓣App删掉,需要从回收站内才能找回. 昨日晚间,豆瓣发布说明称,该Bug的发生概率较低,将在下个版本中修复. 豆瓣在声明中表示,收到个 ...

  4. 网络营销不是收费删帖:为网络营销正本清源

    摘要:互联网在致力于消灭各种信息不对称,但在互联网本身,又产生了大量的信息不对称.于是,很多互联网人,尤其是西安这样一些二线城市的互联网人,这边和北京上海甚至是国外进行着最新互联网理念的对话,但转过头 ...

  5. 批量删微博丨2023简易版本控制台批量删除微博代码

    批量删微博丨简易版批量删除微博方法 微博点击头像到全是自己微博动态的个人主页 复制以下内容到浏览器控制台回车执行 function deleteMessage() {// 下箭头let iDom = ...

  6. 豆瓣自动顶帖机器人JS脚本

    一.前言 网上很多基于python的豆瓣自动顶帖程序,但我选择JS脚本的实现方式,主要考虑了以下几点: 开发效率.运营成本是首要的.短平快的产出,后续可以转交别人,不需要花费我时间维护: 不需要太快的 ...

  7. 审查删帖、禁止讨论!爆出惊天漏洞的Facebook给自己火上浇油

    李根 问耕 发自 凹非寺  量子位 报道 | 公众号 QbitAI 敏感时间点,敏感公司,最敏感的用户数据,又一次泄露了. 而且最尴尬的是:曝出如此惊天漏洞后,这家公司竟然还玩起审查删帖.禁止讨论那一 ...

  8. 百度贴吧如何避免被删帖

    如果在贴吧推广,被删帖是经常遇到的情况,删帖又分为吧主删帖和系统删帖,那么应该如何避免呢? 1.尽量在无吧主的贴吧发帖.因为有吧主的贴吧管理都非常严格,你甚至都发不了软文 2.系统删帖的算法之一就是你 ...

  9. 微信支持批量删好友了,还有两点变化~

    iOS版微信8.0.17正式版来了,新增了七大功能,来看看! 安卓微信8.0.18正式版来了:朋友圈有新变化~ 分享了微信最新版的新功能,就在昨天,发现iOS版微信最新版又有新变化. iOS版微信最新 ...

最新文章

  1. 机器学习中的集成学习模型实战完整讲解
  2. 高可用性网络的简单配置方案(一)
  3. python爬虫实例-python3.7简单的爬虫实例详解
  4. python mk趋势检验_【C语言】MK趋势检验C语言代码
  5. B类产品的科学化设计与分析流程
  6. centOS 5.5 安装 ORACLE 11G RAC 问题汇总
  7. pmp思维导图 第六版_PMP考试技巧攻略(上)
  8. python 数据结构包_python 中numpy科学计算工具包——基础数据结构
  9. 史上最短命iPhone,销量惨淡、即将停产!
  10. 数据库的相关语句(where,order by)
  11. python分割压缩_Python读取分割压缩TXT文本文件实例
  12. 神经网络-Neural Network 简介
  13. SDN第四次上机作业
  14. AcWing 902. 最短编辑距离(线性DP)
  15. 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字(简单易懂)
  16. 64位java没有javaw.exe_javaw.exe路径错误导致eclipse无法启动
  17. linux 文件管理系统
  18. 关闭445端口bat脚本
  19. NXP JN5169使用UART发送数据
  20. 国内国外常用外包平台大全汇总!

热门文章

  1. 高并发大数据量的数据库的设计与优化
  2. 抖音短视频与快手APP相比,谁更胜一筹?
  3. 说说欧朋浏览器的中国式生存法则
  4. huggingface HF_HOME 更换缓存目录
  5. 使用spring web flow遇到的问题-1
  6. python爬取今日头条街拍,Python3今日头条街拍爬虫
  7. 遇见未知的自己 - 张德芬 - 【重要书摘区!】
  8. 各大银行的软件开发中心
  9. a链接使用ajax 页面跳转,关于a标签的链接跳转
  10. pt 软件安装及pt-kill 用法