IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    微博抢红包辅助工具

    admin发表于 2015-10-27 11:08:29
    love 0

    微博抢红包辅助工具

    最近微博上有很多企业在发红包;当然由于你不知道对方什么时候会发红包;经常会出现你打开红包准备开抢的时候却发现已经没有红包了。
    所以我准备弄一个红包提醒工具;简单来说就是你需要提交你要关注的红包页面;脚本自动运行检测有红包可以抢的时候给你发一份邮件提醒;
    剩下的你能不能抢得到就完全看你运气了。
    

    微博红包通知功能

    1.  监控指定页面;
    2.  当发现有红包可以抢
    3.  发送邮件到指定的邮箱里面
    4.  完工
    
    是不是很简单;其实说起来就2个功能
    1. 检测页面是否有红包可以抢
    2. 当有红包抢的时候发送一个邮件
    

    功能分析

    1. 打开红包页面'http://huodong.weibo.com/hongbao/1768198384'
    2. 如果显示分享说明不能抢红包;如果显示抢红包就说明你可以抢了
    3. 所以要做的就是判断这个页面显示的文字了。
    4. 当得到一个可以抢红包的信息之后就可以发送邮件到指定邮箱了
    
    很简单有没有。
    

    首先我们要导入需要用到的库

    import requests
    import re
    import smtplib
    import ConfigParser
    from email.mime.text import MIMEText
    from email.header import Header
    from email.mime.multipart import MIMEMultipart
    

    这里我们用到requests第三方库;请自行下载安装

    判断红包页面是否有红包可以抢

    def weiboHongBao(url):
    '''
    分析指定微博红包页面是否有红包可以领取
    如果有红包可以领取就调用sendMail函数来发送邮件提醒
    '''
    regexGain = u"抢红包"
    regexShare = u"分享"
    r = requests.get(url)
    if r.status_code == 200:
        txt = r.text
        if re.search(regexGain, txt) != None:
            hongbao = re.search(regexGain, txt)
            result = "Have a HongBao"
            print result,url
            sendEmail(url,result)
        elif re.search(regexShare, txt) != None:
            hong = re.search(regexShare, txt)
            result =  "Don't have a HongBao"
            print result,url
        else:
            print "Error"
    
    其实这段代理里面就是用requests下载整个页面的内容;然后用正则表达式去查找
    如果发现可以抢红包就调用发送邮件的函数
    

    发送邮件

    当我们得到有红包可以抢的时候就需要通过发送邮件来通知了
    
    def sendEmail(url, message):
    '''
    发送邮件到指定邮箱地址
    '''
    #获取配置信息
    cf = ConfigParser.ConfigParser()
    cf.read("config.ini")
    mailHost = cf.get("info", "mailHost")
    mailUser = cf.get("info", "mailUser")
    mailPassword = cf.get("info", "mailPassword")
    toMail = cf.get("info", "toMail")
    
    #设置邮件信息
    subject = message
    msg = msg = MIMEMultipart("alternative")
    msg["Subject"] = Header(subject,"utf-8")
    part = MIMEText(subject +';'+ url,"html") #设置以html格式发送内容
    msg.attach(part)
    
    #发送邮件
    smtp = smtplib.SMTP()
    smtp.connect(mailHost) 
    smtp.login(mailUser,mailPassword) 
    smtp.sendmail(mailUser,toMail,msg.as_string())
    print "Send Email Finish"
    smtp.quit() 
    
    这段代理里面为了让代理更易用;所以吧发送邮件的账号密码以及接收邮件的账号放到配置文件里面;
    所以需要用'Python2'里面'ConfigParser'库来解析配置文件的内容。
    

    准备一个检测列表

    前面的weiboHongBao(url)函数需要传入一个url地址;所以我们使用单独的一个文件来保存要检测的红包页面地址。
    这样如果我们需要添加检测url的话会比较简单;不用修改执行代码;
    
    def weiboHongBaoList():
    global info
    info = [
        "http://huodong.weibo.com/hongbao/1610436341", #神州租车
        "http://huodong.weibo.com/hongbao/2411842134", #360
        "http://huodong.weibo.com/hongbao/1830346007", #易到用车
        "http://huodong.weibo.com/hongbao/1768198384", #天猫
        "http://huodong.weibo.com/hongbao/1746687693", #航美传媒
        "http://huodong.weibo.com/hongbao/3535169894"  #百度卫士  
        ]
    return info
    这个代码就是一个列表;负责给weibo.py提供url地址的。
    

    运行结果像这样

    检测列表里面的每一个url发现可以抢就发送邮件
    Don't have a HongBao http://huodong.weibo.com/hongbao/1610436341
    Don't have a HongBao http://huodong.weibo.com/hongbao/2411842134
    Don't have a HongBao http://huodong.weibo.com/hongbao/1830346007
    Don't have a HongBao http://huodong.weibo.com/hongbao/1768198384
    Don't have a HongBao http://huodong.weibo.com/hongbao/1746687693
    Have a HongBao http://huodong.weibo.com/hongbao/3535169894
    Send Email Finish
    [Finished in 3.1s]
    

    完整代理如下

    weibo.py的代码如下

    # /usr/bin/env python
    # encoding:utf-8
    # use Python2
    
    import requests
    import re
    import smtplib
    import ConfigParser
    from email.mime.text import MIMEText
    from email.header import Header
    from email.mime.multipart import MIMEMultipart
    
    #==================================================
    def weiboHongBao(url):
        '''
        分析指定微博红包页面是否有红包可以领取
        如果有红包可以领取就调用sendMail函数来发送邮件提醒
        '''
        regexGain = u"抢红包"
        regexShare = u"分享"
        r = requests.get(url)
        if r.status_code == 200:
            txt = r.text
            if re.search(regexGain, txt) != None:
                hongbao = re.search(regexGain, txt)
                result = "Have a HongBao"
                print result,url
                sendEmail(url,result)
            elif re.search(regexShare, txt) != None:
                hong = re.search(regexShare, txt)
                result =  "Don't have a HongBao"
                print result,url
            else:
                print "Error"
    
    #=======================================================
    def sendEmail(url, message):
        '''
        发送邮件到指定邮箱地址
        '''
        #获取配置信息
        cf = ConfigParser.ConfigParser()
        cf.read("config.ini")
        mailHost = cf.get("info", "mailHost")
        mailUser = cf.get("info", "mailUser")
        mailPassword = cf.get("info", "mailPassword")
        toMail = cf.get("info", "toMail")
    
        #设置邮件信息
        subject = message
        msg = msg = MIMEMultipart("alternative")
        msg["Subject"] = Header(subject,"utf-8")
        part = MIMEText(subject +';'+ url,"html") #设置以html格式发送内容
        msg.attach(part)
    
        #发送邮件
        smtp = smtplib.SMTP()
        smtp.connect(mailHost) 
        smtp.login(mailUser,mailPassword) 
        smtp.sendmail(mailUser,toMail,msg.as_string())
        print "Send Email Finish"
        smtp.quit() 
    
    if __name__ == "__main__":
        import hongbao
        for x in hongbao.weiboHongBaoList():
            #print x
            weiboHongBao(x)
        #sendEmail("http://www.hiadmin.org","OK")
    

    ‘hongbao.py’的代码(就是url列表)

    #! /usr/bin/env python
    #! encoding:utf-8
    
    def weiboHongBaoList():
        global info
        info = [
            "http://huodong.weibo.com/hongbao/1610436341", #神州租车
            "http://huodong.weibo.com/hongbao/2411842134", #360
            "http://huodong.weibo.com/hongbao/1830346007", #易到用车
            "http://huodong.weibo.com/hongbao/1768198384", #天猫
            "http://huodong.weibo.com/hongbao/1746687693", #航美传媒
            "http://huodong.weibo.com/hongbao/3535169894"  #百度卫士  
            ]
        return info
    
    if __name__ == "__main__":
        for i in weiboHongBaoList():
            print i
    

    config.ini配置文件

    [info]
    mailHost = smtp.126.com
    mailUser = userxxxx@126.com
    mailPassword = *******
    toMail = *******@qq.com
    
    接收邮件建议用QQ邮箱;QQ上会弹出提示信息。
    

    怎么样定时运行

    这个小脚本里面没有用定时任务;所以如果你希望定时检测的话windows用户请使用计划任务来执行weibo.py就可以了。
    linux用户你应该知道怎么样用crond
    

    使用说明

    1.  修改config.ini配置文件;填写相应的内容即可
    2.  编辑hongbao.py文件在里面加入你要检测的红包页面
    3.  运行 weibo.py即可啦
    

    完整代码下载地址

    GitHub代码



沪ICP备19023445号-2号
友情链接