加入收藏 | 设为首页 | 会员中心 | 我要投稿 鄂州站长网 (https://www.0711zz.com/)- 数据分析、网络、云渲染、应用安全、大数据!
当前位置: 首页 > 编程开发 > Python > 正文

python写一个双色球彩票计算器

发布时间:2020-07-23 13:26:47 所属栏目:Python 来源:互联网
导读:首先声明,赌博一定不是什么好事,也完全没有意义,不要指望用彩票发财。之所以写这个,其实是用来练手的,可以参考这个来预测一些其他的东西,意在抛砖引玉。啰嗦完了,马上开始,先上伪代码打开网址 读取内容内容解析 根据源码得到需爬取内容 1、开奖日期:

首先声明,赌博一定不是什么好事,也完全没有意义,不要指望用彩票发财。之所以写这个,其实是用来练手的,可以参考这个来预测一些其他的东西,意在抛砖引玉。

啰嗦完了,马上开始,先上伪代码

打开网址

读取内容内容解析

根据源码得到需爬取内容

1、开奖日期:2018年8月26日

2、红球

  • 3、篮球

  • 打开数据库连接

    爬取内容写入数据库

    共3个字段

    1、开奖日期

    2、红球,红球使用分号“;”分隔,方便调用和导出

    3、篮球

    在写脚本前,建议先写伪代码,伪代码格式不是固定的,随自己喜好,主要就是在思维及算法落地前,把整个轮廓理清,可以有效降低都快写完了,发现前面有错误,结果导致整个脚本全部更新一遍这种事

    的发生概率

    伪代码解读:

    共分为两个功能块

    一就是抓取彩票数据,这个使用爬虫实现,分别抓取开奖日期、红球区、篮球区,因为考虑双色球的数据量比较庞大,所以这次使用数据库进行存储,选用的是免费又好用的mysql数据库,数据库接口文件使用MySQLdb,这个我以后会单独写一个说明,当然你也可以用文档存储,或者选择别的数据库比如oracle或者nosql的mangodb

    二是用来分析彩票的,即使用彩票数据进行下一期的彩票预测,本次选用的是二项分布,这个在之前的算法里面有,就不重复说明了

    下面先上脚本,再对脚本进行说明

    <span style="color: #800000">'''<span style="color: #800000">
    打开网址
    读取内容
    内容解析
    根据源码得到需爬取内容
    1、开奖日期:2018年8月26日
    2、红球
    <li class="ball_red">03


  • <li class="ball_red">07
    <li class="ball_red">08
    <li class="ball_red">14
    <li class="ball_red">25
    <li class="ball_red">32
    3、篮球
    <li class="ball_blue">06
    打开数据库连接
    爬取内容写入数据库
    共3个字段
    1、开奖日期
    2、红球,红球使用分号“;”分隔,方便调用和导出
    3、篮球
    create table tow_color_ball(open_date varchar(10),red_n varchar(20),blue_n varchar(2))
    <span style="color: #800000">'''

    <span style="color: #0000ff">import<span style="color: #000000"> urllib
    <span style="color: #0000ff">import<span style="color: #000000"> urllib2
    <span style="color: #0000ff">import<span style="color: #000000"> re
    <span style="color: #0000ff">import<span style="color: #000000"> numpy as np
    <span style="color: #0000ff">import<span style="color: #000000"> operator
    <span style="color: #0000ff">import<span style="color: #000000"> MySQLdb

    <span style="color: #008000">#<span style="color: #008000"> 连接mysql
    <span style="color: #0000ff">def<span style="color: #000000"> conn_db():
    db = <span style="color: #800000">'<span style="color: #800000">pythondb<span style="color: #800000">'<span style="color: #000000">
    host = <span style="color: #800000">'<span style="color: #800000">localhost<span style="color: #800000">'<span style="color: #000000">
    iuser = <span style="color: #800000">'<span style="color: #800000">xxx<span style="color: #800000">'<span style="color: #000000">
    passwd = <span style="color: #800000">'<span style="color: #800000">xxxxxx<span style="color: #800000">'<span style="color: #000000">
    conn = MySQLdb.connect(db = db,host = host,user = iuser,passwd =<span style="color: #000000"> passwd)
    cursor =<span style="color: #000000"> conn.cursor()
    <span style="color: #0000ff">return<span style="color: #000000"> cursor

    <span style="color: #008000">#<span style="color: #008000"> 处理网页获取页面源码
    <span style="color: #0000ff">def<span style="color: #000000"> get_html_values(url):
    url_open =<span style="color: #000000"> urllib.urlopen(url)
    url_read =<span style="color: #000000"> url_open.read()
    <span style="color: #0000ff">return<span style="color: #000000"> url_read

    <span style="color: #008000">#<span style="color: #008000"> 处理源码,获取日期、红球、篮球
    <span style="color: #0000ff">def<span style="color: #000000"> manage_html(html_values):
    red_no_re = re.compile(<span style="color: #800000">'<span style="color: #800000">(?<=<li class="ball_red">)[0-9]+(?=</li>)<span style="color: #800000">'<span style="color: #000000">)
    blue_no_re = re.compile(<span style="color: #800000">'<span style="color: #800000">(?<=<li class="ball_blue">)[0-9]+(?=</li>)<span style="color: #800000">'<span style="color: #000000">)
    date_re = re.compile(<span style="color: #800000">'<span style="color: #800000">(?<=开奖日期:)[0-9]+年[0-9]+月[0-9]+日<span style="color: #800000">'<span style="color: #000000">)
    red_no_list =<span style="color: #000000"> re.findall(red_no_re,html_values)
    red_numbers = <span style="color: #800000">'<span style="color: #800000">;<span style="color: #800000">'<span style="color: #000000">.join(red_no_list)
    blue_number =<span style="color: #000000"> re.search(blue_no_re,html_values)
    blue_number =<span style="color: #000000"> blue_number.group()
    date_value =<span style="color: #000000"> re.search(date_re,html_values)
    date_value =<span style="color: #000000"> date_value.group()
    <span style="color: #0000ff">return<span style="color: #000000"> date_value,red_numbers,blue_number

    <span style="color: #008000">#<span style="color: #008000"> 可恶的日期,竟然是YYYY年MM月DD日,需要改成YYYY-MM-DD
    <span style="color: #0000ff">def<span style="color: #000000"> manage_date(date_value):
    date_value = date_value.replace(<span style="color: #800000">'<span style="color: #800000">年<span style="color: #800000">',<span style="color: #800000">'<span style="color: #800000">-<span style="color: #800000">').replace(<span style="color: #800000">'<span style="color: #800000">月<span style="color: #800000">',<span style="color: #800000">'<span style="color: #800000">-<span style="color: #800000">').replace(<span style="color: #800000">'<span style="color: #800000">日<span style="color: #800000">',<span style="color: #800000">''<span style="color: #000000">)
    <span style="color: #0000ff">return<span style="color: #000000"> date_value

    <span style="color: #008000">#<span style="color: #008000"> 处理页面编号,每次编号-1,也就是说end_page要小于url中的页码
    <span style="color: #0000ff">def<span style="color: #000000"> get_page(url,end_page):
    url_num = re.search(<span style="color: #800000">'<span style="color: #800000">(?<=/)[0-9]+(?=.)<span style="color: #800000">'<span style="color: #000000">,url)
    url_num =<span style="color: #000000"> url_num.group()
    <span style="color: #0000ff">if int(end_page) ><span style="color: #000000"> int(url_num):
    <span style="color: #0000ff">return <span style="color: #800000">'<span style="color: #800000">end<span style="color: #800000">'<span style="color: #000000">
    url_num_1 = int(url_num) - 1<span style="color: #000000">
    url =<span style="color: #000000"> url.replace(url_num,str(url_num_1))
    <span style="color: #0000ff">return<span style="color: #000000"> url

    <span style="color: #008000">#<span style="color: #008000"> 查看库中是否已存在开奖日期,防止重复写入
    <span style="color: #0000ff">def<span style="color: #000000"> check_open_date(open_date):
    conn =<span style="color: #000000"> conn_db()
    check_sql = <span style="color: #800000">'<span style="color: #800000">select 1 from tow_color_ball where open_date = %r<span style="color: #800000">' %<span style="color: #000000">open_date
    conn.execute(check_sql)
    excur =<span style="color: #000000"> conn.fetchall()
    conn.close()
    <span style="color: #008000">#<span style="color: #008000">如过未查到excur == ()
    <span style="color: #0000ff">return<span style="color: #000000"> excur

    (编辑:鄂州站长网)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读