python基于selenium实现自动删除qq空间留言板
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空间留言板的更多相关文章
- curl之采集QQ空间留言
目录 主要流程解析 注意事项 扩展 完整代码示例 采集效果一览 主要流程解析 首先,打开浏览器登录QQ空间并访问留言列表 由于QQ空间的链接是https,curl方式请求https链接需要突破http ...
- python+selenium+requests爬取qq空间相册时遇到的问题及解决思路
最近研究了下用python爬取qq空间相册的问题,遇到的问题及解决思路如下: 1.qq空间相册的访问需要qq登录并且需是好友,requests模块模拟qq登录略显麻烦,所以采用selenium的dri ...
- 怎么批量删除qq空间说说
1.打开自己的QQ空间 - 说说——右击说说审查元素,打开审查元素.或者直接按f12也可以. 2.在这里我们看到很多分类 3.点击 Console,进入Console项 4.粘贴删除说说的代码,代码为 ...
- 关于恶意说说自动在QQ空间转发的机制
有些很讨厌的带链接说说,只要你在手机打开它,就会自动转发,内容极其不雅 一怒之下我决定看个究竟首先,在此页开头有此关键语句: <iframe src="http://rtb.map.q ...
- [Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍
前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索"Eastmount"关键字及截图的功能.而这篇文章主要简单介绍如何实现自动登录163邮箱,同时 ...
- php模拟用户自动在qq空间发表文章的方法
我们这里是一个简单的利用php来模拟登录后再到QQ空间发送文章的一个简单的程序,有需要的朋友可以参考,或改进可以给我意见,代码如下: <?php //模拟get post请求函数 http:// ...
- 批量删除QQ空间说说
第一步:用电脑打开浏览器登录你的QQ空间 第二步:点击你的说说栏目 第三步:按下电脑的F12键或者点击右上角的菜单一栏,点击开发者工具 第四步:看到右半边屏幕,找到一个叫Console的菜单,并且点击 ...
- 便捷删除QQ空间说说
用Chrome打开QQ空间说说(心情),按F12,在Console里面粘贴以下代码,按回车 var delay = 1000; function del() { document.querySelec ...
- QQ空间留言的JS
直接上代码吧... var i=0; var time; function test(str) { i++; document.getElementById('tgb').contentWindow. ...
随机推荐
- EF Code First 数据迁移配置
这里我想讲清楚code first 数据迁移的两种模式,还有开发环境和生产环境数据迁移的最佳实践. 1.1 数据迁移综述 EF Code first 虽然已经有了几种不同的数据库初始化策略,但是大部分 ...
- VueJs(11)---vue-router(进阶2)
vue-router(进阶2) 上篇文章讲了第一篇vue-router相关文章,文章地址:VueJs(10)---vue-router(进阶1) 一.命名路由 有时候,通过一个名称来标识一个路由显得更 ...
- asp.net 六大对象之Request、Response
ASP.NET的六大对象,本质上只是 Context 里面的属性,严格上不是对象. 1.Request-->读取客户端在Web请求期间发送的值 2.Response-->封装了页面执行期后 ...
- 一个能拖动,能调整大小,能更新bind值的vue指令-vuedragx
一. 背景说明 开发一个可自定义组件化门户配置页面,期间采用了vue框架作为前端视图引擎,作为一个刚入手vue的萌新,开发第一个功能就遇到了拦路虎.需要一个拖动并且可改变大小的容器盒子.当时查看vue ...
- token 防止csrf
转自:ttps://www.ibm.com/developerworks/cn/web/1102_niugang_csrf/#icomments 当前防御 CSRF 的几种策略 验证 HTTP Ref ...
- linux下错误的捕获:errno(errno.h)和strerror(string.h)的使用
参考:http://blog.csdn.net/starstar1992/article/details/52756387 linux下错误的捕获:errno和strerror的使用 经常在调用lin ...
- https://doc.opensuse.org/projects/kiwi/doc/
KIWI 是用于创建操作系统映像的系统.映像是带有一个文件的目录,该文件包含操作系统.其应用程序与配置.操作系统的文件系统结构.可能的附加元数据,以及(取决于映像类型)磁盘几何属性和分区表数据.通过 ...
- 【转】tomcat logs 目录下各日志文件的含义
tomcat每次启动时,自动在logs目录下生产以下日志文件,按照日期自动备份 localhost.2016-07-05.txt //经常用到的文件之一 ,程序异常没有被捕获的时候抛出的地方 ...
- eclipse常用快捷键(windows下)
## eclipse常用快捷键(windows下) ## 保存 1.保存当前代码页: ctrl + s 2.保存所有代码页: ctrl + shift + s 代码补全与修正 1.代码快速修正: ct ...
- 前端为什么非要动静分离 说一下CDN托管的意义
大型Web应用对速度的追求并没有止步于仅仅利用浏览器缓存,因为浏览器缓存始终只是为了提升二次访问的速度,对于首次访问的加速,我们需要从网络层面进行优化,最常见的手段就是CDN(Content Deli ...