天天看點

【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千多萬元大獎無人領,馬上就過期了,下一期的中獎者會是你嗎?(純技術交流)前言正文總結