之前學習了一階段的scrapy,這兩天終於有了突破性的一點進展。在這裡真的非常感謝銳哥的教導鴨,帶我幾乎把整個爬蟲流程走了一遍,要不是他我應該還處在艱難的探索中ing。

總的來說,爬蟲真的是一個龐大的工程,scrapy裏的spider,pipeline,middleware,setting,items,每一個模塊的理解和運用,emmmm,與之前R的數據處理真的不是一個級別的,包括寫spider,找xpath,將爬的內容print到控制檯,再到將內容下載成CSV,後來發現CSV遠不及資料庫。

所以初學了一下mongodb資料庫(銳哥極力推薦優於MYSQL的資料庫),真的又是整個爬蟲的重寫!重寫!重寫!,沒錯就是這個玩意。

emmm,雖然這些還都只是測試階段,因為最後正式運行往往會涉及到各種各樣的反爬措施,包括封你IP

或者是要使用selenium,沒錯就是碰到iframe這個東西,非要模擬登陸了頁面才能抓取的一種反爬措施。

期間還發生了一個奇葩的事情,比如原本新浪財經的分筆數據是可以查詢歷史的,然現在只能查到當日的了,不知道會不會是之前測試階段被封了幾次IP結果新浪把這塊數據給收起來了。(雖然這是常有的事情,畢竟前兩天銳哥爬網易雲音樂結果把網易雲專輯的API給爬崩了)。舉個新浪貴州茅臺的成交明細網址( vip.stock.finance.sina.com.cn),真的就是在紅色框框裏,本來是可以找到歷史成交明細的啊啊啊,現在只有當日了......

不過沒事,畢竟最後我爬的是這個( market.finance.sina.com.cn

以及最後的最後,怎麼樣從mongobd資料庫直接將數據導入到我們所熟知的R中處理(畢竟現在rdatatable的數據處理能力是優於python的,當然等pydatatable上線就不知道咯),並且確實大數據和小數據的處理不是一個層次的,不過總算,這波成功了。

最後從mongdb導到R的效果

可以看見,抓取的高頻基本上是3秒的頻率,原因聽上次一個客座教授說過,大概是中國的交易數據要先傳到衛星再從衛星傳回地面,一來一回共3秒,所以我們平日所觀測到的股票價格變動也都是3秒的,還未做到真正的每秒或者是逐筆的。

PS:可能大家會問為什麼這裡還有一列datetime的東西,因為爬下來的數據的都是字元串的格式啊,我需要把他變成時間格式,這樣處理起來才能方便一些。

這裡展示的數據,可以看見僅26w條,實際上才一天100隻股票的數據而已:

時間的選擇:時間定於2019-04-26,也就是上週五這一天

股票的選擇:一隻股票要探究是否漲停並不能只對其收盤是否漲停來進行判斷(畢竟不能以一種先知者的角度來研究),任何盤中的漲停都進入我的研究範圍。因此對於股票的選擇,我選擇的是當日最高漲幅高於9%的股票。(2019.4.26正好100隻)

哇,其實真的就只爬了一點點點點,一開始想單獨的對漲停類股票進行研究看看,所以就選擇了這個樣本,可能大家會說,為什麼只做4.26的,不多做一點,是爬蟲的問題還是什麼。其實代碼都寫好了,然,代理一秒5個請求,一隻股票大概50頁,抓一隻股票一天的數據要10秒,抓一天的所有股票(現在都上市3600+股票我也是驚呆了)大概要36000秒,600分鐘,10個小時。好了,不多說了。要抓一年的股票都要到猴年馬月啊啊啊 。

哎,實際上高頻數據很多資料庫或者是業界是可以直接獲得的,然我浙大經院的資料庫都沒有,數據限制了我們滴想像,數據限制了我們滴論文啊。

不過沒事,畢竟有很多的東西啊,資料庫畢竟也都沒整理好的,such as 昨天送完侑裏醬以後爬的一波所有上市公司的歷年年報,雖然格式很辣雞,要洗很久吧。OH MY GOD

歡迎大家關注我和女友共建的微信公眾號:喵口三三。

沒錯,這些文章都是之前公眾號裏噠。


推薦閱讀:
相關文章