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