【Python爬虫】利用爬虫抓取双色球开奖号码,获取完整数据,简洁45行代码实现,更新时间2023-06-28

news2024/9/24 11:28:01

链接:https://pan.baidu.com/s/18oE308_NVNPaCOACw_H5Hw?pwd=abc1 

利用爬虫抓取双色球开奖号码,获取完整数据,简洁45行代码实现,更新时间2023-06-28

这是网上的数据,怎么将它爬取下来

它将只爬取最近30期的双色球开奖号码,并将结果写入到名为 "双色球开奖结果.csv" 的文件中。

import requests
import os
from bs4 import BeautifulSoup


def download(url, page):
    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)
    write_to_excel(page, ball)
    print(f"第{page}期开奖结果录入完成")


def write_to_excel(page, ball):
    f = open('双色球开奖结果.csv', 'a', encoding='utf_8_sig')
    f.write(f'第{page}期,{ball[0]},{ball[1]},{ball[2]},{ball[3]},{ball[4]},{ball[5]},{ball[6]}\n')
    f.close()


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

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

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


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


if __name__ == '__main__':
    main()

 

生成的表格打开验证数据正确性

非常好,下面写出神经网络进行预测

import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestRegressor

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

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

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

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

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

# 打印预测的红色球号码
print("预测的红色球号码:", next_features)

 

 这个预测方式好像有点简单了,弄一个多层感知机进行预测

import pandas as pd
import numpy as np
from sklearn.neural_network import MLPRegressor

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

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

# 创建多层感知机回归模型
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)

这两个代码预测的号码不一样,可能是因为使用的模型不一样导致的。随便玩玩吧。

再做一个模拟双色球游戏,如果选择的号码中了,会显示绿色。

 

 

import tkinter as tk
import random


