python爬取网页趋势图的底层数据信息——以历年的黄金价格为例

news2024/11/18 9:46:47

一、问题引入

在这里插入图片描述

黄金价格网址:https://china.gold.org/goldhub/data/gold-prices

问题引入:现有历年的黄金价格信息(如图所示),但呈现的方式是趋势图,并没有直接以表格的形式罗列出来,只有当鼠标悬停在趋势图上方才显示所指日期的黄金价格信息,本次python程序的目标是将历年的黄金价格信息爬取下来并绘图展示。

二、基本思路

在这里插入图片描述
在这里插入图片描述

右键点击“检查”,在Network菜单栏中找到Search搜索框,输入某天的黄金价格(这里以1981年1月2日的黄金价格为例,数据显示为29.09),当输入29.09却无法搜索到任何信息时,可能是数据精度的问题(趋势图显示的黄金价格已经是经过四舍五入处理后的了),这里改成搜索29.08即可找到趋势图的底层数据来源。

在这里插入图片描述
在这里插入图片描述

检索到数据后,再从Response跳转到Headers,找到趋势图底层数据的请求网址(Request URL),打开该网址后,显示结果如下图所示。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以发现,“chartData”就是底层数据存储的地方,“USD”是按美元结算的黄金价格信息,“CNY”是按人民币结算的黄金价格信息,第一列是数字时间戳信息,第二列是黄金价格信息,值得注意的是:第一列数字时间戳信息需要转换为我们常见的日期格式,即“某年某月某日”。

三、python程序

import time
import requests
import pandas as pd
import matplotlib.pylab as plt

plt.rcParams['font.sans-serif'] = ['SimSun']
plt.rcParams['axes.unicode_minus'] = False

url = 'https://fsapi-china.gold.org/api/goldprice/v11/chart/price/usd,cny/grams'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36'}
response = requests.get(url, headers=headers)
html = response.json()['chartData']['CNY'] # 提取按人民币结算的历年黄金价格信息
for sublist in html:
    sublist[0] = time.strftime('%Y-%m-%d', time.localtime(sublist[0] / 1000)) # 数字时间戳转换为日期格式

data = pd.DataFrame(html, columns=['Date', 'CNY']).dropna() # 删除空值
data.reset_index(drop=True, inplace=True) # 更新索引index
print(data)

fig, ax = plt.subplots(1, 1)
ax.plot(data['Date'], data['CNY'])
fig.autofmt_xdate(rotation=45) # 对x轴日期进行45度旋转
plt.gca().xaxis.set_major_locator(plt.MultipleLocator(20)) # 调整x轴日期显示间距,每隔20条数据显示一次日期
plt.show()

输出结果如下:
在这里插入图片描述

如果打算将x轴的日期显示格式从“某年某月某日”改成“某年某月”,只需要将下面代码进行更改即可。

修改前:

ax.plot(data['Date'], data['CNY'])

修改后:

ax.plot(pd.to_datetime(data['Date']).dt.to_period('M').astype(str),data['CNY'])

输出结果如下:
在这里插入图片描述

如果打算将x轴的日期显示间距调大,只需要将下面代码进行更改即可。

修改前:

plt.gca().xaxis.set_major_locator(plt.MultipleLocator(20))

修改后:

plt.gca().xaxis.set_major_locator(plt.MultipleLocator(30))

输出结果如下:
在这里插入图片描述

如果需要不同核算单位的历年黄金价格信息,可以将url换成以下这些网址。

# url='https://fsapi-china.gold.org/api/goldprice/v11/chart/price/cny/oz' # 盎司
# url='https://fsapi-china.gold.org/api/goldprice/v11/chart/price/cny/grams' # 克
# url='https://fsapi-china.gold.org/api/goldprice/v11/chart/price/cny/kg' # 千克
# url='https://fsapi-china.gold.org/api/goldprice/v11/chart/price/cny/tonnes' # 吨
# url='https://fsapi-china.gold.org/api/goldprice/v11/chart/price/cny/tael' # 两
# url='https://fsapi-china.gold.org/api/goldprice/v11/chart/price/cny/tola' # 拖拉

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

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

相关文章

家政服务小程序:家政行业的数字化转型

随着大众生活水平的提高,以及老龄化的加速,家政服务已经成为了大众生活中不可或缺的一部分。目前,我国家政服务市场的规模在持续扩大,发展前景一片大好。在日益提升的家政需求下,大众对家政服务的种类也逐渐多样。 为…

RuoYi-Vue-Plus (SPEL 表达式)

RuoYi-Vue-Plus 中SPEL使用 DataScopeType 枚举类中: /*** 部门数据权限*/DEPT("3", " #{#deptName} #{#user.deptId} ", " 1 0 "), PlusDataPermissionHandler 拦截器中定义了解析器: buildDataFilter 方法中根据注解的…

Vue 项目 尚品汇(一)

