使用Python抓取并分析外汇汇率数据
在当今全球化的经济环境中,了解不同货币之间的汇率是非常重要的。对于个人投资者、旅行者以及企业来说,准确及时的汇率信息可以帮助他们做出更加明智的决策。本文将介绍如何使用Python编程语言来从网络上获取最新的外汇汇率数据,并将其保存到Excel文件中以便进一步分析。
准备工作
首先确保你的开发环境已经安装了以下Python库:
requests
:用于发送HTTP请求。beautifulsoup4
(简称bs4):解析HTML和XML文档。pandas
:处理和分析结构化数据的强大工具。openpyxl
:用来读写Excel 2010 xlsx/xlsm/xltx/xltm文件。
你可以通过pip命令来安装这些库:
pip install requests beautifulsoup4 pandas openpyxl
编写代码
定义类与函数
我们将定义一个名为ExchangeRate
的简单类来存储每天的汇率信息。此外,我们还需要编写两个主要函数:fetch_news()
用于从指定的URL抓取数据,而save_to_excel()
则负责将收集的数据导出为Excel文件。
# 本代码仅供学习和教育用途。未经授权,不得用于商业用途。
# 使用本代码进行商业活动所产生的一切后果由使用者自行承担,作者不承担任何责任。
import requests
from bs4 import BeautifulSoup
import pandas as pd
from datetime import datetime
import time
class ExchangeRate:
def __init__(self, day, hlvalue):
self.day = day
self.hlvalue = hlvalue
def __repr__(self):
return f"ExchangeRate(day={self.day}, hlvalue={self.hlvalue})"
def fetch_news(start_day):
url = '此处替换为实际地址'
try:
response = requests.get(url)
response.raise_for_status() # 检查HTTP请求是否成功
except requests.RequestException as e:
print(f'请求失败: {e}')
return []
rateList = []
soup = BeautifulSoup(response.text, 'lxml')
news_items = soup.find_all('temp')
for item in news_items:
day = item.find('date').text.strip()
hlvalue = item.find('hlvalue').text.strip()
if day >= start_day:
ex1 = ExchangeRate(day.replace('-', '/'), hlvalue)
rateList.append(ex1)
return rateList
def save_to_excel(data):
formatted_date = datetime.now().strftime("%Y-%m-%d")
file_path = f'E:/Exchange rate {formatted_date}.xlsx'
df = pd.DataFrame([{'日期': ex.day, '汇率': ex.hlvalue} for ex in data])
try:
with pd.ExcelWriter(file_path, engine='openpyxl') as writer:
df.to_excel(writer, index=False)
print()
print(f'数据已保存至 {file_path}')
except Exception as e:
print(f'保存数据时出现错误: {e}')
if __name__ == '__main__':
# 请确保输入正确的日期格式
start_day = input("请输入开始日期(格式为yyyy-mm-dd ,如2024-08-01): ")
data = fetch_news(start_day)
if data:
save_to_excel(data)
print()
print("拜拜啦~~,祝每天都开心!!!")
# 程序运行3秒后自动退出
time.sleep(3)
抓取数据
在fetch_news
函数内,我们使用requests
库发起GET请求以获取网页内容,接着利用BeautifulSoup
对返回的HTML进行解析,从中提取所需的信息——具体而言是每一天的日期及其对应的汇率值。这里需要注意的是,实际网站可能有不同的标签结构,你需要根据实际情况调整选择器。
存储至Excel
一旦我们有了完整的汇率列表,就可以调用save_to_excel
函数将其转换成Pandas DataFrame对象,并通过to_excel
方法写入到本地文件系统中的Excel表格里。这样不仅方便查看,也便于后续做更深入的数据挖掘或可视化展示。
结论
通过上述步骤,我们能够快速地构建起一个简易但功能齐全的小程序,它能够自动从互联网上获取最新的外汇汇率信息,并且支持用户自定义查询时间范围。这样的项目非常适合初学者学习Web爬虫技术以及基本的数据处理流程。希望这篇文章对你有所帮助!
请注意,上述示例代码仅作为教学目的展示。在实际应用时,请务必遵守目标网站的服务条款及法律法规,尊重版权和个人隐私权。