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

这篇具有很好参考价值的文章主要介绍了【Python爬虫】利用爬虫抓取双色球开奖号码,获取完整数据,简洁45行代码实现,更新时间2023-06-28。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

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

它将只爬取最近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()

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

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

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

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)

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

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

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

【Python爬虫】利用爬虫抓取双色球开奖号码,获取完整数据,简洁45行代码实现,更新时间2023-06-28,python,爬虫,开发语言文章来源地址https://www.toymoban.com/news/detail-611547.html

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()
import torch
import torch.nn as nn
import torch.optim as optim
import numpy as np
import pandas as pd

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

# 提取号码数据,转换成PyTorch张量
numbers = data.iloc[:, 1:8].values.astype(float)
numbers = torch.tensor(numbers, dtype=torch.float32)

# 归一化数据
numbers /= 33.0  # 因为双色球号码范围是1-33

# 构建训练集和测试集
train_data = numbers[:-1, :6]  # 使用前6期红球号码作为输入特征
train_red_balls = numbers[1:, :6]  # 使用第2到第7期红球号码作为训练的目标值
train_blue_balls = numbers[1:, 6]  # 使用第2到第7期蓝球号码作为训练的目标值

# 定义预测神经元模型
class PredictNeuronNet(nn.Module):
    def __init__(self, input_dim):
        super(PredictNeuronNet, self).__init__()
        self.predict_red_balls = nn.Linear(input_dim, 6)  # 输入维度为input_dim,输出维度为6,用于预测红球号码
        self.predict_blue_ball = nn.Linear(input_dim, 1)  # 输入维度为input_dim,输出维度为1,用于预测蓝球号码

    def forward(self, x):
        red_balls = self.predict_red_balls(x)
        blue_ball = self.predict_blue_ball(x)
        return red_balls, blue_ball

# 训练函数
def train_predict_neuron_model(model, criterion, optimizer, num_epochs):
    for epoch in range(num_epochs):
        red_balls, blue_ball = model(train_data)
        loss_red = criterion(red_balls, train_red_balls)  # 红球号码的损失
        loss_blue = criterion(blue_ball.view(-1), train_blue_balls)  # 蓝球号码的损失
        loss = loss_red + loss_blue

        optimizer.zero_grad()
        loss.backward()
        optimizer.step()

        if (epoch + 1) % 10 == 0:
            print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}')

# 主函数
if __name__ == '__main__':
    input_dim = 6  # 输入特征维度为6,即前6期红球号码
    model = PredictNeuronNet(input_dim)

    # 定义损失函数和优化器
    criterion = nn.MSELoss()
    optimizer = optim.SGD(model.parameters(), lr=0.01)

    # 训练模型
    num_epochs = 1000
    train_predict_neuron_model(model, criterion, optimizer, num_epochs)

    # 使用模型进行预测
    test_data = numbers[-1, :6]  # 使用最后6期红球号码作为测试数据的输入
    with torch.no_grad():
        test_data = test_data.view(1, -1)  # 将测试数据转换成(1, 6)的形状
        red_balls, blue_ball = model(test_data)

    # 将预测结果转换回原始范围
    red_balls *= 33.0
    blue_ball *= 33.0

    print("Predicted numbers for the next period (Red Balls):")
    print(red_balls)
    print("Predicted number for the next period (Blue Ball):")
    print(blue_ball)

