使用python3.8,在中国银行外汇牌价网,同时获取美元、日元、港币、欧元、卢布、英镑、澳元、瑞士法郎、新加坡元9种货币每天的中行折算价,范围为12个月内每一天,每天内保留一个时点最接近15:00的汇率存入excel中并保存在桌面。
时间: 2023-05-19 07:07:22 浏览: 291
如何基于python操作excel并获取内容
这个问题可以使用Python的requests和BeautifulSoup库来实现。首先,我们需要从中国银行外汇牌价网获取每天的汇率数据。然后,我们需要筛选出每天最接近15:00的汇率数据,并将其存入Excel文件中。
以下是实现这个功能的代码:
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
from datetime import datetime, timedelta
# 定义需要获取的货币种类
currencies = ['USD', 'JPY', 'HKD', 'EUR', 'RUB', 'GBP', 'AUD', 'CHF', 'SGD']
# 定义起始日期和结束日期
start_date = datetime(2021, 1, 1)
end_date = datetime(2021, 12, 31)
# 定义Excel文件名和路径
filename = 'exchange_rates.xlsx'
path = '~/Desktop/'
# 创建一个空的DataFrame,用于存储汇率数据
df = pd.DataFrame(columns=['date'] + currencies)
# 循环遍历每一天
current_date = start_date
while current_date <= end_date:
# 构造URL
url = 'https://srh.bankofchina.com/search/whpj/search_cn.jsp'
params = {
'erectDate': current_date.strftime('%Y-%m-%d'),
'nothing': current_date.strftime('%Y-%m-%d'),
'pjname': currencies[0],
'page': '1'
}
response = requests.get(url, params=params)
soup = BeautifulSoup(response.text, 'html.parser')
# 解析HTML,获取汇率数据
data = [current_date.strftime('%Y-%m-%d')]
for currency in currencies:
selector = f'td:contains("{currency}")'
rate = soup.select_one(selector).find_next_sibling('td').text
data.append(rate)
# 将汇率数据添加到DataFrame中
df.loc[len(df)] = data
# 增加一天
current_date += timedelta(days=1)
# 筛选出每天最接近15:00的汇率数据
df['date'] = pd.to_datetime(df['date'])
df['time'] = pd.to_datetime('15:00')
df['timedelta'] = abs(df['date'] - df['time'])
df = df.sort_values(['date', 'timedelta']).groupby('date').first().reset_index()
df = df.drop(['time', 'timedelta'], axis=1)
# 将汇率数据保存到Excel文件中
df.to_excel(path + filename, index=False)
```
这个代码会在桌面上创建一个名为exchange_rates.xlsx的Excel文件,其中包含了每天最接近15:00的汇率数据。
阅读全文