一分钟教你用Excel从统计局抓数据!
全世界只有3.14 %?的人關(guān)注了
數(shù)據(jù)與算法之美
現(xiàn)在呢,從網(wǎng)上爬蟲數(shù)據(jù)來做分析越來越火,如果不會這個(gè)skillset做數(shù)據(jù)處理簡直沒辦法裝逼。作為一個(gè)興趣廣泛的高能物理phd,自然不能被時(shí)代落下。
首先聲明,我并沒有學(xué)過HTML的語言,也沒學(xué)過VBA,所以自己解釋的邏輯應(yīng)該是非常容易理解的,保證沒有任何編程基礎(chǔ)的都能學(xué)會。當(dāng)然前提是你有Excel,沒有的話出門右轉(zhuǎn)有盜版。
文中的方法其實(shí)完全不限于抓取統(tǒng)計(jì)局的數(shù)據(jù),任何網(wǎng)站都可以想抓就抓,簡直如若出入無人之境。(文末有彩蛋喲!)推薦閱讀《數(shù)據(jù)挖掘與分析》
好了,Let's rock!
起初呢,是因?yàn)橹皹I(yè)余想試著分析分析中國的宏觀數(shù)據(jù),上了一下統(tǒng)計(jì)局的網(wǎng)站,結(jié)果發(fā)現(xiàn)簡直是災(zāi)難...
先來看看美聯(lián)儲的網(wǎng)站:(近期發(fā)現(xiàn)好多國內(nèi)金融文章都開始用這個(gè)fed的圖了,是不是因?yàn)槲抑暗腗acro文章傳播的呢~嘚瑟一下)
Federal Reserve Economic Data
數(shù)據(jù)量極其豐富,簡直想怎么操作就怎么操作,各種加減乘除還有對比應(yīng)有盡有。
如上圖就是我想研究carry trade對于美國股市的影響,把他們放在一起可以把相關(guān)性看得一清二楚,對整理邏輯非常方便。
但是同時(shí)我也想研究國內(nèi)的數(shù)據(jù),然后就懵逼了。
國內(nèi)統(tǒng)計(jì)局的網(wǎng)站是這樣,
Are u kidding me? 只有一個(gè)表?還是一個(gè)月發(fā)布一次?
這一對比就看出來社會主義勤勞質(zhì)樸的優(yōu)越性了,自己動手豐衣足食,一個(gè)一個(gè)數(shù)敲進(jìn)去吧。
我這人比較懶,正當(dāng)想要放棄的時(shí)候突然靈機(jī)一動,是不是爬蟲可以幫我這個(gè)忙呢?
趕緊在知乎上面狂搜一通,發(fā)現(xiàn)大部分都是Python語言,估計(jì)上手至少得花個(gè)好幾天。有沒有更簡單粗暴一點(diǎn)的呢?接著我就搜到了這個(gè)問題下面的答案:
https://www.zhihu.com/question/47883186
簡直是救星,趕緊擼起袖子擼起來,不對,是干起來。
這里呢,Excel其實(shí)對于mac用戶非常不友好,因?yàn)閺木W(wǎng)上抓數(shù)據(jù)這個(gè)功能被刪掉了,畢竟是Windows的軟件...不過不用氣餒,我們還有Google doc。
當(dāng)然,對于Windows用戶就沒有這個(gè)問題了。
先放上示意圖:
看到?jīng)]有!統(tǒng)計(jì)局的數(shù)據(jù)全在自己的Excel里了喲~
以后走哪兒數(shù)據(jù)抓到哪兒,遇神抓神,遇佛抓佛。
接下來就介紹一下具體是怎么操作的:
首先呢,我們需要打開一個(gè)Excel
然后把光偉正的統(tǒng)計(jì)局網(wǎng)頁地址放在第一格以示崇敬。(這里我選取的網(wǎng)頁是上個(gè)月公布的PMI指數(shù),2017年2月中國制造業(yè)采購經(jīng)理指數(shù)為51.6%)
接著,我們就開始從這個(gè)網(wǎng)頁抓取表格數(shù)據(jù)了:
自己也能抓數(shù)據(jù)了,想想有些小激動呢~
我們需要先任意選一個(gè)舒服的位置,輸入一句話:
=IMPORTHTML(A1,"table",1)
如下圖:
那么這句話是干什么呢?
具體pass給IMPORTHTML( )這個(gè)function的是三個(gè)argument值:
第一個(gè)值就是從A1,也就是統(tǒng)計(jì)局網(wǎng)頁地址所在Excel的位置來告訴這個(gè)function區(qū)哪兒抓數(shù)據(jù)。
第二個(gè)值就是選取“table”這個(gè)格式,也就是告訴這個(gè)function我們想要的是指定網(wǎng)頁上面的表格。我們可以從下面的注釋看到還有一個(gè)選項(xiàng)是“l(fā)ist”,這個(gè)是在HTML里面的另一個(gè)格式,我們需要的是表格,所以此處可以暫時(shí)忽略。(這里有一個(gè)很大的限制就是只能選取這個(gè)兩個(gè)格式,如果要做更復(fù)雜的condition判斷的話就不太可能了,如果stick to Excel的話可能需要借助VBA了。但這里我們只介紹最簡單的數(shù)據(jù)抓取方式。)
第三個(gè)值就是網(wǎng)頁中的第n個(gè)table。這里我選取網(wǎng)頁里的第一張表
好了,沒了。
是不是感覺意猶未盡呢?做好了接受高級裝逼知識的思想準(zhǔn)備,結(jié)果咻的一聲就沒了?
如果你僅僅只是想要知道怎么用呢,就不用再繼續(xù)往下看了。
但是身為一個(gè)合格的科研人員,工作就是搞清楚為什么。接下來,我們可以更細(xì)致看一看具體這個(gè)function是怎么抓取的。
首先呢,我們需要用Google瀏覽器。因?yàn)檫@個(gè)瀏覽器有一個(gè)特殊的技能,那就是“Inspect”。
如下圖:
然后毫不猶豫的點(diǎn)開:
這右邊跳出來的一坨到底是什么東西!
不要急,我們慢慢看嘛。
首先呢,我們可以用一個(gè)快捷鍵command+shift+C(這里我猜Windows用戶應(yīng)該是control+shift+C),然后移到左邊我們需要的表格上。
這個(gè)時(shí)候,驚人的事情發(fā)生了。右上角那一坨代碼會跟著自己的鼠標(biāo)移動!
其實(shí)呢,這個(gè)快捷鍵做的事情很簡單,就是指出你鼠標(biāo)所在位置的代碼。右上角那一坨東西就是這整個(gè)網(wǎng)頁的代碼,其中自然也包括了我們需要的表格部分的代碼。
Excel所做的事情呢,也就是從這一坨代碼里面找出我們需要的表格“table”,然后把表格的內(nèi)容復(fù)制到Excel里面供我們盡情玩樂。
如下圖,我們可以看到“table”這個(gè)關(guān)鍵字吧,所指代的就是左邊的那張表,然后“table”其下的內(nèi)容就是這張表是怎樣呈現(xiàn)在網(wǎng)頁上的。
看到現(xiàn)在我們應(yīng)該可以理解Excel是怎么操作的吧,so easy~
但是對于統(tǒng)計(jì)局網(wǎng)站的數(shù)據(jù)抓取其實(shí)有一個(gè)問題,因?yàn)樗且粋€(gè)一個(gè)網(wǎng)頁發(fā)布的數(shù)據(jù),并且跟其他數(shù)據(jù)混在一起隨機(jī)排列,所以說具體選取需要抓取的網(wǎng)頁還是得人工了。
當(dāng)然Excel還有一個(gè)function叫做IMPORTxm_x_l( ),這個(gè)function是用來抓取某一個(gè)xpath_query的,不局限于上面IMPORTHTML( )這個(gè)function只能抓table或者list。
所以也可以借助這個(gè)function來將網(wǎng)頁中的信息,比如說搜索具體關(guān)鍵字的網(wǎng)頁地址輸入到Excel,然后再將這個(gè)網(wǎng)頁地址自動輸入到一開始的IMPORTHTML( ) function里面用來抓取所有選中網(wǎng)頁的table或者list。
其實(shí)利用VBA也可以做這件事,不過可能就需要另外學(xué)習(xí)一下VBA了,不過大概思路感覺應(yīng)該是這樣。
當(dāng)然如果有編程背景的最好還是用Python或者Java來做爬蟲啦,畢竟比較主流,工具包也比較多。后面我也許會再更新一下用Python來做這件事,不過,我懶。
最后的最后,再悄悄告訴一個(gè)宇宙無敵超級霹靂最最最簡單的方法,簡直獨(dú)門絕技,而且保證一秒鐘就學(xué)會,無需任何知識背景。
那就是,直接copy and paste。
來源:潮汐社區(qū)?智咖專欄
版權(quán)歸原作者所有,轉(zhuǎn)載僅供學(xué)習(xí)使用,不用于任何商業(yè)用途,如有侵權(quán)請留言聯(lián)系刪除,感謝合作。
精品課程推薦:
選購數(shù)學(xué)科普正版讀物
嚴(yán)選“數(shù)學(xué)思維好物”
送給孩子的益智禮物? ?| ??辦公室神器
算法工程師成長閱讀? ?| ??居家高科技
理工科男女實(shí)用型禮物精選? ?
數(shù)據(jù)與算法之美
用數(shù)據(jù)解決不可能
長按掃碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的一分钟教你用Excel从统计局抓数据!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 造作吧,Python快速入门!
- 下一篇: 专业学习频道,欢迎关注数锐学堂