到了这里,关于【Python爬虫】利用爬虫抓取双色球开奖号码,获取完整数据,简洁45行代码实现,更新时间2023-06-28的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 做一件荒谬的事:用AI推理下一次双色球结果 v0.1

    github地址:https://github.com/yinqishuo/Bicolorballs-AI 事情的起因是父亲被亲戚安利,突然喜欢上了双色球,连规则和开奖结果怎么看都不懂的他,让我研究研究这个事,给他选个号。他还说老家有好几个人中了几百万,买个车买了房,我…,谁能拒绝一个2块钱就能买到的百万奖金梦

    2024年02月04日
    浏览(33)
  • Python爬虫:利用JS逆向抓取携程网景点评论区图片的下载链接

    1. 前言 文章内容可能存在版权问题,为此,小编不提供相关实现代码,只是从js逆向说一说到底怎样实现这个的过程,希望能够帮助到那些正在做js逆向相关操作的读者,需要代码的读者单独私信我吧!不过,需要注意的是: 代码仅供学习,不能用于商业活动,望读者切记。

    2024年02月15日
    浏览(70)
  • Python爬虫抓取网页

    本节讲解第一个 Python 爬虫实战案例:抓取您想要的网页,并将其保存至本地计算机。 首先我们对要编写的爬虫程序进行简单地分析,该程序可分为以下三个部分: 拼接 url 地址 发送请求 将照片保存至本地 明确逻辑后,我们就可以正式编写爬虫程序了。 本节内容使用 urll

    2024年02月08日
    浏览(49)
  • python爬虫——怎么抓取职位信息

    目录 背景 为什么要抓取职位信息 怎么抓取职位信息 代码示例 被反爬怎么办 使用代理IP进行爬取 总结 高考刚结束,马上又到了大学生毕业的时候了,各大厂也开始了一波招工潮了,想知道大厂或竞争对手都招些什么人,有什么需求,于是打算爬点职位信息参考下。 抓取职

    2024年02月09日
    浏览(44)
  • Python网络爬虫-WebSocket数据抓取

    目录 前言 1、WebSocket请求的分析通常涉及以下几个方面: 2、利用WebSocket爬取数据 总结 最后,创作不易!非常感谢大家的关注、点赞、评论啦!谢谢三连哦!好人好运连连,学习进步!工作顺利哦!  博主介绍:✌专注于前后端、机器学习、人工智能应用领域开发的优质创作

    2024年04月27日
    浏览(42)
  • python爬虫——抓取表格pandas当爬虫用超简单

    pandas还能当爬虫用,你敢信吗?而且超级简单,两行代码就趴下来 只要想提取的表格是属于table 标签内,就可以使用pd.read_html(),它可以将网页上的表格都抓取下来,并以DataFrame的形式装在一个列表中返回。 例子: 比如这个基金网站,想趴下基金的持仓股表格, http://vip.s

    2024年01月23日
    浏览(40)
  • 【Python】【进阶篇】五、Python爬虫的抓取网页

    Python 爬虫应用案例:爬取目标的网页,并将其保存到本地。 对要编写的爬虫程序进行分析,可以简单分为为以下三个部分: 目标 url 地址 发送请求 将响应数据保存至本地 明确逻辑后,我们就可以正式编写爬虫程序了。 在这里我们使用标准库 urllib 库来编写爬虫,导入所需

    2023年04月10日
    浏览(51)
  • 【爬虫实践】使用Python从网站抓取数据

            本周我不得不为客户抓取一个网站。我意识到我做得如此自然和迅速,分享它会很有用,这样你也可以掌握这门艺术。 【免责声明:本文展示了我的抓取做法,如果您有更多相关做法请在评论中分享】 确定您的目标:一个简单的 html 网站 在 Python 中设计抓取方案

    2024年02月14日
    浏览(44)
  • 使用Python进行Web抓取和爬虫

    Web抓取和爬虫技术是现代互联网应用中不可或缺的一部分。它们可以帮助我们自动收集和处理大量的网页内容,从而提取有价值的信息。Python是一种强大的编程语言,拥有丰富的第三方库和框架,使得在Python中进行Web抓取和爬虫编程变得非常简单和高效。 本文将从以下几个方

    2024年02月22日
    浏览(44)
  • 如何使用 Python 爬虫抓取动态网页数据

    随着 Web 技术的不断发展,越来越多的网站采用了动态网页技术,这使得传统的静态网页爬虫变得无能为力。本文将介绍如何使用 Python 爬虫抓取动态网页数据,包括分析动态网页、模拟用户行为、使用 Selenium 等技术。 在进行动态网页爬取之前,我们需要先了解动态网页和静

    2023年04月24日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包