使用 Python 爬取并打印双色球近期 5 场开奖数据

news2025/4/6 9:40:16

使用 Python 爬取并打印双色球近期 5 场开奖数据

  • 前期准备
    • 安装所需库
  • 完整代码
  • 代码解析
    • 1. 导入必要的库
    • 2. 定义函数 get_recent_five_ssq
    • 3. 设置请求的 URL 和 Headers
    • 4. 发送请求并处理响应
    • 5. 解析 HTML 内容
    • 6. 提取并打印数据
    • 7. 错误处理

首先看下运行的效果图:
在这里插入图片描述
我访问官网对比近5期的结果是没有问题的:
在这里插入图片描述

我们将使用 Python 爬取并打印双色球近期 5 场的开奖数据。这个过程涉及到网页抓取和数据解析,利用 requests 库来发送 HTTP 请求以获取数据,以及 BeautifulSoup 库来解析 HTML 内容。最终,打印出期号、日期、红球和蓝球的信息。

前期准备

安装所需库

首先,确保你已经安装了 requestsBeautifulSoup 库。你可以使用以下命令进行安装:

pip install requests beautifulsoup4

完整代码

下面是整个的完整代码:

import requests
from bs4 import BeautifulSoup

def get_recent_five_ssq():
    # 目标URL,用于获取最新的开奖信息
    url = "https://datachart.500.com/ssq/history/newinc/history.php?start=00001&end=99999"
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
    }

    try:
        # 发送请求获取网页内容
        response = requests.get(url, headers=headers)
        response.encoding = 'gbk'  # 设置正确的编码方式
        response.raise_for_status()

        # 解析网页内容
        soup = BeautifulSoup(response.text, 'html.parser')
        table = soup.find('tbody', {'id': 'tdata'})

        if not table:
            print("无法找到开奖数据表格,可能是网页结构发生变化。")
            return

        # 提取最新的5场开奖数据
        recent_five = table.find_all('tr')[:5]  # 取前5行数据

        # 打印开奖结果
        for row in recent_five:
            cols = row.find_all('td')
            issue = cols[0].text.strip()
            date = cols[15].text.strip()
            red_balls = [cols[i].text.strip() for i in range(1, 7)]
            blue_ball = cols[7].text.strip()

            print(f"期号: {issue}, 日期: {date}, 红球: {', '.join(red_balls)}, 蓝球: {blue_ball}")

    except requests.RequestException as e:
        print(f"请求错误: {e}")

# 执行函数
get_recent_five_ssq()

代码解析

1. 导入必要的库

import requests
from bs4 import BeautifulSoup

这两行代码导入我们将要使用的库。 requests 用于发送 HTTP 请求,而 BeautifulSoup 用于解析 HTML 内容。

2. 定义函数 get_recent_five_ssq

def get_recent_five_ssq():

我们定义了一个函数 get_recent_five_ssq 来封装获取并打印双色球开奖数据的操作。

3. 设置请求的 URL 和 Headers

url = "https://datachart.500.com/ssq/history/newinc/history.php?start=00001&end=99999"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
}
  • URL : 指向 500 彩票的双色球历史开奖信息页面。
  • Headers : 设置请求的 User-Agent ,模拟浏览器请求以避免被服务器拒绝。

4. 发送请求并处理响应

response = requests.get(url, headers=headers)
response.encoding = 'gbk'  # 设置正确的编码方式
response.raise_for_status()
  • 使用 requests.get 发送 GET 请求。
  • 设置 response.encodinggbk ,以确保能正确处理网页的编码格式。

5. 解析 HTML 内容

soup = BeautifulSoup(response.text, 'html.parser')
table = soup.find('tbody', {'id': 'tdata'})
  • 通过 BeautifulSoup 解析 HTML 内容。
  • 使用 soup.find 找到包含开奖数据的表格。

6. 提取并打印数据

