python 基金净值_基金净值爬取_Python,自给自足

在无法使用Wind、优矿和Tushare的情况下,通过Python解析天天基金网的API获取基金历史净值数据。介绍了如何调用API并解析网页,获取包括净值日期、单位净值、累计净值等在内的基金数据。
摘要由CSDN通过智能技术生成

Wind账号被停,优矿试用期到期,Tushare开启积分模式,基金数据来源只能开启自给自足模式。参考

《Python爬取天天基金网历史净值数据》,自己动手尝试。

1. 天天基金网API

API:url 和 结果

f0607374b8ee?from=timeline

fund_api_nav_table.PNG

2. Python 解析代码

def fund_nav_esatmoney(tickCode, startDate, endDate):

"""

通过天天基金网API查询基金净值数据,返回DataFrame。

- Imput

- tickCode, 基金代码

- startDate, 查询起始日

- endDate, 查询截止日

- Output, df with col:

1. 净值日期

2. 单位净值

3. 累计净值

4. 日增长率

5. 申购状态

6. 赎回状态

7. 分红送配

"""

# 调用天天基金网API 并解析网页

days = (dt.datetime.strptime(endDate, "%Y-%m-%d") - dt.datetime.strptime(startDate, "%Y-%m-%d")).days

url = "http://fund.eastmoney.com/f10/F10DataApi.aspx?type=lsjz&code={}&sdate={}&edate={}&per={}".format(tickCode,startDate, endDate,days)

response = requests.get(url)

soup = BeautifulSoup(response.content, "lxml")

# 获取表头

table_heads = []

for head in soup.findAll("th"):

table_heads.append(head.contents[0])

# 获取数据

table_rows = []

for rows in soup.findAll("tbody")[0].findAll("tr"):

table_records = []

for record in rows.findAll('td'):

val = record.contents

# 处理空值

if len(val) == 0:

table_records.append(np.nan)

else:

table_records.append(val[0])

table_rows.append(table_records)

# 写入DataFrame

table_rows = np.array(table_rows)

df = pd.DataFrame()

for col,col_name in enumerate(table_heads):

df[col_name] = table_rows[:,col]

return df

3. 结果

f0607374b8ee?from=timeline

fund_api_nav_search_result.PNG

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值