一、开发环境构造 Vue-cli 脚手架初始化项目 node 平台 和 webpack 和 淘宝镜像 环境 (一)脚手架 1.安装脚手架 在我们的项目文件夹中路径输入 cmd 然后在终端中输入 vue create app(项目名) 选择 vue 2 然后安装 (因为是基于 vue2 开…

Object类的公共方法面试问题及回答

1. 什么是 Object 类? 答: Object 类是 Java 中所有类的超类。每个类都使用 Object 作为树的根,所有对象(包括数组)都实现这个类的方法。 2. Object 类中有哪些重要的方法? 答: equals(Obje…

上海开放大学《Java程序基础课程实验1》形考作业线上实践答案

答案:更多答案,请关注【电大搜题】微信公众号 答案:更多答案,请关注【电大搜题】微信公众号 答案:更多答案,请关注【电大搜题】微信公众号 上 海 开 放 大 学 学生实验报告 分校(站&…

启明云端2.4寸屏+ESP32-S3+小型智能调速电动家用除草机案例 触控三档调速,能显示电压故障码

今天给大家分享个启明云端2.4寸屏ESP32-S3小型智能调速电动家用除草机案例,国外有草坪文化,这个机器能智能触控三档调速,带屏能显示电压故障码,数显档位(3档最大),触控屏,长按3秒就能…

【氮化镓】GaN 器件的高温运行

《High Temperature Operation of E-Mode and D-Mode AlGaN/GaN MIS-HEMTs With Recessed Gates》,由HANWOOL LEE, HOJOON RYU, JUNZHE KANG, 和 WENJUAN ZHU (IEEE高级会员) 四位作者共同撰写,发表在《IEEE Journal of the Electron Devices Society》上…

和丰多媒体信息发布系统 QH.aspx 文件上传致RCE漏洞复现

0x01 产品简介 和丰多媒体信息发布系统也称数字标牌(Digital Signage),是指通过大屏幕终端显示设备,发布商业、财经和娱乐信息的多媒体专业视听系统,常被称为除纸张媒体、电台、电视、互联网之外的“第五媒体”。该系统基于Web的全B/S先进架构,支持大用户数、大并发数及…

LeetCode题练习与总结:删除排序链表中的重复元素Ⅱ--82

一、题目描述 给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。 示例 1: 输入:head [1,2,3,3,4,4,5] 输出:[1,2,5]示例 2: 输入:…

容器的通俗讲解:轻松理解容器技术

文章目录 什么是容器?容器与虚拟机的区别容器如何工作?容器的优势容器的应用场景常见容器技术相关解决方案 在当今的软件开发领域,容器技术已经成为一种异常流行的技术,但对于初学者来说,容器究竟是什么以及它们如何工…

Stm32CubeMX 为 stm32mp135d 添加网卡 eth

Stm32CubeMX 为 stm32mp135d 添加网卡 eth 一、启用设备1. eth 设备添加2. eth 引脚配置2. eth 时钟配置 二、 生成代码1. optee 配置2. uboot 配置3. linux 配置 bringup 可参考:Stm32CubeMX 生成设备树 一、启用设备 1. eth 设备添加 我这里只启用一个eth设备&…

容器组_概述

📕作者简介: 过去日记,致力于Java、GoLang,Rust等多种编程语言,热爱技术,喜欢游戏的博主。 📘相关专栏Rust初阶教程、go语言基础系列、spring教程等,大家有兴趣的可以看一看 📙Jav…

Vitis HLS 学习笔记--S_AXILITE 寄存器及驱动

目录 1. 简介 2. S_AXILITE Registers 寄存器详解 2.1 “隐式”优势 2.2 驱动程序文件 2.3 硬件头文件 2.4 硬件头文件中 SC/COR/TOW/COH 的解释 2.5 驱动控制过程 3. 总结 1. 简介 回顾此博文《Vitis HLS 学习笔记--Syn Report解读(1)-CSDN博…

程序员与土地的关系

目录 一、土地对人类的重要性 二、程序员与土地的关系 二、程序员如何利用GIS技术改变土地管理效率? 四、GIS技术有哪些运用? 五、shapely库计算多边形面积的例子 一、土地对人类的重要性 土地资源对人类是至关重要的。土地是人类赖…

国产操作系统上如何比较软件版本 _ 统信UOS _ 麒麟KOS _ 中科方德

原文链接:国产操作系统上如何比较软件版本 | 统信UOS | 麒麟KOS | 中科方德 Hello,大家好啊!在国产操作系统上管理软件版本是确保系统安全性和功能稳定性的关键一环。今天,我将向大家展示如何通过编写脚本在国产操作系统上检查软件…

JAVASE练手项目-ATM

此项目使用到的技术主要是面向对象和JAVA的常用API和ArrayList实现。可以用来做JAVA的基础练手或者是期末作业。 主要功能是:用户开户,登录,存钱,取钱,转账,注销,修改密码。 注:下…

【消息队列】RabbitMQ五种消息模式

RabbitMQ RabbitMQRabbitMQ安装 常见的消息模型基本消息队列SpringAMQPWorkQueue消息预取发布订阅模式Fanout ExchangeDirectExchangeTopicExchange 消息转换器 RabbitMQ RabbitMQ是基于Erlang语言开发的开源消息通信中间件 官网地址:https://www.rabbitmq.com/ R…

python 反引号怎么打

切换到英文输入法模式下。 找到电脑键盘 Esc 下面的键。 敲两下就出现反引号了。

在一台交换机上配置VLAN

实验环境 实验拓扑图结构如图12.12所示,其中PC1和PC3属于VLAN 2,PC2属于 VLAN 3,PC1的IP地址为192.168.0.2/24,PC2的IP地址为192.168.1.2/24,PC3的 IP地址为192.168.0.3/24。 图12.12 需求描述 要求处于相同VLAN中的主…

正版Office-Word使用时却提示无网络连接请检查你的网络设置 然后重试

这是购买电脑时自带的已经安装好的word。看纸箱外壳有office标记,但是好像没有印系列号。 某天要使用。提示:无网络连接请检查你的网络设置。 经过网上高手的提示: 说要勾选勾选ssl3.0、TLS1.0、1.1、1.2。 我的截图 我电脑进去就缺1.2. …