Python+Java简单分析这6年的双色球

点击上方“程序人生”,选择“置顶公众号”

第一时间关注程序猿(媛)身边的故事


640?wx_fmt=jpeg

作者

Staker

一个喜欢写代码的肥宅

如需转载,请联系授权。


双色球是我国很有名的一款彩票,而在这篇文章中我们将对最近6年(2013年~2018年18089期)双色球中奖号码进行爬取和简单分析。


那么这篇文章中将会分两部分介绍分析这其中的过程。

  1. Python爬虫

  2. Java的简单分析


Python爬虫

我们要爬取的这个网站,网址格式如下:

http://kaijiang.500.com/shtml/ssq/期号.shtml

我们可以改变期号来获取任何一期双色球的开奖号码。

640?wx_fmt=png

我们主要看一下网站结构发现:

红球class为ball_red

蓝球class为ball_blue。

640?wx_fmt=png

了解完这些,我们就准备开始用爬虫爬取双色球中奖号码了(在这篇文章中,我以爬取双色球18001~18089期开奖号码为例)。


代码如下(带注释):

# -- coding:utf-8 --

import urllib.request

from bs4 import BeautifulSoup


id=18089

#双色球开奖期号(从18089期开始)

times=1

#用于接下来判断是否需要换行


while(id>=18001):

#while循环,获取开奖号码

     url="http://kaijiang.500.com/shtml/ssq/"+str(id)+".shtml"

     #每一期的开奖地址

     website_info=urllib.request.urlopen(url).read().decode('GBK')

     #获取了页面,并完成了GBK的转码

     soup=BeautifulSoup(website_info,"html.parser")

     #html.parser解析器

     redballs=soup.find_all('li','ball_red')

     #获取所有li标签中class为ball_red的内容

     file=open(r'C:\Users\Frank\Desktop\双色球红球.txt', 'a+',encoding='utf-8')

     #要写入文件的地址

     for redball in redballs:

         if times%6==0:

            redball_info=redball.string

            file.write(redball_info+"\n")

            times=times+1

            #判断本次开奖号码已全部打印完,换行打印下一期

         else:

            redball_info=redball.string

            file.write(redball_info)

            times=times+1

     file.close()

     #关闭打开文件

     id=id-1

else:

    print("Done")

    #已完成打印

640?wx_fmt=png

接下来我们可以从txt文件中看到我们爬取的中奖内容。


Java简单分析

接下来,我们要将获取到的数据进行分析,我们希望能获取到不同数字在不同位置的出现概率。


大致的思路如下:

1. 从保存中奖号码的txt文件中读取数据。

2. 截取字符(如:截取前两个字符——第一个球)。

3.判断是否为某个数字(如:01)。

4.计算数字出现的总次数。

import java.io.BufferedReader;

import java.io.FileReader;


public class Main {


    public static void main(String[] args) throws Exception {

        String str;

        int times=0;

        //记录出现次数

        FileReader fr=new FileReader("C:\\Users\\Frank\\Desktop\\ssq\\red\\红球汇总.txt");

        BufferedReader br=new BufferedReader(fr);

            while ((str=br.readLine())!=null) {

            //循环读取每一行

                String str2=str.substring(0,2);

                //截取字符串的前两个字符(即开奖号码的第一个球)

                if(str2.equals("01")){

                //判断是否为01(也可为其它)

                times=times+1;

                //出现次数+1

                }

            }

            System.out.println(times);

            //打印总出现次数

    }

}

640?wx_fmt=png

通过以上代码我们能分析出红球/蓝球所有数字的出现情况。


汇总

以下是蓝红球在最近五年中的出现次数汇总(颜色越深,出现次数越多):

640?wx_fmt=png

红球

640?wx_fmt=png

蓝球

其实,通过汇总,我们可以看出数字出现几率基本上都是很接近的,所以买双色球这类彩票靠的还是运气。最后希望大家都能脚踏实地,实现自己的理想。


- The End -

「若你有原创文章想与大家分享,欢迎投稿。」

加编辑微信ID,备注#投稿#:

程序 丨 druidlost  

小七 丨 duoshangshuang


上期精彩内容

640?wx_fmt=png

640?wx_fmt=gif

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值