py大法好,让你解放双手。

脚本环境

python环境,selenium库,Chrome  webdriver驱动等。

源码

# coding=utf-8
import datetime
import logging
import os
import time
import traceback from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.chrome.options import Options # 日志
def get_logger(name):
log = logging.getLogger(name)
log.setLevel(logging.DEBUG)
# Standard output handler
sh = logging.StreamHandler()
sh.setLevel(logging.DEBUG)
sh.setFormatter(logging.Formatter('%(levelname)s - %(name)s:%(lineno)s: %(message)s'))
log.addHandler(sh)
return log
logger = get_logger(__file__) def work(browser):
qq=12345678 browser.get('https://user.qzone.qq.com/{}/main'.format(qq))
browser.switch_to.frame('login_frame')
time.sleep(2)
try:
browser.find_element_by_id('switcher_plogin').click()
browser.find_element_by_id('u').clear()
#你的qq账号
browser.find_element_by_id('u').send_keys('你的qq账号')
browser.find_element_by_id('p').clear()
#你的qq密码
browser.find_element_by_id('p').send_keys('你的账号密码')
browser.find_element_by_id('login_button').click()
time.sleep(2)
#打开留言板
writeLog()
while(True):
browser.get('https://user.qzone.qq.com/{}/334'.format(qq))
browser.switch_to.frame('tgb')
#点击批量管理
time.sleep(2)
mouse = browser.find_element_by_id('btnToSet')
ActionChains(browser).move_to_element(mouse).perform()
time.sleep(1)
browser.find_element_by_id('btnBatch').click()
browser.find_element_by_id('chkSelectAll').click()
browser.find_element_by_id('btnDeleteBatchBottom').click()
time.sleep(1)
browser.switch_to.parent_frame()
time.sleep(2)
browser.find_element_by_id('dialog_main_1').find_element_by_class_name('qz_dialog_layer_op').find_element_by_class_name('qz_dialog_layer_sub').click()
time.sleep(2)
except:
print("failure2")
print(traceback.format_exc())
writeLog() # 写错误日志并截图
def writeLog():
# 组合日志文件名(当前文件名+当前时间).比如:case_login_success_20150817192533
basename = os.path.splitext(os.path.basename(__file__))[0]
logFile = "log/"+basename + "-" + datetime.datetime.now().strftime("%Y%m%d%H%M%S") + ".log"
logging.basicConfig(filename=logFile)
s = traceback.format_exc()
logging.error(s)
browser.get_screenshot_as_file("./" + logFile + "-screenshot_error.png") if __name__ == "__main__":
chrome_options = Options()
#chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--no-sandbox')
browser = webdriver.Chrome(options=chrome_options) # Chrome界面
# browser = webdriver.PhantomJS() # 无界面
work(browser)
browser.quit()

