如何循环指定日期范围批量抓取汇率数据并存入Excel?
实现汇率数据抓取的日期循环并保存到Excel
步骤1:生成目标日期区间的日期序列
用pandas.date_range生成2021年7月1日至2022年6月30日的所有日期,确保输出格式和你接口/页面要求的exchangeDate格式一致(比如YYYY-MM-DD)。
import pandas as pd # 生成日期序列,freq='D'表示覆盖每天 date_range = pd.date_range(start='2021-07-01', end='2022-06-30', freq='D') # 转换成字符串格式,匹配你的exchangeDate参数需求 date_list = [date.strftime('%Y-%m-%d') for date in date_range]
步骤2:封装单日期抓取逻辑为函数
把你已有的单日期抓取代码封装成函数,传入日期参数,返回该日期的汇率数据(建议返回DataFrame格式,方便后续合并)。示例框架如下:
import requests from bs4 import BeautifulSoup def fetch_exchange_rate(date): # 替换成你实际的请求URL,将exchangeDate参数替换为传入的date url = f"https://your-target-url.com/exchange?date={date}" # 若有反爬,记得添加headers,比如User-Agent headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'} response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') # 替换成你已有的解析逻辑,提取汇率数据 # 示例:假设解析后得到字典格式的数据 rate_data = { '日期': date, '美元兑人民币': ..., # 你的实际解析结果 '欧元兑人民币': ... } # 转换成DataFrame返回,方便后续合并 return pd.DataFrame([rate_data])
步骤3:循环遍历日期并收集数据
初始化一个空的DataFrame,遍历每个日期,调用抓取函数,把结果追加到总数据中。同时处理可能的请求失败情况:
import time # 初始化总数据容器 all_exchange_data = pd.DataFrame() for date in date_list: try: print(f"正在抓取{date}的汇率数据...") daily_data = fetch_exchange_rate(date) # 追加到总数据 all_exchange_data = pd.concat([all_exchange_data, daily_data], ignore_index=True) # 添加延迟,避免请求过于频繁触发反爬 time.sleep(1) except Exception as e: print(f"抓取{date}数据失败:{str(e)}") continue
步骤4:保存数据到Excel
最后把合并后的总数据保存到Excel文件:
all_exchange_data.to_excel('202107-202206汇率数据汇总.xlsx', index=False) print("所有数据已成功保存到Excel!")
额外提示
- 如果目标网站对请求频率限制严格,可以调整
time.sleep()的时长,或者使用代理IP池。 - 若遇到节假日无数据的情况,函数会返回空DataFrame,合并时会自动忽略,不影响最终结果。
内容的提问来源于stack exchange,提问作者tony michael
相关产品推荐
相关产品推荐

