1. 程式人生 > >全網爬取6500多只基金|看看哪家基金最強

全網爬取6500多只基金|看看哪家基金最強

最大 方案 鏈接 沒有 編號 時間 json src http

.理財是個非常重要的技能,無論是高高在上的成功人士還說大眾老百姓都必須要掌握的技能,俗話說"人不理財,財不理你"。理財的方法有很多,我個人比較喜歡買基金,而基金又有很分很多種:股票型,混合型,債券型,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多只基金|看看哪家基金最強