爬虫实战丨基于requests爬取比特币信息并绘制价格走势图

文章目录

  • 写在前面
    • 实验环境
    • 实验描述
    • 实验内容
  • 写在后面

写在前面

本期内容:基于requests爬取比特币信息并绘制价格走势图

下载地址:https://download.csdn.net/download/m0_68111267/88734451

实验环境

  • anaconda丨pycharm
  • python3.11.4
  • requests

安装requests库的命令:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests

实验描述

  1. 学习网络爬虫相关技术,熟悉爬虫基本库requests的使用。
  2. 熟悉网络爬虫相关基础知识。

实验内容

1. 尝试爬取网站数据

编写实例文件"bt01.py", 抓取网站中BTC和ETH的报价数据并打印输出BTC和ETH的实时价格:

程序设计

"""
作者:Want595
微信号:Want_595
公众号:Want595
"""
import requestsdef price(symbol, comparison_symbols=['USD'], exchange=''):url = 'https://min-api.cryptocompare.com/data/price?fsym={}&tsyms={}' \.format(symbol.upper(), ','.join(comparison_symbols).upper())if exchange:url += '&e={}'.format(exchange)print(url)page = requests.get(url)data = page.json()return dataprint("当前BTC的美元价格为:" + str(price('BTC')))
print("当前ETH的美元价格为:" + str(price('ETH')))

程序分析

这段代码使用了Python的requests库来获取加密货币的价格信息。它定义了一个名为price的函数,该函数接受一个代币符号作为参数,并可选地接受比较货币符号列表和交易所名称。

函数的逻辑是先构建一个url,然后使用requests库发送GET请求获取到加密货币的价格数据。该url使用了Cryptocompare的API,通过拼接符号和比较货币来构建特定的API请求。

在主函数中,它使用price函数分别获取了BTC和ETH的美元价格,然后将结果打印出来。

要对这段代码进行详细分析,可以从以下几个方面入手:

  1. 函数的参数和返回值:函数接受一个代币符号作为参数,可选地接受比较货币符号列表和交易所名称。它返回一个包含价格信息的字典对象。

  2. API请求:函数构建了一个特定的API请求url,然后使用requests库发送GET请求获取到加密货币的价格数据。这个请求使用了Cryptocompare的API,可以根据代币符号和比较货币获取实时价格信息。

  3. 数据解析和处理:函数获取到API返回的数据后,使用json()方法将其转换为Python字典对象。然后,将价格信息提取出来并返回。

  4. 主函数的使用:主函数调用了price函数来获取BTC和ETH的美元价格,并将结果打印出来。

总体来说,这段代码是一个简单的加密货币价格获取程序。它使用了Cryptocompare的API来获取实时价格数据,并将结果返回。可以根据需要进一步扩展和修改该代码,以适应更多的加密货币和交易所。

运行结果

1

2. 简单绘制一下比特/美元价格曲线

编写实例文件"bt02.py", 使用matplotlib库绘制比特/美元的价格曲线:

程序设计

"""
作者:Want595
微信号:Want_595
公众号:Want595
"""
from bt01 import price
import datetime
import matplotlib.pyplot as pltx = [0]
y = [0]
fig = plt.gcf()
fig.show()
fig.canvas.draw()
i = 0
while(True):data = price('BTC')i += 1x.append(i)y.append(data['USD'])plt.ylim([0, 100000])plt.title("BTC vs USD, Last Update is: " + str(datetime.datetime.now()))plt.plot(x, y)fig.canvas.draw()plt.pause(10)

程序分析

这段代码是一个用于实时绘制比特币价格走势图的程序。它导入了一个名为price的函数,该函数在之前的代码中已经定义了,用于获取比特币的价格信息。同时,它还导入了一些必要的库,例如datetime和matplotlib.pyplot。

代码中定义了两个空列表x和y,用于存储时间和比特币价格。接下来,创建一个图形容器fig,并使用plt.gcf()方法初始化。然后,显示图形容器fig,并通过fig.canvas.draw()绘制空图。

使用一个while循环不断获取比特币的价格信息,并像之前一样调用price函数。然后,将时间和价格分别添加到x和y列表中。接下来,通过plt.ylim()设置y轴的范围,plt.title()设置图表标题,并使用plt.plot()方法绘制x和y的曲线。最后,使用fig.canvas.draw()绘制更新后的图形,并使用plt.pause()方法暂停10秒钟。

