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

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

    本文来自网络,不代表青岛站长网立场。转载请注明出处: https://www.0532zz.com/html/kaifa/python/20200722/6920.html
    上一篇
    下一篇

    作者: dawei

    【声明】:青岛站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

    为您推荐

    返回顶部