python爬虫之场内ETF基金获取
作者: 斜月
1 前言
之前已经介绍了基金的变动信息,但是这些基金都是属于场外的,今天我们要介绍的是一个带门槛的投资产品-ETF。只有开立证券账户的玩家才能入局,ETF 是一种场内交易型基金,可以在盘中进行交易,交易性比场外基金强一点,那么闲言少叙,马上开始介绍正题。
2 ETF列表和简称
ETF基金变动情况和基本情况的获取方式和场外基金是一样的,怎么获取比较全面的ETF基金列表呢?
# 获取基金信息的列表 http://fund.eastmoney.com/data/fbsfundranking.html
以下是ETF信息列表所展示的信息:
ETF 在场内进行交易时,一般都有一个简称,获取简称的方式比较麻烦一点,需要访问一个页面,然后通过 bs4 去解析元素的方式去获取。
#经过分析,我们可以发现基金代码前缀就代表这其市场,5上海市场 1-深圳市场,以地产ETF和光伏ETF为例 http://quote.eastmoney.com/sz159707.html http://quote.eastmoney.com/sh515790.html
3 ETF 信息获取
3.1 ETF列表信获取
ETF 列表信息我们通过访问列表发现在访问列表数据时,是请求了一个api接口到了后台,然后返回给前端一个响应报文。
http://fund.eastmoney.com/data/rankhandler.aspx?op=ph&dt=fb&ft=ct&rs=&gs=0&sc=zzf&st=desc&pi=1&pn=50
看到这里就觉得很开心,不用解析 html 文件了,当通过request使用get 方式获取数据时,发现竟然没有返回无访问权限,我想可能是没有携带cookie的原因,但是我也没有登录呀,可能是请求头需要携带一些页面信息,于是,经过尝试,最终确定了需要携带的信息为:
headers = { 'Host': 'fund.eastmoney.com', 'Referer': 'http://fund.eastmoney.com/data/fbsfundranking.html' }
最终我们获取基金列表的代码应该这样写:
调试后获取到的结果如下图所示:
3.2 获取基金的简称
获取基金的简称相对比较简单,通过分析发现,简称所在的位置在 <span class="quote_title_0 wryh">光伏ETF</span>
中,通过访问页面获取元素即可拿到简称的描述。
具体的代码如下图所示:
4 最终结果展示
经过获取基金列表和获取基金简称两个步骤,我们获取到了最终的结果如下图所示,已经达成了需要获取信息的目的:
后续我们会把基金信息和ETF 信息进行合并存入数据库中,方便后续的数据分析。
到此这篇关于python爬虫之场内ETF基金获取的文章就介绍到这了,更多相关python ETF基金获取内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!