python基于selenium实现自动删除qq空间留言板的更多相关文章

  1. curl之采集QQ空间留言

    目录 主要流程解析 注意事项 扩展 完整代码示例 采集效果一览 主要流程解析 首先,打开浏览器登录QQ空间并访问留言列表 由于QQ空间的链接是https,curl方式请求https链接需要突破http ...

  2. python+selenium+requests爬取qq空间相册时遇到的问题及解决思路

    最近研究了下用python爬取qq空间相册的问题,遇到的问题及解决思路如下: 1.qq空间相册的访问需要qq登录并且需是好友,requests模块模拟qq登录略显麻烦,所以采用selenium的dri ...

  3. 怎么批量删除qq空间说说

    1.打开自己的QQ空间 - 说说——右击说说审查元素,打开审查元素.或者直接按f12也可以. 2.在这里我们看到很多分类 3.点击 Console,进入Console项 4.粘贴删除说说的代码,代码为 ...

  4. 关于恶意说说自动在QQ空间转发的机制

    有些很讨厌的带链接说说,只要你在手机打开它,就会自动转发,内容极其不雅 一怒之下我决定看个究竟首先,在此页开头有此关键语句: <iframe src="http://rtb.map.q ...

  5. [Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍

    前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索"Eastmount"关键字及截图的功能.而这篇文章主要简单介绍如何实现自动登录163邮箱,同时 ...

  6. php模拟用户自动在qq空间发表文章的方法

    我们这里是一个简单的利用php来模拟登录后再到QQ空间发送文章的一个简单的程序,有需要的朋友可以参考,或改进可以给我意见,代码如下: <?php //模拟get post请求函数 http:// ...

  7. 批量删除QQ空间说说

    第一步:用电脑打开浏览器登录你的QQ空间 第二步:点击你的说说栏目 第三步:按下电脑的F12键或者点击右上角的菜单一栏,点击开发者工具 第四步:看到右半边屏幕,找到一个叫Console的菜单,并且点击 ...

  8. 便捷删除QQ空间说说

    用Chrome打开QQ空间说说(心情),按F12,在Console里面粘贴以下代码,按回车 var delay = 1000; function del() { document.querySelec ...

  9. QQ空间留言的JS

    直接上代码吧... var i=0; var time; function test(str) { i++; document.getElementById('tgb').contentWindow. ...

随机推荐

  1. JavaScript教程大纲

    因为考虑到Python的接受难度,改为推广较为简单和流行的JavaScript.先列主要参考资料:         JavaScript权威指南(第6版):http://book.douban.com ...

  2. 文本分类学习 (七)支持向量机SVM 的前奏 结构风险最小化和VC维度理论

    前言: 经历过文本的特征提取,使用LibSvm工具包进行了测试,Svm算法的效果还是很好的.于是开始逐一的去了解SVM的原理. SVM 是在建立在结构风险最小化和VC维理论的基础上.所以这篇只介绍关于 ...

  3. 安装Redis 编译make gcc: error trying to exec 'cc1': execvp: 没有该文件或目录的错误

    Linux(Redhat) make: gcc: error trying to exec 'cc1': execvp: 没有该文件或目录的错误 排查错误: 1.检查gcc.gcc-c++是否安装rp ...

  4. js流程语句

    一.跳转语句1.break; 终止整个循环,不再进行判断2.continue; 终止本次循环,接着去判断是否执行下次循环 二.选择(判断)结构1.if 如果               if(条件1) ...

  5. [译文]Domain Driven Design Reference(三)—— 模型驱动设计的构建模块

    本书是Eric Evans对他自己写的<领域驱动设计-软件核心复杂性应对之道>的一本字典式的参考书,可用于快速查找<领域驱动设计>中的诸多概念及其简明解释. 其它本系列其它文章 ...

  6. 谈谈对Javascript构造函数和原型对象的理解

    对象,是javascript中非常重要的一个梗,是否能透彻的理解它直接关系到你对整个javascript体系的基础理解,说白了,javascript就是一群对象在搅..(哔!).   常用的几种对象创 ...

  7. SSM-SpringMVC-02:SpringMVC最简单的小案例

     ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 咱们这个案例做什么? 就是用处理器代替Servlet处理请求 开发步骤: 1.引入jar包 <!--单 ...

  8. C#温故而知新系列 -- 闭包

    闭包的由来 要说闭包的由来就不得不先说下函数式编程了.近几年函数式编程也是比较火热,我们先来看看函数式编程的一些基本的特性这个有助于我们理解闭包的由来. 函数式编程 函数式编程是一种编程模型,他将计算 ...

  9. Linux下启动时间优化专题

    1. 过往优化总结 陆陆续续在Linux进行启动时间优化,之前有两份文档,分别从内核和用户空间两个方向进行了优化. <Android/Linux boot time分析优化>和<Bu ...

  10. Spring Webflux: Kotlin DSL [片断]

    原文链接:https://dzone.com/articles/spring-webflux-kotlin-dsl-snippets 作者:Biju Kunjummen 译者:Jackie Tang ...