class DoubleColorBallGame:
    def __init__(self, master):
        self.master = master
        self.master.title("双色球游戏")
        self.master.geometry("600x400")

        self.red_balls = []
        self.blue_balls = []

        self.selected_red_balls = []
        self.selected_blue_ball = None

        self.create_red_ball_buttons()
        self.create_blue_ball_buttons()
        self.create_draw_button()
        self.create_clear_button()
        self.create_result_label()

    def create_red_ball_buttons(self):
        red_frame = tk.Frame(self.master)
        red_frame.pack(pady=10)

        for i in range(1, 34):
            button = tk.Button(red_frame, text=str(i), width=2, command=lambda i=i: self.select_red_ball(i))
            button.grid(row=(i - 1) // 11, column=(i - 1) % 11, padx=2, pady=2)
            self.red_balls.append(button)

    def create_blue_ball_buttons(self):
        blue_frame = tk.Frame(self.master)
        blue_frame.pack(pady=10)

        for i in range(1, 17):
            button = tk.Button(blue_frame, text=str(i), width=2, command=lambda i=i: self.select_blue_ball(i))
            button.grid(row=0, column=i - 1, padx=2, pady=2)
            self.blue_balls.append(button)

    def create_draw_button(self):
        draw_frame = tk.Frame(self.master)
        draw_frame.pack(pady=10)

        draw_button = tk.Button(draw_frame, text="开奖", command=self.generate_draw_result)
        draw_button.pack()

    def create_clear_button(self):
        clear_frame = tk.Frame(self.master)
        clear_frame.pack(pady=10)

        clear_button = tk.Button(clear_frame, text="清除", command=self.clear_selection)
        clear_button.pack()

    def create_result_label(self):
        self.result_label = tk.Label(self.master, text="")
        self.result_label.pack(pady=20)

    def select_red_ball(self, number):
        if number in self.selected_red_balls:
            self.selected_red_balls.remove(number)
            self.red_balls[number - 1].config(bg="SystemButtonFace")
        else:
            self.selected_red_balls.append(number)
            self.red_balls[number - 1].config(bg="red")

    def select_blue_ball(self, number):
        if self.selected_blue_ball == number:
            self.selected_blue_ball = None
            self.blue_balls[number - 1].config(bg="SystemButtonFace")
        else:
            self.selected_blue_ball = number
            self.blue_balls[number - 1].config(bg="blue")

    def generate_draw_result(self):
        draw_result = []

        while len(draw_result) < 6:
            number = random.randint(1, 33)
            if number not in draw_result:
                draw_result.append(number)

        draw_result.sort()
        draw_result.append(random.randint(1, 16))

        self.result_label.config(
            text="红球:" + " ".join(str(ball) for ball in draw_result[:6]) + "\n蓝球:" + str(draw_result[6]))

        # 清除之前的标记
        for red_ball in self.red_balls:
            red_ball.config(bg="SystemButtonFace")

        for blue_ball in self.blue_balls:
            blue_ball.config(bg="SystemButtonFace")

        # 框选选择的号码和开奖号码
        for number in self.selected_red_balls:
            if number in draw_result[:6]:
                self.red_balls[number - 1].config(bg="green")

        if self.selected_blue_ball is not None:
            if self.selected_blue_ball == draw_result[6]:
                self.blue_balls[self.selected_blue_ball - 1].config(bg="green")

    def clear_selection(self):
        self.selected_red_balls = []
        self.selected_blue_ball = None

        for red_ball in self.red_balls:
            red_ball.config(bg="SystemButtonFace")

        for blue_ball in self.blue_balls:
            blue_ball.config(bg="SystemButtonFace")

        self.result_label.config(text="")


if __name__ == "__main__":
    root = tk.Tk()
    game = DoubleColorBallGame(root)
    root.mainloop()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/696753.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

星辰秘典:解开Python项目的神秘面纱——迷宫之星(迷宫探索与求解)

✨博主&#xff1a;命运之光 &#x1f338;专栏&#xff1a;Python星辰秘典 &#x1f433;专栏&#xff1a;web开发&#xff08;html css js&#xff09; ❤️专栏&#xff1a;Java经典程序设计 ☀️博主的其他文章&#xff1a;点击进入博主的主页 前言&#xff1a;你好&#x…

文件系统理解——磁盘文件

磁盘文件 1. 问题提出2. 了解磁盘的物理结构2.1 磁盘大体结构2.2 磁盘的具体物理结构 3.对磁盘结构逻辑抽象3.1 OS是通过CSH方法进行扇区的管理的吗&#xff1f;3.2 磁盘逻辑过程 4.文件系统4.1 管理思想4.2 区结构Boot BlockSuper BlockGroup Descriptor Tableinode Table &am…

共享办公室在国内外的发展史以及现状介绍

共享办公室&#xff0c;这个曾经陌生的概念&#xff0c;如今已成为全球范围内炙手可热的话题。在这个时代&#xff0c;越来越多的人开始关注灵活性和协作性&#xff0c;而共享办公室正是在这种需求下应运而生的。本文将带您一探共享办公室的国内外发展史、国内当前发展现状以及…

记录一次nginx占用cpu饱满解决

一天下午&#xff0c;突然就爆满了。刚开始服务器都登不上&#xff0c;后来服务器可以登录上&#xff0c;宝塔进不去&#xff0c;网站访问不了&#xff0c;top后发现nginx爆满 执行下列代码&#xff0c;停止nginx服务 systemctl stop nginx 虽然停止了 可以上宝塔 再次手动…

硬件工程师JD

不知道这么做合不合适&#xff0c;我先发一个试试&#xff0c;团队在招人&#xff0c; 岗位是 航天航空电子工程师1&#xff0c;混合电推和起发电方向&#xff1b; 电机控制硬件工程师1&#xff0c;新能源汽车电机控制器硬件开发方向。 工作内容&#xff1a; 1、负责硬件系…

美国首只杠杆比特币期货ETF开盘,成交量近550万美元!

纽约时间6月27日&#xff0c;美国首只杠杆比特币期货ETF&#xff08;股票代码&#xff1a;BITX&#xff09;在CBOE BZX交易所开盘&#xff0c;成交量近550万美元&#xff0c;成为今年推出的ETF中首日交易量最大的产品。 BITX的推出&#xff0c;正值贝莱德(BlackRock)向SEC递交现…

【教学类-36-04】Midjounery 各种图片切割(通用公式)

作品展示&#xff1a; 6*6切割36图 5*4图&#xff1a;20张 问题产生&#xff1a; 之前的代码是&#xff1a;一张图的四个坐标&#xff0c;有4张就要写4行。 后续发现&#xff0c;Midjounery生成的图片矩阵X Y数量不等&#xff0c;不仅有3*3&#xff0c;还有4*3、5*4的结构&am…

基于appnium+python+夜神模拟器的自动化

目录 1、安装夜神模拟器 2、定位元素 3、开始编码 首先搭好appnium环境&#xff01;参考https://www.cnblogs.com/testlearn/p/11419797.html 1、安装夜神模拟器 下载安装夜神模拟器后&#xff0c;在cmd命令输入adb connect 127.0.0.1:62001&#xff0c;显示出设备则表示…

虚拟稀疏卷积在多模态 3D 目标检测中的应用

论文背景 虚拟点云生成时&#xff0c;从图像中生成的虚拟点非常密集&#xff0c;在检测过程中引入了大量的冗馀计算量。同时&#xff0c;不准确的深度补全所带来的噪声会显著降低检测精度。 早期利用图像特征扩展LiDAR点的特征的方法&#xff0c;如语义掩膜和二维CNN特征。他…

机器学习11:逻辑回归-Logistic Regression

目录 1.计算概率 2.损失和正则化 2.1 逻辑回归的损失函数 2.2 逻辑回归中的正则化 3.参考文献 1.计算概率 许多问题需要概率估计作为输出。逻辑回归是一种极其有效的概率计算机制。实际上&#xff0c;我们可以通过以下两种方式使用返回的概率&#xff1a; 原始概率&…

Appium安装部署

目录 一、检查Java环境 二、安装android SDK 一、检查Java环境 Android SDK依赖ava环境&#xff0c;因此需要先安装jdk。在CMD中输入java -version 出现下图的结果&#xff0c;说明当前环境已安装jdk 如果提示java命令无效&#xff0c;请安装后进行下一步。 二、安装androi…

360手机打开USB调试+文件传输

360手机USB调试文件传输[用户版] 参考&#xff1a;360手机-360刷机360刷机包twrp、root 360刷机包360手机刷机&#xff1a;360rom.github.io 【前言】 *360手机USB调试 &#xff0c;必须提前打开“开发者模式USB调试”进行 【操作流程】 打开&#xff1a;开发者模式、USB调…

vue3进阶-----单文件组件

目录 三.vue3进阶 1.单文件组件 1-1组件定义-重塑经脉&#xff0c;断了&#xff1f; 1-2单文件组件(SFC)-独立日 1-3Vue-CLI创建项目-锅灶升级 1-4 vuecli选项介绍 1-5 VueCLI创建项目-风云再起 index.html main.js 作用 ES6 导入 导出 解决跨域之“Vue-Cli配置跨域…

Vue 自定义ColorPicker

Vue 自定义ColorPicker 创建自定义组件ColorPicker.vue <template><div class"box"><div class"picker-box"><div class"color" :style"{ background: color }"></div><div class"el-icon-arr…

使用元类实现ORM

使用元类实现ORM ORM 是 python编程语言后端web框架 Django的核心思想&#xff0c;“Object Relational Mapping”&#xff0c;即对象-关系映射&#xff0c;简称ORM。 我们想实现的目标是: 创建一个实例对象&#xff0c;用创建它的类名当做数据表名&#xff0c;用创建它的类属…

十分钟实现 Android Camera2 相机拍照

1. 前言 因为工作中要使用Android Camera2 API&#xff0c;但因为Camera2比较复杂&#xff0c;网上资料也比较乱&#xff0c;有一定入门门槛&#xff0c;所以花了几天时间系统研究了下&#xff0c;并在CSDN上记录了下&#xff0c;希望能帮助到更多的小伙伴。 上篇文章 我们使用…

【数据分享】1929-2022年全球站点的逐月平均压力数据(Shp\Excel\12000个站点)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 对于具体到监测站点的气象数据&#xff0c;之前我们分享过1929-2022年全球气象…

paddlespeech 声纹识别embedding向量提取;TTS文本合成语音

1、声纹识别embedding向量提取 参考&#xff1a; https://aistudio.baidu.com/aistudio/projectdetail/4353348 https://github.com/PaddlePaddle/PaddleSpeech/blob/develop/demos/speaker_verification/README_cn.md https://aistudio.baidu.com/aistudio/projectdetail/4…

Apache Zeppelin 番外篇——参与开源的得与失

背景 经常在公司做一些业务开发&#xff0c;公司里面由于各种人员流动等问题&#xff0c;导致代码质量也是参差不齐&#xff0c;最终问题就是很难维护&#xff0c;前期还想着能够优化代码&#xff0c;但是大部分时间都是需求都是倒排期&#xff0c;所以也导致不再想进行代码优…

车联网 CAN Bus 协议介绍与数据实时流处理

什么是 CAN Bus&#xff1f; CAN&#xff08;Control Area Network&#xff09;Bus 是一种串行通信协议&#xff0c;能够让设备之间可靠而高效地传输数据。它广泛应用于车辆领域&#xff0c;像神经系统一样连接车辆内部的各个电子控制单元。 CAN Bus 最初由博世公司在 20 世纪…