令人遗憾的是,中奖者最终未现身领奖,2454万元大奖成为弃奖。经中山市福彩中心查证,这是中国福彩史上金额第二大的弃奖。根据《彩票管理条例实施细则》的有关规定,这次的2454万元弃奖奖金将被纳入彩票公益金。
一直在为福彩做贡献的我,啥时候能摊上这样的好事啊。于是我用Python生成了一组双色球的号码……
1环境
操作系统:Windows
Python版本:3.7.3
2需求分析
随机生成一组双色球的号码,我们可以借助random函数,如下:
importrandomdefball():ball_list=[]while1:a=random.randint(1,33)ifanotinball_list:ball_list.append(a)iflen(ball_list)==6:breakball_list.sort()ball_list.append(random.randint(1,16))print(ball_list)ball()但要知道,这么搞的话,丝毫不会有什么中奖的,因为太随机了……
经历过高考的人,肯定都知道三年模拟五年高考。要知道彩票中奖概率很低的,所以我们在这里先分析下历年的数据,借助往年的数据来“精准”地推算下一期中奖号码。
我们通过这个网站来查询彩票的历史开奖信息。
我们点击下一页,看看网址链接是否有规律
不难发现,可以将目标网址拆分如下:
记录下这里的元素信息。
接下来,我们需要抓取每一页中的具体开奖信息。我们继续通过开发者工具分析出每期开奖信息。
我们依次记录下每期的开奖日期对应的元素信息:
开奖的批次对应的元素信息:
中奖号码对应的元素信息:
有了这些元素信息之后,接下来就是代码的具体实现。
3代码实现
在这里,我们获取网页的请求使用requests模块;解析网址借助beautifulsoup4模块。因为都是第三方模块,如环境中没有可以使用pip进行安装。
pipinstallrequestspipinstallbeautifulsoup4pipinstalllxml模块安装好之后,进行导入
importrequestsfrombs4importBeautifulSoup我们需要先在首页中,拿到页数信息
res=requests.get(url,headers=headers,timeout=10)res.encoding='utf-8'context=res.textsoups=BeautifulSoup(context,'html.parser')ifsoups.tableisNone:continueelifsoups.table:table_rows=soups.table.find_all('tr')forrow_numinrange(2,len(table_rows)-1):row_tds=table_rows[row_num].find_all('td')ems=row_tds[2].find_all('em')result=row_tds[0].string+','+row_tds[1].string+','+ems[0].string+''+ems[1].string+''+ems[2].string+''+ems[3].string+''+ems[4].string+''+ems[5].string+','+ems[6].stringprint(result)这样,我们就完成了对每一页中各期开奖数据的获取。获取的数据可以保存在本地。
defsave_to_file(content):withopen('ssq.txt','a',encoding='utf-8')asf:f.write(content+'\n')我们在获取每期的开奖数据的同时,记录下红蓝球出现的号码信息。
#定义两个变量,用于记录历史开奖信息中的红球、蓝球号码信息
#定义两个变量,用于记录历史开奖信息中的红球、蓝球号码信息red_num=[]blue_num=[]red_num.append(ems[0].string)#红色球1red_num.append(ems[1].string)#红色球2red_num.append(ems[2].string)#红色球3red_num.append(ems[3].string)#红色球4red_num.append(ems[4].string)#红色球5red_num.append(ems[5].string)#红色球6blue_num.append(ems[6].string)#蓝色球统计出各个号码出现次数信息:
red_count=Counter(red_num)blue_count=Counter(blue_num)接下来我们可以根据红蓝号码出现的频率进行排序,并推测出几组双色球号码信息:
#按照出现频率顺序red_sorted=sorted(red_count.items(),key=lambdax:x[1],reverse=False)blue_sorted=sorted(blue_count.items(),key=lambdax:x[1],reverse=False)red=red_sorted[0:6]blue=blue_sorted[0:3]red=list(map(lambdax:x[0],red))blue=list(map(lambdax:x[0],blue))red.sort()blue.sort()print('号码高频-1注:'+str(red)+'|'+blue[0])print('号码高频-2注:'+str(red)+'|'+blue[1])print('号码高频-3注:'+str(red)+'|'+blue[2])当然了,也可以输出反序输出,中奖号码出现频率较低的几组,只需要设置reverse=True即可。
4后记
这里根据蓝色球各号码出现的次数,作了张直方图,可以很直观到蓝色球各号码出现的频率。
有人会问了,这样预测出的中奖号码,中奖概率究竟有多大呢?
这个,我可说不清楚,只有买了才会知道……小心错过一个亿哟!
好了,以上就是本篇全部内容。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。