【Python爬虫】利用爬虫抓取双色球开奖号码,获取完整数据并通过随机森林和多层感知两种模型进行简单的预测

首先我们需要通过爬虫获取往期双色球号码并将其保存在csv文件中,这里我获取了1000期的数据,时间很久,大家可以修改代码少收集一些做尝试!

python 复制代码
import requests
import os
from bs4 import BeautifulSoup
import csv
import time

def download(url, page):
    while True:
        try:
            html = requests.get(url).text
            soup = BeautifulSoup(html, 'html.parser')
            list = soup.select('div.ball_box01 ul li')
            ball = []
            for li in list:
                ball.append(li.string)
            if not ball:
                raise ValueError("Empty data")
            write_to_excel(page, ball)
            print(f"第{page}期开奖结果录入完成")
            break
        except Exception as e:
            print(f"Attempt failed with error: {e}, retrying...")
            time.sleep(5)  # 等待5秒后重试

def write_to_excel(page, ball):
    with open('双色球开奖结果2.csv', 'a', encoding='utf_8_sig', newline='') as f:
        writer = csv.writer(f)
        writer.writerow([f'第{page}期'] + ball)

def turn_page():
    url = "https://kaijiang.500.com/ssq.shtml"
    html = requests.get(url).text
    soup = BeautifulSoup(html, 'html.parser')
    pageList = soup.select("div.iSelectList a")

    recent_pages = pageList[:1000]  # 获取最近1000期的页码

    for p in recent_pages:
        url = p['href']
        page = p.string
        download(url, page)

def main():
    if os.path.exists('双色球开奖结果2.csv'):
        os.remove('双色球开奖结果2.csv')
    turn_page()

if __name__ == '__main__':
    main()

这里是随机森林预测

python 复制代码
import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestRegressor

# 读取数据
data = pd.read_csv('双色球开奖结果2.csv')  # ,encoding='gbk'

# 提取特征和标签
features = data.iloc[:, 1:7]  # 红色球特征
labels = data.iloc[:, 1:7]  # 红色球标签
blue_balls = data.iloc[:, 7]  # 蓝色球标签

# 创建随机森林回归模型
model = RandomForestRegressor(n_estimators=100, random_state=1)

# 拟合模型
model.fit(features, labels)

# 预测下一期的红色球号码
next_red_balls = model.predict(features.iloc[-1].values.reshape(1, -1))
next_red_balls = np.round(next_red_balls).astype(int)

# 预测下一期的蓝色球号码
blue_ball_model = RandomForestRegressor(n_estimators=100, random_state=1)
blue_ball_model.fit(features, blue_balls)
next_blue_ball = blue_ball_model.predict(features.iloc[-1].values.reshape(1, -1))
next_blue_ball = np.round(next_blue_ball).astype(int)

# 打印预测的红色球号码和蓝色球号码
print("预测的红色球号码:", next_red_balls)
print("预测的蓝色球号码:", next_blue_ball)

多层感知

python 复制代码
import pandas as pd
import numpy as np
from sklearn.neural_network import MLPRegressor

# 读取数据
data = pd.read_csv('双色球开奖结果2.csv')  # , encoding='gbk'

# 提取特征和标签
features = data.iloc[:, 1:7]  # 红色球特征
labels = data.iloc[:, 1:8]  # 红色球标签和蓝色球标签

# 创建多层感知机回归模型
model = MLPRegressor(hidden_layer_sizes=(100,), random_state=1)

# 拟合模型
model.fit(features, labels)
# 预测下一期的红色球号码和蓝色球号码
next_features = model.predict(features.iloc[[-1]])
next_features = np.round(next_features).astype(int)

# 打印预测的红色球号码和蓝色球号码
print("预测的红色球号码:", next_features[:6])
print("预测的蓝色球号码:", next_features[6])

杰哥这里仅做了简单的预测,闲暇时间无聊做的,大家想要更精确的结果需要更精细的调参!

相关推荐
VidDown7 小时前
24fps 转 25fps 不只是改个数字:帧率转换、PAL/NTSC 与音频补偿
python·网络协议·音视频·视频编解码·视频
死磕音视频9 小时前
让小模型做选择题:限定候选项并读取 logits 概率的入门实践(附 Python 代码)
开发语言·python·大模型·文本分类·transformers
凤山老林9 小时前
Spring Boot 接入国密 SM2/SM3/SM4 的一些实践记录
spring boot·后端·python
重生之高冷汉堡包11 小时前
YouTube 数据抓取出现 429/403 错误?2026 反爬机制拆解与爬虫选型指南
爬虫
pride.li11 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉
databook11 小时前
用 Pydantic AI 从零搭建一个能干活的 AI Agent
人工智能·python
康小旺11 小时前
把 markitdown 做成 Windows 桌面版:拖进文档就出 Markdown,附 233MB→64MB 打包裁剪全过程
python
启观川12 小时前
数据结构与算法-第 3 章 常用算法-贪心算法
数据结构·笔记·python·算法·贪心算法
南笙北梦12 小时前
本地开源大模型多轮对话显存泄漏排查与修复实录
python
对空六课12 小时前
指标口径生效时间的版本查询实现
大数据·服务器·前端·算法·数据分析