Python爬取中国福彩网彩票数据并以图表形式显示
网页分析
首先打开中国福彩网,点击双色球,选择往期开奖栏目
进入栏目后,选定往期的奖金数目作为我们想要爬取的目标内容

明确目标后,开始寻找数据所在的位置
鼠标右击页面,打开网页源代码,在源代码中搜索是否存在奖金金额数目

搜索过后,发现这个金额数据没有在网页的源代码中,所以想到用抓包的方式来尝试获取这些金额数据
右击检查,选择network选项卡,按下ctrl+r键刷新界面,开始捕捉数据包
在过滤掉一些png、jpg的数据包之后,我们锁定了一个以findDrawNotice开头的数据包,打开观察数据包的内容,发现这个正是我们想要抓取的数据包



现在已经找到了想要抓包的内容,现在可以开始着手写代码了
数据提取
我们分析过网页之后,选定了要抓取的数据包,开始使用requests请求来获取数据
url = 'http://www.cwl.gov.cn/cwl_admin/kjxx/findDrawNotice?name=ssq&issueCount=30'
headers = {"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36","Referer":"http://www.cwl.gov.cn/kjxx/ssq/"}
response = requests.get(url,headers=headers).text
这个网页可能会有一个小的反爬措施,于是我们就在headers中加入user-agent和referer两个头信息
我们使用print语句来打印一下response的内容

print之后会发现这个内容是以字符串的格式打印出来的,如果我们想从中提取数据,则必须将它转换成字典的格式
data_json = json.loads(response) #将数据转换为json格式
将数据转换之后,我们就可以使用键值对的方式来提取我们想要的数据了
datas = data_json["result"]
for data in datas:prizegrades = data["prizegrades"] #包含中奖金额的字典提取for item in prizegrades:print(item)typemoney = item['typemoney'] #中奖金额提取print(typemoney)
这里我们尝试着逐层提取彩票的奖金信息,提取到最近的一层时,将数据打印出来分析数据

可以看到前三个和我们想要提取的数据内容是一致的,这些type后面的数字指的是奖金的等级,就是说对应到的号码是多少就是几等奖
到此为止,我们已经将需要获取的中奖金额提取出来了
转换数据
等我们看到这些数据的时候,虽然看到的是数字形式,但是他的数据类型确是字符形,通过此前对pygal模块的了解,我们知道这个模块只可以将整形的数字转换成图表格式。
所以我们需要做的就是将每一个数字提取出来,并且转换成整形存入到列表中
由于我们想要提取的只是一等奖的奖金金额(因为二、三等奖的金额远小于一等奖,不适合在图表中观察),所以这里我加上了一个if语句判断
money_list = [] #创建空列表
for data in datas:prizegrades = data["prizegrades"]for item in prizegrades:type_num = item['type']typemoney = item['typemoney']if type_num == 1: #判断奖金等级是否为1money_list.append(int(typemoney))
但是我在运行这段代码的时候会提示错误,经过我的一番疯狂分析(百度求助),发现出错的原因是在提取奖金的时候会出现下划线和空字符串的干扰,而int转换数据类型则只能装换纯数字组成的字符串,所以转换的过程中会报错。但是这并不是一个大问题,我们只需要写一个if语句来跳过非法字符串就可以解决了,下面是正确的代码:
money_list = [] #创建空列表
for data in datas:prizegrades = data["prizegrades"]for item in prizegrades:typemoney = item['typemoney']if type_num == 1: #判断奖金等级是否为1if typemoney == "": #忽略空字符passelif typemoney == "_": #忽略下划线passelse: #将其他的可用数字放入列表money_list.append(int(typemoney))
print(money_list)
观察输出:

