摘要:令人遺憾的是,中獎者最終未現身領獎,萬元大獎成為棄獎。經中山市福彩中心查證,這是中國福彩史上金額第二大的棄獎。根據彩票管理條例實施細則的有關規定,這次的萬元棄獎獎金將被納入彩票公益金。獲取的數據可以保存在本地。
目錄
0 引言
1 環境
2 需求分析
3 代碼實現
4 后記
上周被一則新聞震驚到了,《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()
但要知道,這么搞的話,絲毫不會有什么中獎的,因為太隨機了……
經歷過高考的人,肯定都知道三年模擬五年高考。要知道彩票中獎概率很低的,所以我們在這里先分析下歷年的數據,借助往年的數據來“精準”地推算下一期中獎號碼。
我們通過這個網站來查詢彩票的歷史開獎信息。
http://kaijiang.zhcw.com/zhcw...
我們點擊下一頁,看看網址鏈接是否有規律
http://kaijiang.zhcw.com/zhcw...
http://kaijiang.zhcw.com/zhcw...
http://kaijiang.zhcw.com/zhcw...
http://kaijiang.zhcw.com/zhcw...
http://kaijiang.zhcw.com/zhcw...
不難發現,可以將目標網址拆分如下:
url_part = "http://kaijiang.zhcw.com/zhcw/html/ssq/list" url = url_part + "_" + str(i) + ".html"
而 i 對應的正好是頁碼信息,我們借助
記錄下這里的元素信息。
接下來,我們需要抓取每一頁中的具體開獎信息。我們繼續通過開發者工具分析出每期開獎信息。
我們依次記錄下每期的開獎日期對應的元素信息:
開獎的批次對應的元素信息:
中獎號碼對應的元素信息:
有了這些元素信息之后,接下來就是代碼的具體實現。
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)
這樣,我們就完成了對每一頁中各期開獎數據的獲取。獲取的數據可以保存在本地。
def save_to_file(content): with open("ssq.txt", "a", encoding="utf-8") as f: f.write(content + " ")
我們在獲取每期的開獎數據的同時,記錄下紅藍球出現的號碼信息。
# 定義兩個變量, 用于記錄歷史開獎信息中的紅球、藍球號碼信息 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 即可。
4 后記這里根據藍色球各號碼出現的次數,作了張直方圖,可以很直觀到藍色球各號碼出現的頻率。
有人會問了,這樣預測出的中獎號碼,中獎概率究竟有多大呢?
這個,我可說不清楚,只有買了才會知道……小心錯過一個億喲!
好了,以上就是本篇全部內容。
關注公眾號「Python專欄」,更多有趣好玩的Python等著你~
本文全套代碼已上傳至Github:https://github.com/MiracleYou...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/45110.html
摘要:很多小白同事,沒有開戶的也紛紛開戶。但如果你是小白,是個上班族,手里資金有限,也沒時間盯盤的人我建議你還是不要參與,進去之后十有八九會當了韭菜。不如把時間用來提升能力,保持好心態,不要被浮躁和賺快錢所影響。 showImg(https://segmentfault.com/img/bVbphvR?w=496&h=290); 最近我發現很多qq 群、微信群、還有身邊的同事都在談論股票。 ...
摘要:并返回合理錯誤提示。如果不在則再輸入密碼,成功則增加用戶信息到文件中,密碼進行加密處理。作業增加用戶名,密碼的合法化判斷和錯誤提示。 課時5:字符串-基礎 切片,索引 s = use python do somenthing s[1],s[-1],s[1:3],s[1:6:2],s[1:],s[:-1],s[:] spilt,join,[start:stop:step] 常用方法集...
摘要:應屆生零基礎可以學習軟件測試嗎俗話說,人怕入錯行。霸哥這里分別從入行難度入行方式行業前景薪資待遇四個方面來分析一下。目前市場上的測試人員,一部分是企業自己培養的,另一部分是來自培訓機構。軟件測試的行業門檻低,市場需求量大。 ...
閱讀 2314·2021-11-08 13:13
閱讀 1245·2021-10-09 09:41
閱讀 1683·2021-09-02 15:40
閱讀 3186·2021-08-17 10:13
閱讀 2546·2019-08-29 16:33
閱讀 3122·2019-08-29 13:17
閱讀 3131·2019-08-29 11:00
閱讀 3295·2019-08-26 13:40