自學(xué)Python已有3個(gè)月之多,瀏覽無數(shù)大神的佳作,收獲頗豐妓盲。當(dāng)初自學(xué)python就是為了學(xué)習(xí)爬蟲,爬取網(wǎng)站上好看妹子的圖片……[流口水][流口水]
言歸正傳酷勺,近期學(xué)習(xí)量化交易知識本橙,發(fā)現(xiàn)東方財(cái)富網(wǎng)(eastmoney.com)提供的特色數(shù)據(jù)相當(dāng)不錯(cuò),在投資組合頁面脆诉,看看周冠軍甚亭,月冠軍等排行榜上那誘人的紅色數(shù)字,那要是我的操作該有多好啊击胜。
后來一想亏狰,我可以把每周的排行榜爬取下來偶摔,選出比較厲害的人暇唾,跟蹤學(xué)習(xí)別人的操作,那我是不是也可以在A股中分一杯羹呢辰斋?想想就誘人……
說干就干策州,先分析下網(wǎng)頁,點(diǎn)開月度高手頁面宫仗,來到投資組合排行榜够挂。在chorme瀏覽器中打開網(wǎng)頁調(diào)試工具(按F12即可),重新加載頁面藕夫,看到如下圖所示
在調(diào)試工具中孽糖,選擇JS枯冈,可以看到網(wǎng)頁加載過程中的各種數(shù)據(jù)。每個(gè)頁面點(diǎn)開办悟,也沒發(fā)現(xiàn)什么有價(jià)值的信息尘奏。最后在Private_Rank_Sort.js的頁面中發(fā)現(xiàn)url信息的蛛絲馬跡,如上圖紅方框和紅色箭頭所指部分病蛉。這個(gè)url是不是我要找的排行榜的頁面呢炫加?于是保存Private_Rank_Sort.js頁面,查看JS代碼铡恕。
查看js代碼琢感,發(fā)現(xiàn)GetDat函數(shù)中的這個(gè)URL是由幾部分組成,中間有兩個(gè)變量type和callbackName探熔。分析上下文可以看出callbackName是由字符串“CallBack”+type+8位隨機(jī)數(shù)組成驹针。那type變量的結(jié)構(gòu)就是關(guān)鍵了,找到了type诀艰,整個(gè)URL的信息就能拼湊出來柬甥。繼續(xù)在該文件中查找,在尾部發(fā)現(xiàn)這么一句:
var type=$(this).attr("sortvalue")
再后面是調(diào)用GetDat(type)函數(shù)
總算是找到type的出處了其垄,那他的具體賦值呢苛蒲。于是又開始搜索網(wǎng)頁,最后再網(wǎng)頁源碼中找到了“sortvalue”屬性的數(shù)據(jù)绿满。如下圖
原來type=8101臂外、8102、8104喇颁、8105漏健、8106、8107分別代表不同的意思(怎么沒有8103呢橘霎,我也不知道蔫浆,不管它了,繼續(xù)正題……)
取type一個(gè)值 8102 日收益吧姐叁,把URL拼湊出來
把拼湊號的url地址復(fù)制到瀏覽器地址欄瓦盛,回車。見證奇跡的時(shí)刻到了……
一個(gè)Json結(jié)構(gòu)的數(shù)據(jù)外潜,拿來和網(wǎng)頁對比一下原环,很容易猜出字典中Key的含義。
至此萬里長征的第一步總算走完了处窥,后面就可以用python中requests模塊Get數(shù)據(jù)了嘱吗。
總結(jié):
1、分析網(wǎng)頁最重要的是要先找到url地址碧库。之后再去弄懂各個(gè)參數(shù)的具體含義柜与,擴(kuò)展獲取更多的數(shù)據(jù)。
2嵌灰、分析過程中要細(xì)心弄匕,有耐心,多用 查找 功能沽瞭。找不到了再到網(wǎng)頁源碼中看看迁匠,說不定會有意想不到的收獲。
3驹溃、異步加載數(shù)據(jù)的網(wǎng)頁城丧,一般在JS或XHR中取找url
4、善用web瀏覽器中的工具插件豌鹤,我用的chrome瀏覽器亡哄,它的網(wǎng)頁調(diào)試工具很好用,還有很多擴(kuò)展插件布疙,比如JSON-handle把json數(shù)據(jù)理清層次結(jié)構(gòu)队魏,CrapApi方便GET切威、POST各種帶參數(shù)的url地址,即時(shí)查看返回?cái)?shù)據(jù),分析參數(shù)的作用
最后再說一下涌哲,我把爬取下來的排行榜數(shù)據(jù)進(jìn)行篩選,選出幾個(gè)活躍度高桥嗤,周月年收益較高的咨堤,實(shí)時(shí)跟蹤其調(diào)倉動(dòng)作,跟買跟賣顿涣,收益還可以的波闹,不得不佩服高手就是高手。哈哈
上張運(yùn)行界面圖