# 时间 2023年4月25日
# 内容:用于爬取联邦基金利率数据及公开市场操作委员会目标利率区间,数据来源:https://markets.newyorkfed.org
# 作者:Simon Cao, 主页:https://blog.csdn.net/simon1223z?type=blog
# 版权声明:本文为CSDN博主「Simon Cao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上出处链接及本声明。
import pandas as pd
import requests
def data_mod(start, end):
url = f"https://markets.newyorkfed.org/read?startDt={start}&endDt={end}&eventCodes=500\
&productCode=50&sort=postDt:-1,eventCode:1&format=csv"
df = requests.get(url)
data_str = df.text
data_str = data_str.replace('\n\n', '').replace('/', '').split('\n')[1:]
data_set = []
for i in data_str:
i = i.split(',')
y = i[0][4:]
m = i[0][0:2]
d = i[0][2:4]
data = {"date": y + "-" + m + "-" + d,
"FFR": i[2], # 联邦基金利率
"target_low": i[8], # 目标利率下限
"target_up": i[9]} # 目标利率上限
data_set.append(data)
data_set = pd.DataFrame(data_set)[::-1]
data_set.set_index("date", inplace=True)
return data_set
def main():
start = input("请键入起始日期,例如20200101:")
end = input("请键入终止日期,例如20210101:")
print("\n启动爬取程序\r", end="")
start = start[:4] + "-" + start[4:6] + "-" + start[6:]
end = end[:4] + "-" + end[4:6] + "-" + end[6:]
data_set = data_mod(start, end)
print(f"爬取完成,共获取{len(data_set)}条数据")
return data_set
data_set = main()