全网爬取6500多只基金|看看哪家基金最强
Posted 狙击手
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全网爬取6500多只基金|看看哪家基金最强相关的知识,希望对你有一定的参考价值。
.理财是个非常重要的技能,无论是高高在上的成功人士还说大众老百姓都必须要掌握的技能,俗话说"人不理财,财不理你"。理财的方法有很多,我个人比较喜欢买基金,而基金又有很分很多种:股票型,混合型,债券型,QDII还有分级基金,指数基金,货币基金,到底哪家最强的~~
我们码农是靠手艺吃饭的,不就是数据分析吗,简单自己动手写个程序,分析一下.整个的内容我会分几篇来写,今天是思路篇,这算是一个小小的综合项目,前面讲了这么多Python的基础知识,还有数据分析的内容,来实战一下吧
全网爬取思路
1.获取所有基金的链接
我们从基金首页,爬出所有基金的编号,基金名字和基金的url,共6500多值
它们长的这样,如下面的截图:
...
共计6527只基金,不管它是什么类型的基金,统统爬下,管他黑猫白猫,能赚钱不亏的基金就是好基金,哈哈
2.分析每个基金的数据
单独写一个类,去解析每一个基金网页,我们希望提取以下基金的重要信息
近1个月的涨幅
近3个月的涨幅
近6个月的涨幅
近1年的涨幅
近3年的涨幅
成立以来的涨幅
比如:
3.数据的存储
数据获取之后,我们是肯定要存储的,放在内存里面毕竟不是长久之事 。存储可以存在文件里面,存为csv或者json格式 ,这两种格式比较常用.
或者也可以写入数据库了,我们可以用屌丝专用的sqlite3因为它就一个文件,比较简单,或者高大上的关系数据库mysql(但是它添加表的时候有死板), MangoDb 这个比较灵活,反正写入数据库的话比较好扩展应用,各有所长~~
4.数据的分析
a).对于积极派
希望知道:累计成立涨幅最大的基金
希望知道:累计1年涨幅最大的基金
希望知道:累计6month涨幅最大的基金
希望知道:累计3month涨幅最大的基金
然后取个交集,看看有没有全能王
b).对于稳健派
我们的投资是以稳健为主,稳子当头,涨多涨少不要紧,关键是要涨,而且稳那我们把成立以来,3年来,1年来,6month,3month,1month 看看有没有全都涨的,没有亏过的
当然我们还可以分析一下其他维度的数据,比如成立的时间,几星级好评的基金等等~
代码的方案和注意事项
代码的设计注意事项,因为是全网爬取6500多只基金,肯定要用多线程或者爬虫框架去搞定,我目前能想到的是如下几点方案:
1.方案1
a).先爬出基金首页,获得所有的基金的url信息
b).然后把6500只基金放进队列里面,用多线程取分别处理每一个基金网页的数据
c).然后把所有获得每只基金涨幅,存在内存里面,当所有的基金网页全部都处理完之后,把数据一起写如csv文件
方案1:很明显有一个弱点,就是需要等到所有的基金完成才会写入,假如6500多只基金,我处理到6400多的时候,忽然出现异常或者断网了,怎么办,估计那时想撞墙了。这个时候你所有的数据都没有开始存入csv文件,那你前面CPU呼呼的转,卖力的拼命爬虫,结果时间全部都白费了
2.方案2
a).也是先爬出基金首页,获得所有的基金的url信息
b).然后把6500只基金放进队列里面,用一个类去分别处理每一个基金网页的数据
c).然后这个类是继承Thread,也是直接多线程处理这个队列里面的数据,注意当解析完一个网页之后,立刻把数据写入csv文件。这样做的好处,就是不会因为异常或者断网,导致数据内容没有保存
方案2:还是会有问题,就是线程之间对共享文件的处理问题
3.方案3
看起来好像方案2是不错的,但是每个线程都在存同一个csv文件,多线程直接处理一个文件,肯定会有问题,更何况我们有6500多次反复读写,所以我们需要对文件读写的地方,加锁来处理,这样比较安全
结论:
好全网爬取6500基金的思路篇就讲到这里,这个例子会用到Python的基本知识,爬虫技术,多线程处理,线程间的锁,文件读写,数据分析Pandas的技能等等。若有什么问题,也可以留言讨论,好闲话少说,抓紧时间码代码吧~~
学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入学习交流群
626062078,我们一起学Python!
以上是关于全网爬取6500多只基金|看看哪家基金最强的主要内容,如果未能解决你的问题,请参考以下文章
爬取上千个年度基金后,才知道这有多坑,千万别被人当韭菜给割了