分析了16年的福利彩票记录,原来可以用Python这么买彩票

分析了16年的福利彩票记录,原来可以用Python这么买彩票

目录
0 引言
1 环境
2 需求分析
3 代码实现
4 后记

0 引言

上周被一则新闻震惊到了,《2454万元大奖无人认领!福彩史上第二大弃奖在广东中山产生 》,在2019年5月2日开奖的双色球中,广东中山一位彩民博中2454万元,兑奖时间截至2019年7月1日。

令人遗憾的是,中奖者最终未现身领奖,2454万元大奖成为弃奖。经中山市福彩中心查证,这是中国福彩史上金额第二大的弃奖。根据《彩票管理条例实施细则》的有关规定,这次的2454万元弃奖奖金将被纳入彩票公益金。

一直在为福彩做贡献的我,啥时候能摊上这样的好事啊。于是我用Python生成了一组双色球的号码……

1 环境

操作系统:Windows

Python版本:3.7.3

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()

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

经历过高考的人,肯定都知道三年模拟五年高考。要知道彩票中奖概率很低的,所以我们在这里先分析下历年的数据,借助往年的数据来“精准”地推算下一期中奖号码。

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

分析了16年的福利彩票记录,原来可以用Python这么买彩票

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

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

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

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

分析了16年的福利彩票记录,原来可以用Python这么买彩票

记录下这里的元素信息。

接下来,我们需要抓取每一页中的具体开奖信息。我们继续通过开发者工具分析出每期开奖信息。

我们依次记录下每期的开奖日期对应的元素信息:

分析了16年的福利彩票记录,原来可以用Python这么买彩票

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

分析了16年的福利彩票记录,原来可以用Python这么买彩票

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

分析了16年的福利彩票记录,原来可以用Python这么买彩票

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

3 代码实现

在这里,我们获取网页的请求使用 requests 模块;解析网址借助 beautifulsoup4 模块。因为都是第三方模块,如环境中没有可以使用 pip 进行安装。

pip install requests pip install beautifulsoup4 pip install lxml

模块安装好之后,进行导入

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)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpwjzg.html