• 关于 使用python向qq好友发送消息(对爬虫的作用----当程序执行完毕或者报错无限给自己qq发送消息,直到关闭)


    以前看到网上一些小程序,在处理完事物后会自动发送qq消息,但是一直搞不懂是说明原理。也在网上找过一些python登陆qq发送消息的文字,但是都太复杂了。今天偶然看到一篇文章,是用python调用win32的接口发送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]Alex Martelli的Borg类
    Python Frame objects 和Traceback objects
    2012美国汽车销量排行
    Python中统计函数的运行耗时
    Python显示函数的调用者
    Python的内置函数map
    [深入Python]简单事情复杂化:Python计算阶乘
    Solaris查看线程
    VVR常用操作
  • 原文地址:https://www.cnblogs.com/lilinpging/p/8304941.html
Copyright © 2020-2023  润新知