recent_five = table.find_all('tr')[:5]  # 取前5行数据
for row in recent_five:
    cols = row.find_all('td')
    issue = cols[0].text.strip()
    date = cols[15].text.strip()
    red_balls = [cols[i].text.strip() for i in range(1, 7)]
    blue_ball = cols[7].text.strip()

    print(f"期号: {issue}, 日期: {date}, 红球: {', '.join(red_balls)}, 蓝球: {blue_ball}")
  • 提取最新的 5 场开奖数据。
  • 遍历每行数据,并提取期号、日期、红球和蓝球的信息。
  • 使用 print 函数打印每场开奖的结果。

7. 错误处理

except requests.RequestException as e:
    print(f"请求错误: {e}")
  • 使用 try/except 捕获并处理请求过程中可能出现的异常。

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

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

相关文章

再见VS Code!Google IDE 正颠覆传统开发体验

云端开发的革命:Google Project IDX 如何颠覆传统开发体验 在软件开发领域,Google 最新推出的 Project IDX 绝非仅仅是另一个“基于浏览器的 VS Code”——它是一次真正的范式转变。与 VS Code、Cursor 等传统工具不同,IDX 是一个完全云原生的…

AI+自动化测试:如何让测试编写效率提升10倍?

文章目录 摘要传统自动化测试的痛点编写测试用例太费时间测试覆盖率难以保证UI 测试维护成本高 AI 如何优化自动化测试?AI 生成单元测试:减少重复工作,提高覆盖率传统方法 VS AI 方法 使用 AI 生成 Python 单元测试自动补全边界情况传统方法 …

01-STM32(介绍、工具准备、新建工程)p1-4

文章目录 工具准备和介绍硬件设备stm32简介和arm简介stm32简介STM32命名规则STM32选型STM32F103C8T6最小系统板引脚定义STM32启动配置STM32最小系统电路ARM简介 软件安装注册器件支持包安装ST-LINK驱动安装USB转串口驱动 新建工程创建stm32工程STM32工程编译和下载型号分类及缩…

Win10定时任务计划无法显示要执行的EXE任务程序界面,问题解决办法

用C#开发的一款WINFORM程序,在电脑测试一切顺利,运行结果正确。但用电脑的定时任务执行时,程序界面不显示,重启电脑、各种试都不行,最终问题解决。 解决办法: 要选“只在用户登陆时运行”,才能执…

STM32CubeMX-H7-12-IIC读写MPU6050模块(中)-MPU6050模块详解以及软件IIC驱动

