天天看点

【Python实战】神仙运气—快看看你的彩票:2千多万元大奖无人领,马上就过期了,下一期的中奖者会是你吗?(纯技术交流)前言正文总结

前言

越努力越幸运

哈喽~我是栗子同学!

特别注意:不管是沉迷赌球,还是沉迷购彩,都是不可取的。本文纯是一个技术学习内容。

听说关注我的人会暴富哦!、

所有文章完整的素材+源码都在👇👇

粉丝白嫖源码福利,请移步至CSDN社区或文末公众hao即可免费。
【Python实战】神仙运气—快看看你的彩票:2千多万元大奖无人领,马上就过期了,下一期的中奖者会是你吗?(纯技术交流)前言正文总结

一笔2454多万元的彩票奖金,悬置到过期都无人认领。这是发生在2019年的事,不知道大家

还有没有印象。《2454万元大奖无人认领!福彩史上第二大弃奖在广东中山产生 》。

在2019年5月2日开奖的双色 球中,广东中山一位彩民博中2454万元,兑奖时间截至2019年7月1

日。 令人遗憾的是,中奖者最终未现身领奖,2454万元大奖成为弃奖。经中山市福彩中心

查证,这是中国福彩史上金额第二大的 弃奖。

根据《彩票管理条例实施细则》的有关规定,这次的2454万元弃奖奖金将被纳入彩票公益金。 

一直在为福彩做贡献的我,啥时候能摊上这样的好事啊。

于是我用Python生成了一组双色球的号码……

【Python实战】神仙运气—快看看你的彩票:2千多万元大奖无人领,马上就过期了,下一期的中奖者会是你吗?(纯技术交流)前言正文总结

正文

一、准备环境

1)运行环境 

操作系统:Windows Python版本:3.7 、Pycharm社区版。

  requests 模块; lxml、 beautifulsoup4 模块。因为都是第三方模块,如环境中没有 

可以使用 pip 进行安装。

pip install +模块名 或镜像源安装:
 
pip install -i https://pypi.douban.com/simple/+模块名
           

2)需求分析

随机生成一组双色球的号码,我们可以借助random函数,

如下: 

import random
def ball():
ball_list=[] while 1:
a=random.randint(1,33)
if a not in ball_list:
ball_list.append(a)
if len(ball_list)==6:
break
ball_list.sort()
ball_list.append(random.randint(1,16))
print(ball_list)
ball()
           

但要知道,这么搞的话,丝毫不会有什么中奖的,因为太随机了…… 

经历过高考的人,肯定都知道三年模拟五年高考。要知道彩票中奖概率很低的,所以我们在这

里先分析下历年的数据,借助往 年的数据来“精准”地推算下一期中奖号码。 

【Python实战】神仙运气—快看看你的彩票:2千多万元大奖无人领,马上就过期了,下一期的中奖者会是你吗?(纯技术交流)前言正文总结

3)目标网址

我们通过这个网站来查询彩票的历史开奖信息: 

http://kaijiang.zhcw.com/zhcw/html/ssq/list_1.html
           
【Python实战】神仙运气—快看看你的彩票:2千多万元大奖无人领,马上就过期了,下一期的中奖者会是你吗?(纯技术交流)前言正文总结

4)思路分析

我们点击下一页,看看网址链接是否有规律 :

http://kaijiang.zhcw.com/zhcw/html/ssq/list_1.html 
http://kaijiang.zhcw.com/zhcw/html/ssq/list_2.html 
http://kaijiang.zhcw.com/zhcw/html/ssq/list_3.html 
http://kaijiang.zhcw.com/zhcw/html/ssq/list_4.html 
http://kaijiang.zhcw.com/zhcw/html/ssq/list_5.html
           

不难发现,可以将目标网址拆分如下:

​url_part = 'http://kaijiang.zhcw.com/zhcw/html/ssq/list'
url = url_part + '_' + str(i) + '.html' 
           

而 i 对应的正好是页码信息,我们借助:

【Python实战】神仙运气—快看看你的彩票:2千多万元大奖无人领,马上就过期了,下一期的中奖者会是你吗?(纯技术交流)前言正文总结

记录下这里的元素信息。 接下来,我们需要抓取每一页中的具体开奖信息。我们继续通过开发者工具分析出每期开奖信息。 我们依次记录下每期的开奖日期对应的元素信息: 

【Python实战】神仙运气—快看看你的彩票:2千多万元大奖无人领,马上就过期了,下一期的中奖者会是你吗?(纯技术交流)前言正文总结

开奖的批次对应的元素信息:

【Python实战】神仙运气—快看看你的彩票:2千多万元大奖无人领,马上就过期了,下一期的中奖者会是你吗?(纯技术交流)前言正文总结

中奖号码对应的元素信息:

【Python实战】神仙运气—快看看你的彩票:2千多万元大奖无人领,马上就过期了,下一期的中奖者会是你吗?(纯技术交流)前言正文总结

有了这些元素信息之后,接下来就是代码的具体实现。

二、代码实现

1)主程序