将数据转换成图表
#设置图表样式为柱状图
view = pygal.Bar()
#图表名
view.title = '奖金金额(¥)'
#将数据填入图表
view.add('money',money_list)
#在浏览器中显示图表
view.render_in_browser()
完整代码
import json
import pygalurl = 'http://www.cwl.gov.cn/cwl_admin/kjxx/findDrawNotice?name=ssq&issueCount=30'
headers = {"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36","Referer":"http://www.cwl.gov.cn/kjxx/ssq/"}
response = requests.get(url,headers=headers).text
data_json = json.loads(response)
datas = data_json["result"]
money_list = [] #创建空列表
for data in datas:prizegrades = data["prizegrades"]for item in prizegrades:type_num = item['type']typemoney = item['typemoney']if type_num == 1: #判断奖金等级是否为1if typemoney == "": #忽略空字符passelif typemoney == "_": #忽略下划线passelse: #将其他的可用数字放入列表money_list.append(int(typemoney))#设置图表样式为柱状图
view = pygal.Bar()
#图表名
view.title = '奖金金额(¥)'
#将数据填入图表
view.add('money',money_list)
#在浏览器中显示图表
view.render_in_browser()
实现结果

相关文章:
Python爬取中国福彩网彩票数据并以图表形式显示
网页分析 首先打开中国福彩网,点击双色球,选择往期开奖栏目 进入栏目后,选定往期的奖金数目作为我们想要爬取的目标内容 明确目标后,开始寻找数据所在的位置 鼠标右击页面,打开网页源代码,在源代码中搜索…...
0621作业
目录 多线程并发服务器模型服务器实现 select的TCP服务器模型服务器实现 select的TCP客户端实现 多线程并发服务器 模型 sfd socket(); bind(); listen(); while(1){newfd accept();pthread_create(&tid, NULL, do_cli_msg, [newfd, cin]集合);pthread_detach(tid); } …...
ps基础入门
1.基础 1.1新建文件 1.2创建指定形状 1.4移动工具 1.41移动画布中的任意元素 1.42移动画布 1.43修改画布大小 1.44修改图像大小 1.5框选工具 1.6矩形工具 1.7图层 1.71图层颜色修改 1.72…...
c语言常用易错记录
c语言常用易错记录 文章目录 c语言常用易错记录1.for循环 1.for循环 示例: #include <stdio.h>int main() {int i;for (i 0; i < 10; i) {printf("%d\n", i);}return 0; }执行顺序 备注:此图来源于b站鹏哥C语言视频课截图…...
制造业ERP五大生产模式详解!
制造业面临着从成本控制、生产效率到供应链管理的挑战,每一个环节都需要精细化的管理和高效的协同。而ERP系统,作为一种集信息技术与管理思想于一体的管理工具,正逐渐成为制造业转型升级的关键。那么,通过本文你将会了解到&#x…...
Python20 Numpy基础
NumPy(Numerical Python)是一个开源的Python库,广泛用于科学计算。它提供了一个高性能的多维数组对象,以及用于处理这些数组的工具和函数。NumPy是数据分析、机器学习、工程和科学研究中不可或缺的工具之一,因为它提供…...
暴雨虐长沙,生灵受煎熬
今天,“湖南长沙市遭遇强降雨,一小时的降雨量足够注满54个西湖”这消息,终于登上互联网社交平台热搜榜。 截图:来源社交网站 综合多家媒体消息概述如下。 昨(24日)天,湖南长沙市遭遇强降雨,一…...
iptables(5)常用扩展模块iprange、string、time、connlimit、limit
简介 之前我们已经介绍过扩展模块的简单使用,比如使用-m tcp/udp ,-m multiport参数通过--dports,--sports可以设置连续和非连续的端口范围。那么我们如何匹配其他的一些参数呢,比如源地址范围,目的地址范围,时间范围等,这就是我们这篇文章介绍的内容。 iprange扩展模块…...
Mars3d实现汽车尾气粒子效果从汽车屁股开始发射效果
本身的汽车尾气粒子效果:在汽车模型的中间发射的↓↓↓↓↓↓↓↓↓↓↓ Mars3d实例中是使用transY偏移值实现汽车尾气粒子效果从汽车屁股开始发射效果: // 动态运行车辆的尾气粒子效果 function addDemoGraphic4(graphicLayer) {const fixedRoute new…...
01_RISC-V 入门及指令集学习
参考文档 risc-v入门:https://blog.csdn.net/bebebug/article/details/128039038RISC-V OS:https://blog.csdn.net/bebebug/article/details/130551378riscv-spec文档:https://riscv.org/wp-content/uploads/2019/12/riscv-spec-20191213.pd…...
Facebook与地方文化:数字平台的多元表达
在当今数字化时代,社交媒体不仅仅是人们交流的工具,更是促进地方文化传播和表达的重要平台。作为全球最大的社交网络之一,Facebook在连接世界各地用户的同时,也成为了地方文化多元表达的重要舞台。本文将深入探讨Facebook如何通过…...
ArmSoM-Sige7/5/1 和树莓派5规格比较
引言 在当今快速发展的嵌入式系统领域,选择一款性能强大、功能丰富的开发板对于项目的成功至关重要。本文将介绍并比较 Sige7、Sige5、Raspberry Pi 5 和 Sige1 这四款开发板的关键规格和特性,帮助开发者和爱好者选择最适合其需求的平台。 ArmSoM-Sige…...
创建App
自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在Django项目中,推荐使用App来完成不同模块的任务,通过执行如下命令可以启用一个应用程序。 python manage.py startapp app…...
2024年6月上半月30篇大语言模型的论文推荐
大语言模型(LLMs)在近年来取得了快速发展。本文总结了2024年6月上半月发布的一些最重要的LLM论文,可以让你及时了解最新进展。 LLM进展与基准测试 1、WildBench: Benchmarking LLMs with Challenging Tasks from Real Users in the Wild Wi…...
Chromium下载
https://chromium.woolyss.com/download/ https://www.chromium.org/getting-involved/download-chromium/...
【Linux】彻底理解---环境变量(什么是环境变量,环境变量有什么作用?)
目录 一、前言 二、什么是环境变量? 三、如何添加环境变量? 四、如何获取环境变量? 💧环境变量相关的命令💧 💧测试HOME与USER💧 🔥环境变量的获取方式🔥 ① en…...
VMware完美安装Ubuntu20.04
一、官网下载Ubuntu20.04 下载地址为:https://releases.ubuntu.com/https://releases.ubuntu.com/ 下载完后镜像为ubuntu-20.04.4-desktop-amd64.iso 二、Ubuntu安装 2.1、打开VMware player,并创建新虚拟机。 2.2、点击浏览按钮选择需要安装的镜像 2…...
使用Spring Boot作为CMS系统的后台,Nuxt.js作为前台的分析
在现代Web开发中,前后端分离架构越来越受欢迎。Spring Boot和Nuxt.js的组合为构建内容管理系统(CMS)提供了一个强大的解决方案。本文将分析这种组合的优势、挑战以及应用场景。 1. 技术概述 1.1 Spring Boot Spring Boot是基于Java的框架&…...
Spring Boot整合Druid:轻松实现SQL监控和数据库密码加密
文章目录 1 引言1.1 简介1.2 Druid的功能1.3 竞品对比 2 准备工作2.1 项目环境 3 集成Druid3.1 添加依赖3.2 配置Druid3.3 编写测试类测试3.4 访问控制台3.5 测试SQL监控3.6 数据库密码加密3.6.1 执行命令加密数据库密码3.6.2 配置参数3.6.3 测试 4 总结 1 引言 1.1 简介 Dru…...
推荐一款好用的编辑工具——onlyoffice桌面编辑器8.1
读者大大们好呀!!!☀️☀️☀️ 🔥 欢迎来到我的博客 👀期待大大的关注哦❗️❗️❗️ 🚀欢迎收看我的主页文章➡️寻至善的主页 文章目录 🔥前言🚀版本更新概览🚗文档编辑PDF编辑器…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