前言 上一篇我们已经完成对IIC代码基本框架的编写,以及获取MPU6050的ID,接下来我们逐一分析这个模块的功能,并用IIC驱动 建议看完上一篇再来看这篇 MPU6050寄存器介绍 1.电源管理寄存器(PWR_MGMT_1,地址:0…

springboot2.7.x整合nacos+seata

1、nacos及seata下载地址 Nacos Server 下载 | Nacos 官网 Seata Java Download | Apache Seata 这里的seata版本用2.1.0版本。 2、启动nacos D:\本地-seata-nacos\nacos-server\bin>startup.cmd -m standalone 3、修改seata的conf下的application的内容 这里的数据库…

为 IDEA 设置管理员权限

IDEA 安装目录 兼容性选择管理员身份运行程序 之后 IDEA 中的操作(包括终端中的操作)都是管理员权限的了

单片机学习笔记8.定时器

IAP15W4K58S4定时/计数器结构工作原理 定时器工作方式控制寄存器TMOD 不能进行位寻址,只能对整个寄存器进行赋值 寄存器地址D7D6D5D4D3D2D1D0复位值TMOD89HGATEC/(T低电平有效)M1M0GATEC/(T低电平有效)M1M000000000B D0-D3为T0控制,D4-D7为T1控制 GAT…

vue3实现markdown预览和编辑

Markdown作为一种轻量级标记语言,已经成为开发者编写文档的首选工具之一。在Vue3项目中集成Markdown编辑和预览功能可以极大地提升内容管理体验。本文将介绍如何使用Vditor这一强大的开源Markdown编辑器在Vue3项目中实现这一功能。 一、Vditor简介 Vditor是一款浏…

高并发秒杀系统接入层如何设计

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

C++异常处理 throw try catch

C 异常处理概述 C 异常处理机制提供了一种在程序运行时捕获错误或异常情况的方式。异常处理的目的是使得程序在遇到错误时能够优雅地终止或恢复,并防止程序出现崩溃。C 使用 try, throw, 和 catch 关键字来实现异常处理。 异常处理的基本结构: throw: …

纯css实现环形进度条

需要在中实现一个定制化的环形进度条&#xff0c;最终效果如图&#xff1a; 使用代码 <divclass"circular-progress":style"{--progress: nextProgress,--color: endSliderColor,--size: isFull ? 60rpx : 90rpx,}"><div class"inner-conte…

0基础 | 硬件 | 电源系统 一

降压电路LDO 几乎所有LDO都是基于此拓扑结构 图 拓扑结构 LDO属于线性电源&#xff0c;通过控制开关管的导通程度实现稳压&#xff0c;输出纹波小&#xff0c;无开关噪声 线性电源&#xff0c;IoutIin&#xff0c;发热功率P电压差△U*电流I&#xff0c;转换效率Vo/Vi LDO不适…

获取KUKA机器人诊断文件KRCdiag的方法

有时候在进行售后问题时需要获取KUKA机器人的诊断文件KRCdiag&#xff0c;通过以下方法可以获取KUKA机器人的诊断文件KRCdiag&#xff1a; 1、将U盘插到控制柜内的任意一个USB接口&#xff1b; 2、依次点【主菜单】—【文件】—【存档】—【USB&#xff08;控制柜&#xff09…

一周学会Pandas2 Python数据处理与分析-NumPy数据类型

锋哥原创的Pandas2 Python数据处理与分析 视频教程&#xff1a; 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili NumPy 提供了丰富的数据类型&#xff08;dtypes&#xff09;&#xff0c;主要用于高效数值计算。以下是 NumPy 的主要…

Redis核心机制-缓存、分布式锁

目录 缓存 缓存更新策略 定期生成 实时生成 缓存问题 缓存预热&#xff08;Cache preheating&#xff09; 缓存穿透&#xff08;Cache penetration&#xff09; 缓存雪崩&#xff08;Cache avalanche&#xff09; 缓存击穿&#xff08;Cache breakdown&#xff09; 分…

如何在Ubuntu上安装Dify

如何在Ubuntu上安装Dify 如何在Ubuntu上安装docker 使用apt安装 # Add Dockers official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg…

Python FastApi(13):APIRouter

如果你正在开发一个应用程序或 Web API&#xff0c;很少会将所有的内容都放在一个文件中。FastAPI 提供了一个方便的工具&#xff0c;可以在保持所有灵活性的同时构建你的应用程序。假设你的文件结构如下&#xff1a; . ├── app # 「app」是一个 Python 包…

【算法竞赛】状态压缩型背包问题经典应用(蓝桥杯2019A4分糖果)

在蓝桥杯中遇到的这道题&#xff0c;看上去比较普通&#xff0c;但其实蕴含了很巧妙的“状态压缩 背包”的思想&#xff0c;本文将从零到一&#xff0c;详细解析这个问题。 目录 一、题目 二、思路分析&#xff1a;状态压缩 最小覆盖 1. 本质&#xff1a;最小集合覆盖问题…

常微分方程 1

slow down and take your time 定积分应用回顾常微分方程的概述一阶微分方程可分离变量齐次方程三阶线性微分方程 一阶线性微分方程不定积分的被积分函数出现了绝对值梳理微分方程的基本概念题型 1 分离变量题型 2 齐次方程5.4 题型 3 一阶线性微分方程知识点5.55.6 尾声 定积分…