模块安装好之后,进行导入
import requests
from bs4 import BeautifulSoup
我们需要先在首页中,拿到页数信息
# 发起请求
basic_url = 'http://kaijiang.zhcw.com/zhcw/html/ssq/list_1.html'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
}
response = requests.get(basic_url, headers=headers, timeout=10)
response.encoding = 'utf-8'
htm = response.text
# 解析内容
soup = BeautifulSoup(htm, 'html.parser')
# 获取页数信息
page = int(soup.find('p', attrs={"class": "pg"}).find_all('strong')[0].text)
接下来,我们就可以根据规律组装好我们的URL:
url_part = 'http://kaijiang.zhcw.com/zhcw/html/ssq/list'
for i in range(1, page+1):
url = url_part + '_' + str(i) + '.html'
拿组装后的url发起请求,并获取每页中各期的开奖信息:
res = requests.get(url, headers=headers, timeout=10)
res.encoding = 'utf-8'
context = res.text
soups = BeautifulSoup(context, 'html.parser')
if soups.table is None:
continue
elif soups.table:
table_rows = soups.table.find_all('tr')
for row_num in range(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].string
print(result)
这样,我们就完成了对每一页中各期开奖数据的获取。获取的数据可以保存在本地。
def save_to_file(content):
with open('ssq.txt', 'a', encoding='utf-8') as f:
f.write(content + '\n')
我们在获取每期的开奖数据的同时,记录下红蓝球出现的号码信息。
# 定义两个变量, 用于记录历史开奖信息中的红球、蓝球号码信息
# 定义两个变量, 用于记录历史开奖信息中的红球、蓝球号码信息
red_num = [] blue_num = []
red_num.append(ems[0].string) # 红色球1
red_num.append(ems[1].string) # 红色球2
red_num.append(ems[2].string) # 红色球3
red_num.append(ems[3].string) # 红色球4
red_num.append(ems[4].string) # 红色球5
red_num.append(ems[5].string) # 红色球6
blue_num.append(ems[6].string) # 蓝色球
统计出各个号码出现次数信息:
red_count = Counter(red_num)
blue_count = Counter(blue_num)
接下来我们可以根据红蓝号码出现的频率进行排序,并推测出几组双色球号码信息:
# 按照出现频率顺序
red_sorted = sorted(red_count.items(), key=lambda x: x[1], reverse=False)
blue_sorted = sorted(blue_count.items(), key=lambda x: x[1], reverse=False)
red = red_sorted[0:6] blue = blue_sorted[0:3]
red = list(map(lambda x:x[0], red))
blue = list(map(lambda x: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 即可。

三、附带直方图

这里根据蓝色球各号码出现的次数,作了张直方图,可以很直观到蓝色球各号码出现的频率。

【Python实战】神仙运气—快看看你的彩票:2千多万元大奖无人领,马上就过期了,下一期的中奖者会是你吗?(纯技术交流)前言正文总结

总结

有人会问了,这样预测出的中奖号码,中奖概率究竟有多大呢? 

这个,我可说不清楚,只有买了才会知道……小心错过一个亿哟~

讲个笑话——昨天晚上走夜路天上掉了1万美金,是你出门掉的嘛?!

特别注意:不管是沉迷赌球,还是沉迷购彩,都是不可取的。本文仅是一个技术学习内容,无

任何诱导大家购买双色球的行为。学习爬虫学习技术学习编程,好的工作技能才是改善自身强

大的本事。再说一篇文章是不可能就买的中彩票的哈。世界人口这么大,几十亿分之一。还是

好好的上班吧!不然小编早就是亿万富翁啦。23333

✨完整的素材源码等:可以滴滴我吖!或者点击文末hao自取免费拿的哈~

 🔨推荐往期文章——

1.0    Python爬虫入门推荐案例:学会爬虫_表情包手到擒来~

1.1 【Tkinter界面化小程序】用Python做一款免费音乐下载器、无广告无弹窗、清爽超流畅哦

1.2  【Python爬虫实战】 不生产小说,只做网站的搬运工,太牛逼了~(附源码)

1.3 【Python抢票神器】火车票枪票软件到底靠谱吗?实测—终极攻略。

1.4 【Python实战】WIFI密码小工具,甩万能钥匙十条街,WIFI任意连哦~(附源码)

1.5  【Python实战】再分享一款商品秒杀小工具,我已经把压箱底的宝贝拿出来啦~

1.6  【Python实战】年底找工作,年后不用愁,多个工作岗位随你挑哦~

1.7  【Python实战】听书就用它了:海量资源随便听,内含几w书源,绝对精品哦~

1.8  【Python实战】海量表情包炫酷来袭,快来pick斗图新姿势吧~(超好玩儿)

🎁文章汇总——

Python文章合集 | (入门到实战、游戏、Turtle、案例等)

(文章汇总还有更多你案例等你来学习啦~源码找我即可免费!)      

【Python实战】神仙运气—快看看你的彩票:2千多万元大奖无人领,马上就过期了,下一期的中奖者会是你吗?(纯技术交流)前言正文总结