大鸟哥平时研究彩票随机数据,肯定需要有历史数据作为支撑,那么如何获取历史数据呢?这里就应用了Python的爬虫技术,可以从一些允许的网站爬取历年来的双色球、3D等各种彩票的开奖信息,然后转化成为想要的表格形式存入Excel表格中。
下面就分享一下大鸟哥获取历年福彩3D 数据的程序代码:
# -*-coding:utf-8-*-
import requests
from bs4 import BeautifulSoup
import csv
import time
import os
# csv文件名
CSV_FILE_NAME = "cjcp.csv"
# csv标题
CSV_TITLE = ["期号", "试机号", "奖号"]
def main():
print("采集开始")
save_datas([CSV_TITLE])
for year in range(2021, 2022):
lst_year_datas = []
start_qi = "%d001" % year
end_qi = "%d999" % year
url = "https://zst.cjcp.com.cn/cjw3d/view/3d_danxuan.html"
param = {"startqi": start_qi, "endqi": end_qi, "searchType": "9"}
soup = get_soup(url, param)
tbody = soup.find("tbody", id="pagedata")
if tbody:
lst_tr = tbody.find_all("tr")
if lst_tr:
for tr in lst_tr:
lst_td = tr.find_all("td")
if not lst_td or len(lst_td) < 4:
continue
lst_data = [td.get_text(strip=True) for td in lst_td[1:4]]
print(lst_data)
lst_year_datas.append(lst_data)
save_datas(lst_year_datas)
def get_soup(url, param):
"""
进行网络请求
:param url:
:param param:
:return: 返回响应文本bs4对象
"""
if not url:
return
try:
# 停顿5秒
time.sleep(5)
# 发起Get请求页面
response = requests.post(url, data=param, timeout=10, headers={
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "zst.cjcp.com.cn",
"Origin": "https://zst.cjcp.com.cn",
"Referer": "https://zst.cjcp.com.cn/cjw3d/view/3d_danxuan.html",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36"
})
if response.status_code != 200:
return
# raise Exception("网络异常,正在重新请求")
# 设置编码格式
response.encoding = "gbk"
# 获取页面源代码
text = response.text
return BeautifulSoup(text, "html.parser")
except Exception as e:
# 出现异常,可能是网络中断或出现反爬,休息2秒再重新继续这一页
print(e)
return get_soup(url, param)
def save_datas(lst_data):
"""
保存数据
:param lst_data:
:return:
"""
if not lst_data:
return
# lst_data是一个二维列表
with open(CSV_FILE_NAME, "a", encoding="utf-8-sig", newline="") as file:
csv_writer = csv.writer(file)
csv_writer.writerows(lst_data)
# 程序入口
if __name__ == '__main__':
main()
上面的代码需要你有一定的Python爬虫知识才能理解,否则,一两句话不可能让你明白,在这里不做详细讲解了,感兴趣的小伙伴可以私信联系大鸟哥,大鸟哥也做数据分析和咨询,当然也可以找大鸟哥来直接购买彩票数据和独家研究攻略。有基础的小伙伴可以直接把代码复制过去改改就能用,希望这篇小文章对你有帮助,好用的话别忘了回来帮大鸟哥转发、关注和点赞。心情好的话可以给大鸟哥打赏哦!