最近有一個網友讓我幫他寫一個工具分析基金回撤情況,前幾天項目比較忙就直沒動手,今天晚上有點時間,研究了一下。 先把今天的研究成果分享: 要分析基金凈值回撤,首先肯定要有基金的凈值變化數據。要抓數據肯定是到天天基金網上抓,畢竟人家是專業機構。 我找了一隻個人比較喜歡的基金,易方達中小盤混合 (1100 ...
最近有一個網友讓我幫他寫一個工具分析基金回撤情況,前幾天項目比較忙就直沒動手,今天晚上有點時間,研究了一下。
先把今天的研究成果分享:
要分析基金凈值回撤,首先肯定要有基金的凈值變化數據。要抓數據肯定是到天天基金網上抓,畢竟人家是專業機構。
我找了一隻個人比較喜歡的基金,易方達中小盤混合 (110011),在天天基金網站上很容易找到它的歷史凈值頁面:
http://fundf10.eastmoney.com/jjjz_110011.html
因為之前抓過天天基金當日基金凈值數據,知道它的頁面數據是藏在js裡面,在瀏覽器訪問頁面後,執行js從伺服器動態獲取再展示到瀏覽器。
要知道是哪個js腳本,方法有很多。我用的是谷歌瀏覽器自帶的開發者工具,如下圖:
打開開發者工具的情況下瀏覽基金凈值頁面,就看到該頁面訪問的所有資源網址。數據比較亂,不過關心的只是js,所以按類型排了序。不過可以看出來訪問的js也不少,暫時還不好知道是哪一個js包含我要的數據。
由於預設只顯示了第一頁數據,所以我就隨意點了其它頁凈值,從訪問的資源列表變化情況,很容易發現想要的js網址,如圖
把這些帶有callback的js網址拷下來,如下:
http://api.fund.eastmoney.com/f10/lsjz?callback=jQuery183018519977574130597_1558194911277&fundCode=110011&pageIndex=6&pageSize=20&startDate=&endDate=&_=1558195435735
從命令參數上猜測fundCode是基金代碼,pageIndex是凈值頁面頁碼,其它參數暫時不知道意義。
先嘗試使用這個網址在瀏覽器訪問看是啥情況:
可以看出網站對這個js訪問做了控制,不讓用戶直接在瀏覽器訪問。 由於對於http抓包不大熟悉,不清楚這種情況下要怎麼處理,總不至於需要寫一個瀏覽器來抓一個js數據吧。
於是找了一個熟悉抓包的朋友咨詢一下。咨詢結果明天再說,跟下麵這個請求有關。
GET /f10/lsjz?callback=jQuery183018519977574130597_1558194911277&fundCode=110011&pageIndex=4&pageSize=20&startDate=&endDate=&_=1558195568400 HTTP/1.1 Host: api.fund.eastmoney.com Connection: keep-alive User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 Accept: */* Referer: http://fundf10.eastmoney.com/jjjz_110011.html Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9