总体来说,这段代码可以不断获取比特币的实时价格,并以折线图的形式展示出来。通过不断更新图形容器,可以实时查看比特币价格的变化。可以根据需要调整代码中的参数,以适应不同的需求和交易所。

运行结果

2

3. 绘制BTC和ETH的历史价格曲线图

编写实例文件"bt03.py", 首先抓取网站中BTC和ETH的历史价格数据,然后使用matplotlib和pandas绘制BTC和ETH的历史价格曲线图:

程序设计

"""
作者:Want595
微信号:Want_595
公众号:Want595
"""
import requests
import datetime
import pandas as pd
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题def hourly_price_historical(symbol, comparison_symbol, limit, aggregate, exchange=''):url = 'https://min-api.cryptocompare.com/data/histohour?fsym={}&tsym={}&limit={}&aggregate={}' \.format(symbol.upper(), comparison_symbol.upper(), limit, aggregate)if exchange:url += '&e={}'.format(exchange)print(url)page = requests.get(url)data = page.json()['Data']df = pd.DataFrame(data)df['timestamp'] = [datetime.datetime.fromtimestamp(d) for d in df.time]return df
……请下载代码后查看哦

程序分析

这段代码是一个获取比特币和以太坊近期小时价格历史数据,并绘制折线图的程序。

首先,代码中定义了两个函数,hourly_price_historical和plotchart。hourly_price_historical函数用于获取指定货币对的历史小时价格数据,它接收参数symbol(货币符号)、comparison_symbol(对比货币符号)、limit(获取的小时数量)、aggregate(聚合参数,指定每个数据点的时间间隔)以及exchange(交易所,可选)。该函数首先构建了API请求的URL,并发送请求获取数据。然后,使用pandas库将返回的数据转换为DataFrame格式,并添加一个timestamp列,表示时间。最后,返回DataFrame。

plotchart函数用于绘制折线图,它接收参数axis(子图坐标轴)、df(包含价格数据的DataFrame)、symbol(货币符号)和comparison_symbol(对比货币符号)。该函数使用plot方法绘制数据中的close列(表示收盘价)与时间戳列(timestamp)。

在主程序中,首先调用hourly_price_historical函数获取比特币和以太坊的历史小时价格数据,分别存储在df1和df2中。然后,使用plt.subplots()创建一个包含两个子图的图形。接下来,调用plotchart函数分别绘制比特币和以太坊的折线图,并传入对应的数据和货币对信息。最后,调用plt.show()显示图形。

总体来说,这段代码可以获取指定货币对的历史小时价格数据,并以折线图的形式展示出来。通过使用pandas和matplotlib库,可以方便地处理和可视化数据,以便进行技术分析和趋势观察。可以根据需要调整代码中的参数,以获取不同货币对的历史价格数据。

运行结果

3

写在后面

我是一只有趣的兔子,感谢你的喜欢!

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

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

相关文章

MySQL夯实之路-查询性能优化深入浅出

MySQL调优分析 explain;show status查看服务器状态信息 优化 减少子任务,减少子任务执行次数,减少子任务执行时间(优,少,快) 查询优化分析方法 1.访问了太多的行和列&#xff1…

pytorch学习笔记(十)

一、损失函数 举个例子 比如说根据Loss提供的信息知道,解答题太弱了,需要多训练训练这个模块。 Loss作用:1.算实际输出和目标之间的差距 2.为我们更新输出提供一定的依据(反向传播) 看官方文档 每个输入输出相减取…

C++(9)——内存管理

1. 内存分类: 在前面的文章中,通常会涉及到几个名词,例如:栈、堆。这两个词所代表的便是计算机内存的一部分 。在计算机中,对系统的内存按照不同的使用需求进行了区分,大致可以分为:栈 、堆、数…

41k+ stars 闪电般快速的开源搜索引擎 docker安装教程

目录 1.下载 2.启动 成功示例 3.创建索引 4.插入数据 4.1下载数据 4.2插入数据 4.3查看数据 5.官方地址 1.下载 docker pull getmeili/meilisearch:latest 2.启动 mkdir -p /opt/meili_datadocker run -it --rm \-p 7700:7700 \-v /opt/meili_data:/meili_data \ge…

YOLOV7剪枝流程

YOLOV7剪枝流程 1、训练 1)划分数据集进行训练前的准备,按正常的划分流程即可 2)修改train.py文件 第一次处在参数列表里添加剪枝的参数,正常训练时设置为False,剪枝后微调时设置为True parser.add_argument(--pr…

Linux第28步_编译“正点原子的TF-A源码”

编译“正点原子的TF-A源码”,目的是想得到TF-A文件,即“tf-a-stm32mp157d-atk-trusted.stm32”。 在前27步的基础上,才可以学习本节内容,学习步骤如下: 1、创建“alientek_tf-a”目录; 2、复制正点原子的…

.【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)

