一、说点东西
老早就想搞个基金监控机器人了,方便自己查看自己关注基金的各种指数涨跌情况,及时进行止损或者止盈,从今天开始,我们先建楼基,手把手带大家实现一个基金查询机器人,目前主要可以查询基金指定日期段数据和查看基金净值走势图,后面慢慢新增功能。
二、开始动手动脑
2.1 环境准备
- Linux、Mac、Windows 都可以
- python 3.7及以上
- 相关第三方包:pandas(数据处理)、requests(爬取数据)、re(文本内容解析)、akshare(获取基金股票数据)、matplotlib(数据可视化)、dataframe-image(dataframe表格转成图片)
2.2 获取指定日期段基金数据
基金数据可以从一些金融相关的网站获取到,比如天天基金网、新浪基金网等,可以自己写爬虫程序获取网站数据,也可以使用现成的工具包获取数据,比如:一行代码获取股票、基金数据,并绘制K线图里用到的akshare
。
这里我们同时介绍下两种方法:
2.2.1 回顾下akshare获取基金数据
目前akshare不支持获取指定日期范围内的基金净值数据,但是可以一次获取到基金历史净值数据,调用函数fund_em_open_fund_info
获取基金历史数据,然后自己根据日期选取时间断进行分析。
import akshare as ak
fund_data = ak.fund_em_open_fund_info(fund='005827', indicator='单位净值走势')
print(fund_data)
自己调用现成数据接口
本质上akshare也是从一些金融相关的网站获取到数据,我们也可以自己写代码进行获取,通过浏览器我们很快能搜索到基金数据接口,来自东方财富的天天基金网。
f'http://fund.eastmoney.com/f10/F10DataApi.aspx?type=lsjz&code={code}&page={page}&sdate={start_date}&edate={end_date}&per={per}'
code - 基金代码
page - 基金数据页码
start_date - 数据开始日期
end_date - 数据结束日期
per - 每页展现数据量,最多40
根据指定参数,浏览器会返回指定参数,一段js赋值代码,包括了 基金数据(content)、总记录条数(records)、总页数(pages)、当前页数(curpage)。
格式非常规整,我们可以直接通过正则提取数据,
'''
获取单页面 基金数据
'''
def get_html(code, start_date, end_date, page=1, per=40):
url = f'http://fund.eastmoney.com/f10/F10DataApi.aspx?type=lsjz&code={code}&page={page}&sdate={start_date}&edate={end_date}&per={per}'
# print(url)
rsp = requests.get(url)
html = rsp.text
return html
通过返回的数据可以发现,基金数据部分是一个由table标签包裹的html代码,那我们可以直接使用pandas的read_html来解析数据。
# 从html中解析出数据表部分 并解析成df
def parses_table(html):
# 获取基金数据表
pattern = 'content:"<table(.*)</table>",'
table = re.search(pattern, html).group(1)
table = '<table' + table + '</table
今天的文章【Python教程】用Python搞了个基金查询机器人分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/59863.html