关于 使用python向qq好友发送消息(对爬虫的作用----当程序执行完毕或者报错无限给自己qq发送消息,直到关闭)
发送qq消息要求已经登陆qq,而且qq的窗口是独立的,现在新版的qq一般都是将所有的聊天窗口聚合在一起,因此要设置将qq窗口分离,或者将需要发送消息的那个窗口单独分离出来。
上代码吧。
# 原理是先将需要发送的文本放到剪贴板中,然后将剪贴板内容发送到qq窗口
# 之后模拟按键发送enter键发送消息 import win32gui
import win32con
import win32clipboard as w def getText():
"""获取剪贴板文本"""
w.OpenClipboard()
d = w.GetClipboardData(win32con.CF_UNICODETEXT)
w.CloseClipboard()
return d def setText(aString):
"""设置剪贴板文本"""
w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardData(win32con.CF_UNICODETEXT, aString)
w.CloseClipboard() def send_qq(to_who, msg):
"""发送qq消息
to_who:qq消息接收人
msg:需要发送的消息
"""
# 将消息写到剪贴板
setText(msg)
# 获取qq窗口句柄
qq = win32gui.FindWindow(None, to_who)
# 投递剪贴板消息到QQ窗体
win32gui.SendMessage(qq, 258, 22, 2080193)
win32gui.SendMessage(qq, 770, 0, 0)
# 模拟按下回车键
win32gui.SendMessage(qq, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
win32gui.SendMessage(qq, win32con.WM_KEYUP, win32con.VK_RETURN, 0) # 测试
to_who='xxx'
msg='这是测试消息'
send_qq(to_who, msg)
特别说明:to_who中填写的是聊天窗口的名字,而非QQ号码。(也就是是网名或备注名,具体的也可以在任务管理器中查看)
模拟按键
python可以通过win32和windows做各种交互,网上还有一篇文章是批量操作文件的例子,其原理和按键精灵差不多。只是好多参数不懂。就好比上面的发送qq消息的例子,本来想改改其中的方法,跳过剪贴板这一步,可是怎么改都不行,以后再试试。
参考:
http://blog.csdn.net/dahuae/article/details/43969175
http://blog.csdn.net/seele52/article/details/17504925
http://lixxu.iteye.com/blog/417218
http://www.codeweblog.com/%E7%94%A8pywin32%E5%AE%9E%E7%8E%B0windows%E6%A8%A1%E6%8B%9F%E9%BC%A0%E6%A0%87%E5%8F%8A%E9%94%AE%E7%9B%98%E5%8A%A8%E4%BD%9C/
以上转载自http://blog.csdn.net/suzyu12345/article/details/52934328
我们通过这个功能可以为爬虫干什么事情呢?我首先想到的就是利用这个功能可以监控爬虫的进度。比如如果爬取的时间太长,一天两天或者更长,我们不可能一直盯着屏幕,这个时候我们就可以使用这个功能了。
当爬虫程序结束或者报错停止的时候,我们可以给我们自己的qq发送消息,提示我们爬虫结束了。
利用scrapy中pipelines.py文件,如下的方法:
def close_spider(self,spider):
当程序执行完毕的时候,调用上方的代码,提示我们爬虫结束,达到监控的目的
关于 使用python向qq好友发送消息(对爬虫的作用----当程序执行完毕或者报错无限给自己qq发送消息,直到关闭)的更多相关文章
- python已安装了DNS处理模块,执行时却报错ImportError
一.代码: #!/usr/bin/python import dns.resolver ............此处省略 二.故障报错 ubuntu:~/automation/001_base$ py ...
- python爬虫在解析不带引号的json报错的问题解决方案
本例中环境: python3.6.6 demjson-2.2.4 如不看废话请直接看3(下面红体字) 1.近期在爬取代理验证代理的时候发生一个Bug, 就是在验证代理的时候返回的是如下字符串, {ip ...
- spring mvc发送请求404,不能进入处理方法,也不报错
找了很久找不到原因,那多半是字段绑定出错了.如字段不能为空的如int,double,没传给了空:字段是int的,给了double形式的值(1.0)..这些都会使spring mvc自动绑定出错,而且不 ...
- python 调用父类方法, 重写父类构造方法, 不显式调用,会报错
子类不显式调用父类的构造方法,而父类构造函数初始化了一些属性,就会出现问题 如果子类和父类都有构造函数,子类其实是重写了父类的构造函数,如果不显式调用父类构造函数,父类的构造函数就不会被执行,导致子类 ...
- python调用java所有代码都要放在jvm开启的时候调用,否则报错: No matching overloads found for in find. at native\common\jp_method.cpp:127
1.解决方法 开启java虚拟机 jvm 或者先执行结束在关闭java虚拟机jvm
- 深刻:截获windows的消息并分析实例(DefWindowProc),以WM_NCHITTEST举例(Windows下每一个鼠标消息都是由 WM_NCHITTEST 消息产生的,这个消息的参数包含了鼠标位置的信息)
1,回调函数工作机制 回调函数由操作系统自动调用,回调函数的返回值当然也是返回给操作系统了. 2,截获操作系统发出的消息,截获到后,将另外一个消息返回给操作系统,已达到欺骗操作系统的目的. 下面还是以 ...
- 新手常见的python报错及解决方案
此篇文章整理新手编写代码常见的一些错误,有些错误是粗心的错误,但对于新手而已,会折腾很长时间才搞定,所以在此总结下我遇到的一些问题.希望帮助到刚入门的朋友们.后续会不断补充. 目录 1.NameErr ...
- python︱模块加载(pip安装)以及pycharm安装与报错解决方式
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 准备放下R开始学python,真是痛苦,因为找 ...
- 解决忽略VScode中Python插件pylint报错的问题
pylint是VScode中python自带的插件,可以帮助代码规范,美观. 但是有些报错是你不想看到的,你可以选择性的忽略. 例如,在re.compile()中,可以添加参数re.S使. 匹配任意字 ...
随机推荐
- mybatis10--自连接多对一查询
查询老师对应的所有导师的信息 在09的基础上修改dao和mapper文件 public interface TeacherDao { /** * 根据老师的编号查询所有的导师信息 */ Teacher ...
- python __all__
它不仅在第一时间展现了模块的内容大纲,而且也更清晰的提供了外部访问接口. 若__all__的list中未定义,即便有实现也会找不到.
- react子传父
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Oracle课程档案,第十五天
restore:恢复数据文件 recover:写日志 1.redo(roll forward)重做 (前进) 2.undo(roll back) 撤销 (回滚) cp -r:删除一个目录 archiv ...
- org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Access denied for user 'root'@'localhost' (using password:
tationProcessor' to allow for resolving potential circular referencesDEBUG 2018-05-28 11:32:35,016 o ...
- mysql数据库数据的 备份以及还原
数据库备份的3种方式: 例如:mysqldump -uzx_root -p test>/root/test1.sql
- JavaScript基础知识(字符串的方法)
字符串的方法 1.字符串: 在js中被单引号或双引号包起来的内容都是字符串: var t = "true"; console.log(typeof t);// "stri ...
- 谁考了第k名
题目描述: 在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第k名学生的学号和成绩. 输入: 第一行有两个整数,分别是学生的人数n(1≤n≤100),和求第k名学生的k(1≤k ...
- 在IOS应用中打开另外一个应用的解决方案
最近要在IOS中实现一个应用启动另外一个应用的功能,搜了一些资料,使用UIApplication的openURL:的方法就能实现,现在整理和大家分享一下! 注册自定义URL协议 首先被启动的应用需要向 ...
- React中redux表单编辑
reduxForm中反写数据在输入框中,数据是从别的模块拉取 // 编辑应用表单 class EditCode extends React.Component { constructor(props) ...