(6)詳解 stata 爬蟲抓取網(wǎng)頁(yè)上的數(shù)據(jù) part 2

接上篇: ?詳解stata爬蟲抓取網(wǎng)頁(yè)上的數(shù)據(jù) part 1

本文do-file及相關(guān)文件 鏈接:https://pan.baidu.com/s/1smVkcUh 密碼:40uq

若鏈接失效搀罢,請(qǐng)私信依溯,看到會(huì)復(fù),謝謝。

下面開(kāi)始抓取1000個(gè)網(wǎng)頁(yè)的源代碼荠耽,分別為temp1.txt—temp1000.txt保存在 e 盤 2 文件夾中,并再次使用 “合并.bat” 將1000個(gè) txt 合并為一個(gè)文件 all.txt呛牲,先把命令放在這备绽,下面逐一解釋:

注意:第一行的 local 命令必須與下面兩次循環(huán)一起 run,否則提示錯(cuò)誤占贫,原因下面解釋桃熄。

抓取1000個(gè)網(wǎng)頁(yè)源代碼并合并

使用 local 命令生成一個(gè)臨時(shí)變量 N = _N(注:在stata中 _n 與 _N 都是默認(rèn)變量,有其固定含義型奥,_N表示的是obsevations的個(gè)數(shù)疼进,這里當(dāng)然就等于 1000,_n則表示從1到1000秩贰,若要理解這兩個(gè)塌西,可以使用 gen N = _N,與 gen n = _n烫葬,然后browse查看 N 與 n 有何區(qū)別)界弧,但是 local 命令生成的變量 N 不會(huì)顯示在變量窗口中凡蜻,而是暫時(shí)存儲(chǔ)在stata的內(nèi)存中,需要的時(shí)候可以進(jìn)行調(diào)用垢箕。下面舉一個(gè)小小的例子演示 local 的作用(需要注意的是 local命令行與下一行調(diào)用local 生成的變量的命令必須一起運(yùn)行划栓,否則會(huì)提示出錯(cuò),因?yàn)閘ocal 宏命令產(chǎn)生的變量只是臨時(shí)的条获,一旦遇到end of do-file【觀察stata主界面忠荞,每運(yùn)行完一條命令都會(huì)提示end of do-file】便會(huì)將生成的臨時(shí)變量刪除,無(wú)法再次調(diào)用帅掘,詳見(jiàn)下下圖中官方給出的英文解釋委煤,已用藍(lán)色部分標(biāo)出,尤其是最后一句):

local 命令演示修档,并對(duì)比 _n 與 _N 區(qū)別

關(guān)于 marco 宏的進(jìn)一步解釋素标,有興趣的可以參見(jiàn)官方給的 help 文件中相關(guān)說(shuō)明,如下:

marco 宏的官方解釋

理解了local 之后再去看接下來(lái)的兩次循環(huán)就容易得多萍悴,第二次循環(huán)是將 url 變量與 purl 變量(purl變量是之前的1000個(gè)鏈接)一一對(duì)應(yīng)并儲(chǔ)存起來(lái)头遭,但不顯示在變量窗口,而第三次循環(huán)則是調(diào)用 url 變量?jī)?chǔ)存的1000個(gè)網(wǎng)址癣诱,并將這1000個(gè)網(wǎng)頁(yè)的源代碼 copy 下來(lái)计维,儲(chǔ)存在e盤的 2 文件夾中,命名為temp1.txt—temp1000.txt撕予,此一過(guò)程得看網(wǎng)速鲫惶,大約耗時(shí)30分鐘左右,像下圖這樣就看著數(shù)字變实抡,最后到 temp1000.txt 就是完成了欠母。之所以會(huì)提示not found是因?yàn)槲覀冊(cè)谧ト∶詈蟾郊恿?replace 的 option,也就是告訴 stata 如果發(fā)現(xiàn) e 盤 2 文件夾中有同名文件就將其替換掉吆寨,但是stata發(fā)現(xiàn)沒(méi)有同名文件赏淌,于是它就提示 not found 并按要求生成新文件,若stata發(fā)現(xiàn)有同名文件啄清,則不會(huì)有此提示六水,而是直接將其替換。

抓取1000個(gè)網(wǎng)頁(yè)源代碼過(guò)程

漫長(zhǎng)的等待之后辣卒,最后再用我們之前在 part 1中用過(guò)的 bat 批處理命令調(diào)用dos將1000個(gè) txt 合并為 all.txt(這次是在文件夾 2 中進(jìn)行處理掷贾,與之前 all.txt 是不一樣的哦)。至此就得到了1000個(gè)網(wǎng)頁(yè)的源代碼荣茫,這1000個(gè)網(wǎng)頁(yè)源代碼就很重要了想帅,因?yàn)槲覀冃枰腉DP信息全部都包含在里面了。同理啡莉,我們用 infix 命令將其讀進(jìn) stata 進(jìn)行處理港准,命令見(jiàn)文初的圖憎乙,因文本輛較大,讀文本之前最好先clear一下叉趣,不然有可能會(huì)導(dǎo)致stata崩潰,寫了半天的dofile要是沒(méi)保存就不好了(具體原因不知道该押,推測(cè)可能是內(nèi)存不夠用疗杉?.?)蚕礼。