概率图模型是一种用图形表示概率分布和条件依赖关系的数学模型。概率图模型可以分为两大类:有向图模型和无向图模型。有向图模型也叫贝叶斯网络,它用有向无环图表示变量之间的因果关系。无向图模型也叫马尔可夫网络,它用无向图表示变量之间的…

02.部署LVS-DR群集

技能展示: 了解LVS-DR群集的工作原理 会构建LVS-DR负载均衡群集 2.1 LVS-DR 集群 LVS-DR( Linux Virtual Server Director Server )工作模式,是生产环境中最常用的一种工作模式。 2.1.1.LVS-DR 工作原理 LVS-DR 模式&…

Spark---RDD持久化

文章目录 1.RDD持久化1.1 RDD Cache 缓存1.2 RDD CheckPoint 检查点1.3 缓存和检查点区别 1.RDD持久化 在Spark中,持久化是将RDD存储在内存中,以便在多次计算之间重复使用。这可以显著减少不必要的计算,提高Spark应用程序的性能。 val line…

蓝桥杯练习题(七)

📑前言 本文主要是【算法】——蓝桥杯练习题(七)的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 …

kotlin运行

1.使用android studio 由于我本身是做android的,android studio本身有内置kotlin的插件。但若只是想跑kotlin的程序,并不像和android程序绑在一起,可以创建一个kt文件,在里面写一个main函数,就可以直接运行kotlin程序…

【机器学习 西瓜书】期末复习笔记整理

一些杂点: 测试集如何归一化? —— 不是用测试集的均值和标准差,而是用训练集的! 机器学习: 对计算机一部分数据进行学习,然后对另外一些数据进行预测与判断。 参考计算例题: 机器学习【期末复习…

PyCharm安装使用教程2024

简介 PyCharm是一种PythonIDE(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单…

[oeasy]python0004_游乐场_和python一起玩耍_python解释器_数学运算

和python玩耍 🥊 Python 回忆 上次 了解shell环境中的命令 命令作用whoami显示当前用户名pwd显示当前文件夹ls列出当前文件夹下的内容python3仿佛进入大于号黑洞 这python3 怎么玩啊!😠 说好的python教程呢?🤔 运…

vue2使用Lottie

文章目录 学习链接1.安装依赖2.创建lottie组件3.在相对应的页面应用4.相关data.json5.测试效果 学习链接 原文链接&#xff1a;lottie在vue中的使用 lottie官网&#xff1a;https://lottiefiles.com/ 1.安装依赖 npm install lottie-web2.创建lottie组件 <template>…

MetaGPT前期准备与快速上手

大家好&#xff0c;MetaGPT 是基于大型语言模型&#xff08;LLMs&#xff09;的多智能体协作框架&#xff0c;GitHub star数量已经达到31.3k。 接下来我们聊一下快速上手 这里写目录标题 一、环境搭建1.python 环境2. MetaGpt 下载 二、MetaGPT配置1.调用 ChatGPT API 服务2.简…

Maven的安装和配置

国内Maven仓库之阿里云Aliyun仓库地址及设置 用过Maven的都知道Maven的方便便捷&#xff0c;但由于某些网络原因&#xff0c;访问国外的Maven仓库不便捷&#xff0c;好在阿里云搭建了国内的maven仓库。 需要使用的话&#xff0c;要在maven的settings.xml 文件里配置mirrors的子…

HTTP 常见协议:选择正确的协议,提升用户体验(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

SQL语句详解二-DDL(数据定义语言)

文章目录 操作数据库创建&#xff1a;Create查询&#xff1a;Retrieve修改&#xff1a;Update删除&#xff1a;Delete使用数据库 操作表常见的几种数据类型创建&#xff1a;Create复制表 查询&#xff1a;Retrieve修改&#xff1a;Update删除&#xff1a;Delete 操作数据库 创…

Stable Diffusion XL Turbo 文生图和图生图实践

本篇文章聊聊&#xff0c;如何快速上手 Stable Diffusion XL Turbo 模型的文生图和图生图实战。 写在前面 分享一篇去年 11 月测试过模型&#xff0c;为月末分享的文章做一些技术铺垫&#xff0c;以及使用新的环境进行完整复现。 本篇文章相关的代码保存在 soulteary/docker…