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