如何将爬取的FT基金历史数据保存为多个对应ISIN命名的.csv文件
修复方案
文件名导出问题
原代码循环中固定使用my data.csv作为文件名,每次循环都会覆盖上一次的导出结果。只需从当前请求url中拆分提取出ISIN编码作为文件名即可,注意Windows系统不支持文件名带冒号,可将ISIN中的冒号替换为下划线避免报错。
日期重复问题
该现象是因为金融时报网页的日期单元格内同时嵌套了长、短两个格式的日期文本,pandas读取HTML表格时会将单元格内所有文本拼接,导致出现重复。通过正则匹配提取到年份为止的前半段日期,即可清洗掉重复的短日期内容。
完整修改后代码
import requests import pandas as pd # 替换为你完整的40只基金url列表 urls = ['https://markets.ft.com/data/funds/tearsheet/historical?s=LU0526609390:EUR', 'https://markets.ft.com/data/funds/tearsheet/historical?s=IE00BHBX0Z19:EUR', '......'] for url in urls: # 提取当前url对应的ISIN编码 isin = url.split('s=')[-1] html = requests.get(url).content df_list = pd.read_html(html) df = df_list[-1] # 清洗第一列(日期列)的重复内容 df.iloc[:, 0] = df.iloc[:, 0].str.extract(r'(^.*\d{4})') print(df) # 导出为对应ISIN命名的csv,自动替换冒号避免文件名报错,去掉多余索引列 df.to_csv(f"{isin.replace(':','_')}.csv", index=False, encoding='utf-8-sig')
内容的提问来源于stack exchange,提问作者Tcs106
相关产品推荐
相关产品推荐