文本讀進(jìn)去之后為一個(gè)變量 v烟具,然后開(kāi)始過(guò)濾,提純工作奠蹬,這也是最為繁雜的工作了朝聋,因?yàn)橐獜墓?735748 行代碼中提取出僅兩個(gè)信息,一個(gè)是 “某某地區(qū)幾幾年”囤躁,一個(gè)是 “GDP”冀痕。根據(jù)我們需要的信息,我們?nèi)ふ野@兩個(gè)信息的關(guān)鍵行狸演,觀察其所在的行都有什么共同的特點(diǎn)言蛇,通過(guò)觀察我們看到,地區(qū)名字所在的行都含有 <title> 這樣的字符宵距,而GDP或者是生產(chǎn)總值所在的行都含有 “生產(chǎn)總值” 這樣的字符(如下圖)腊尚,故我們只需要將包含有這兩個(gè)字符的代碼行保留即可

觀察代碼行特征满哪,找規(guī)律

第1步:設(shè)置兩個(gè)指標(biāo)變量(以dummy variable虛擬變量的形式出現(xiàn))a 和 b婿斥。對(duì) a 變量來(lái)說(shuō),如果 v 變量(即全部代碼行所在的變量)中含有 <title> 則讓 stata 返回值1哨鸭,表示 “是含有”民宿,否則返回0,表示 “不含”像鸡。同理以 “生產(chǎn)總值” 為指標(biāo)生成 b 變量勘高。然后,keep if a==1 | b==1表示將含有 <title> 或者含有 “生產(chǎn)總值” 的行 keep 下來(lái)坟桅。這一步就將代碼行數(shù)迅速過(guò)濾华望,縮減至至僅 4570 行。

生成兩個(gè)指標(biāo)變量

第2步—第N步:全部是切割仅乓,保留赖舟,切割,保留夸楣,切割宾抓,保留.....因?yàn)樘幚矸绞娇梢匀收咭?jiàn)仁智者見(jiàn)智子漩,我的不一定就是最好的,但原理是一樣的石洗。因此僅對(duì)使用的部分命令與函數(shù)進(jìn)行解釋幢泼,見(jiàn)do-file中相關(guān)注釋【strpos、duplicates drop】讲衫。

切割與replace
繼續(xù)切割缕棵、替換、保留
最終得到的數(shù)據(jù)

可以看到涉兽,有些數(shù)據(jù)前面還有一些亂七八糟的字符招驴,這是因?yàn)槊糠莨珗?bào)的書寫格式不統(tǒng)一造成的,需要繼續(xù)進(jìn)行處理枷畏,方法同上面一樣别厘,split,replace and keep拥诡,這里不做繼續(xù)演示触趴,感興趣的可以繼續(xù)。

隨機(jī)找?guī)讉€(gè)數(shù)據(jù)去網(wǎng)站上查詢核對(duì)渴肉,看對(duì)應(yīng)的數(shù)據(jù)是否準(zhǔn)確雕蔽。如我這里從上圖的左右分別隨便挑出合肥市2015年 與 九江市2013年去驗(yàn)證,查詢結(jié)果如下宾娜,經(jīng)核對(duì)批狐,準(zhǔn)確無(wú)誤:

查詢驗(yàn)證結(jié)果

最后,對(duì)于空缺的部分前塔,可以單獨(dú)去網(wǎng)站尋找數(shù)據(jù)將其補(bǔ)齊嚣艇。此外,本次應(yīng)得1000行數(shù)據(jù)华弓,但是最終卻得到了 1015 行數(shù)據(jù)食零,究其原因可能還是公報(bào)的格式不完全統(tǒng)一造成的,而且有的數(shù)據(jù)是省的GDP(較少)寂屏,有的是市的GDP贰谣,因此有重復(fù)部分。這類錯(cuò)誤還得根據(jù)研究者需求自行處理迁霎。

好了吱抚,至此本篇詳解就完結(jié)了,撒花?剂(0.0)

最后一個(gè)tips:stata 12秘豹、13 白色主界面默認(rèn)是不支持中文的,顯示中文為亂碼昌粤,可以在主界面任意位置右鍵—>Preferences既绕,然后將 color scheme 的模式由 Standard 改成 Classic 經(jīng)典模式即可正常顯示中文啄刹。

Standard —>Classic
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市凄贩,隨后出現(xiàn)的幾起案子誓军,更是在濱河造成了極大的恐慌,老刑警劉巖疲扎,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昵时,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡评肆,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門非区,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)瓜挽,“玉大人,你說(shuō)我怎么就攤上這事征绸【贸龋” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵管怠,是天一觀的道長(zhǎng)淆衷。 經(jīng)常有香客問(wèn)我,道長(zhǎng)祝拯,這世上最難降的妖魔是什么她肯? 我笑而不...
    開(kāi)封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮晴氨,結(jié)果婚禮上康嘉,老公的妹妹穿的比我還像新娘。我一直安慰自己籽前,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布肄梨。 她就那樣靜靜地躺著,像睡著了一般挠锥。 火紅的嫁衣襯著肌膚如雪峭范。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天瘪贱,我揣著相機(jī)與錄音辆毡,去河邊找鬼甜害。 笑死,一個(gè)胖子當(dāng)著我的面吹牛眨攘,可吹牛的內(nèi)容都是我干的嚣州。 我是一名探鬼主播鲫售,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼情竹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼匀哄!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起涎嚼,我...
    開(kāi)封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤法梯,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后立哑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡滥嘴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年至耻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片走触。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡疤苹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情像樊,我是刑警寧澤旅敷,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站涂滴,受9級(jí)特大地震影響晴音,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜锤躁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一进苍、第九天 我趴在偏房一處隱蔽的房頂上張望鸭叙。 院中可真熱鬧,春花似錦沈贝、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至袁铐,卻和暖如春横浑,著一層夾襖步出監(jiān)牢的瞬間剔桨,已是汗流浹背徙融。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留树绩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓砚哗,卻偏偏與公主長(zhǎng)得像砰奕,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子仅淑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容