博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 获取大乐透中奖结果
阅读量:4624 次
发布时间:2019-06-09

本文共 4775 字,大约阅读时间需要 15 分钟。

实现思路:

  1.通过urllib库爬取http://zx.500.com/dlt/页面,并过滤出信息

  2.将自己的买的彩票的号与开奖号进行匹配,查询是否中奖

  3.将中奖结果发生到自己邮箱

 

caipiao.py  #获取最新一期彩票开奖结果

# -*- coding:utf-8 -*-# @Time: 2019-08-05 9:48import reimport urllibimport timeimport sysdef get_winnum():    datapath = sys.path[0]    datasuffix = 'txt'    if (len(sys.argv)>1):        datapath = sys.argv[1]        datasuffix = sys.argv[2]    def getHtml(url):        html = urllib.urlopen(url)        return html.read()    html = getHtml("http://zx.500.com/dlt/")    reg =  ['
([0-9]\d*).*
'] reg.append('
  • ([0-9]\d*)
  • ') reg.append('
  • ([0-9]\d*)
  • ') outstr = ""; for i in range(len(reg)): page = re.compile(reg[i]) rs = re.findall(page,html) for j in range(len(rs)): outstr+= rs[j] + "," #print time.strftime('%Y-%m-%d',time.localtime(time.time()))+":"+outstr[:-1] with open(datapath+'/lot_500_dlt.'+datasuffix, 'a') as f: f.write(time.strftime('%Y-%m-%d',time.localtime(time.time()))+":"+outstr[:-1]+'\n')if __name__ == '__main__': get_winnum()

    sendmail.py  #发送邮件

    # -*- coding:utf-8 -*-# Author: xueminchao# @Time: 2019-08-05 15:00import smtplibfrom email.mime.text import MIMETextdef  mail(sub,cont):    sender = 'xxxx@qq.com'   #发送人邮箱    passwd = "xxxx" #发送人邮箱授权码    receivers = 'xxxxxx@qq.com' #收件人邮箱    subject = sub#主题    content = cont    #正文    msg = MIMEText(content,'plain','utf-8')    msg['Subject'] = subject    msg['From'] = sender    msg['TO'] = receivers    try:        s = smtplib.SMTP_SSL('smtp.qq.com',465)        s.login(sender,passwd)        s.sendmail(sender,receivers,msg.as_string())        print('发送成功')    except Exception:        print('发送失败')if __name__ == '__main__':    mail(subject,content)

    query_win.py  #查询是否中奖

    # -*- coding:utf-8 -*-# Author: # @Time: 2019-08-05 10:08import osimport sysimport caipiaoimport send_maildef win_rules(num_list,last_results):    my_blue =  num_list[0:5]    my_red = num_list[5:]    result_blue = last_results[0:5]    result_red = last_results[5:]    same_blue = [l for l in my_blue if l in result_blue]    same_red  = [l for l in my_red if l in result_red ]    same_num_blue = len(same_blue)    same_num_red = len(same_red)    subject="大乐透中奖查询"    content="未中奖"        #9等奖    if same_num_blue == 5 and same_num_red == 2:        print("\033[1;31;0m你已经中了一等奖,中奖号码为 %s \033[0m" % num_list)        content = "你已经中了一等奖,中奖号码为 " + str(num_list)    elif same_num_blue == 5 and same_num_red == 1:        print("\033[1;35;0m你已经中了二等奖,中奖号码为 %s \033[0m" % num_list)        content = "你已经中了二等奖,中奖号码为 " + str(num_list)    elif same_num_blue == 5:        print("\033[1;33;0m你已经中了三等奖, 中奖号码为 %s \033[0m" % num_list)        content = "你已经中了三等奖,中奖号码为 " + str(num_list)    elif same_num_blue == 4 and same_num_red == 2:        print("\033[1;32;0m你已经中了四等奖, 中奖号码为 %s \033[0m" % num_list)        content = "你已经中了四等奖,中奖号码为 " + str(num_list)    elif same_num_blue == 4 and same_num_red == 1:        print("\033[1;32;0m你已经中了五等奖, 中奖号码为 %s \033[0m" % num_list)        content = "你已经中了一等奖,中奖号码为 " + str(num_list)    elif same_num_blue == 3 and same_num_red == 2:         print("\033[1;34;0m你已经中了六等奖, 中奖号码为 %s\033[0m" % num_list)         content = "你已经中了六等奖,中奖号码为 " + str(num_list)    elif same_num_blue == 4:        print("\033[1;34;0m你已经中了七等奖, 中奖号码为 %s \033[0m" % num_list)        content = "你已经中了七等奖,中奖号码为 " + str(num_list)    elif (same_num_blue == 2 and same_num_red == 2) or (same_num_blue == 3 and same_num_red == 1):        print("\033[1;34;0m你已经中了八等奖, 中奖号码为 %s \033[0m " % num_list)        content = "你已经中了八等奖,中奖号码为 " + str(num_list)    elif (same_num_blue == 1 and same_num_red == 2) or (same_num_red == 2) or (same_num_blue == 2 and same_num_red == 1):        print("\033[1;36;0m你已经中了九等奖, 中奖号码为 %s \033[0m " % num_list)        content = "你已经中了九等奖,中奖号码为 " + str(num_list)    else:        print("sorry,你没有中奖!!! ")        content = "未中奖"+ "本次开奖号码为"+ str(last_results)    send_mail.mail(subject, content)if __name__ == '__main__':    caipiao.get_winnum()    datepath = datapath = sys.path[0]    fname="lot_500_dlt.txt"    fmy_num="my_num.txt"    with open(datapath+'/'+ fname,'r') as f:        lines = f.readlines()   #读取所有行        last_line = lines[-1].strip('\n')    #获取最新的彩票号码    last_results=last_line.split(",")[1:]    #查询是否中奖,获取自己的号码    with open(datapath+'/'+ fmy_num,'r') as f:        lines= f.readlines()        for i in lines:            i=i.strip('\n')            num=i.split(',')            win_rules(num,last_results)

     

    设置为定时任务

    30 21 * * 6 /usr/bin/python  /home/xmc/appl/caipiao/query_win.py  >  /dev/null 2>&1 &

    说明:

      my_num.txt 是自己买的彩票号码存放位置,注意数字必须为两位数,并且以逗号分隔,每一组为一行

    11,16,20,27,34,03,0906,14,18,22,23,10,1209,14,18,33,34,03,12

     参考

    https://www.jianshu.com/p/a3ddf9333b3f

      

     

    转载于:https://www.cnblogs.com/xmc2017/p/11303586.html

    你可能感兴趣的文章
    MySQL体系结构
    查看>>
    Nginx-日志切割
    查看>>
    219. Insert Node in Sorted Linked List【Naive】
    查看>>
    CentOS下安装mysql及配置使用
    查看>>
    Sublime Text3配置Vue 语法
    查看>>
    验证控件:RegularExpressionValidator
    查看>>
    hdu1166 线段树单点修改与区间查询
    查看>>
    asp.net -mvc框架复习(7)-基于MVC搭建用户登录项目框架
    查看>>
    CSS background-clip 属性
    查看>>
    python中函数作用域
    查看>>
    C#版清晰易懂TCP通信原理解析(附demo)
    查看>>
    系统自带的粒子系统
    查看>>
    Laravel 框架的主要版本
    查看>>
    pandas学习笔记 - 常见的数据处理方式
    查看>>
    云监控中的告警
    查看>>
    大题的简单解答
    查看>>
    CSS3复选框动画
    查看>>
    Base64.java 工具类
    查看>>
    ExtJS遮罩层Ext.loadMask
    查看>>
    ArcPy开发教程2-管理地图文档1
    查看>>