(6)详解 stata 爬虫抓取网页上的数据 part 2

接上篇:  详解stata爬虫抓取网页上的数据 part 1

本文do-file及相关文件 链接:https://pan.baidu.com/s/1smVkcUh 密码:40uq

若链接失效,请私信,看到会复,谢谢。

下面开始抓取1000个网页的源代码,分别为temp1.txt—temp1000.txt保存在 e 盘 2 文件夹中,并再次使用 “合并.bat” 将1000个 txt 合并为一个文件 all.txt,先把命令放在这,下面逐一解释:

注意:第一行的 local 命令必须与下面两次循环一起 run,否则提示错误,原因下面解释。

抓取1000个网页源代码并合并

使用 local 命令生成一个临时变量 N = _N(注:在stata中 _n 与 _N 都是默认变量,有其固定含义,_N表示的是obsevations的个数,这里当然就等于 1000,_n则表示从1到1000,若要理解这两个,可以使用 gen N = _N,与 gen n = _n,然后browse查看 N 与 n 有何区别),但是 local 命令生成的变量 N 不会显示在变量窗口中,而是暂时存储在stata的内存中,需要的时候可以进行调用。下面举一个小小的例子演示 local 的作用(需要注意的是 local命令行与下一行调用local 生成的变量的命令必须一起运行,否则会提示出错,因为local 宏命令产生的变量只是临时的,一旦遇到end of do-file【观察stata主界面,每运行完一条命令都会提示end of do-file】便会将生成的临时变量删除,无法再次调用,详见下下图中官方给出的英文解释,已用蓝色部分标出,尤其是最后一句):

local 命令演示,并对比 _n 与 _N 区别

关于 marco 宏的进一步解释,有兴趣的可以参见官方给的 help 文件中相关说明,如下:

marco 宏的官方解释

理解了local 之后再去看接下来的两次循环就容易得多,第二次循环是将 url 变量与 purl 变量(purl变量是之前的1000个链接)一一对应并储存起来,但不显示在变量窗口,而第三次循环则是调用 url 变量储存的1000个网址,并将这1000个网页的源代码 copy 下来,储存在e盘的 2 文件夹中,命名为temp1.txt—temp1000.txt,此一过程得看网速,大约耗时30分钟左右,像下图这样就看着数字变,最后到 temp1000.txt 就是完成了。之所以会提示not found是因为我们在抓取命令后附加了 replace 的 option,也就是告诉 stata 如果发现 e 盘 2 文件夹中有同名文件就将其替换掉,但是stata发现没有同名文件,于是它就提示 not found 并按要求生成新文件,若stata发现有同名文件,则不会有此提示,而是直接将其替换。

抓取1000个网页源代码过程

漫长的等待之后,最后再用我们之前在 part 1中用过的 bat 批处理命令调用dos将1000个 txt 合并为 all.txt(这次是在文件夹 2 中进行处理,与之前 all.txt 是不一样的哦)。至此就得到了1000个网页的源代码,这1000个网页源代码就很重要了,因为我们需要的GDP信息全部都包含在里面了。同理,我们用 infix 命令将其读进 stata 进行处理,命令见文初的图,因文本辆较大,读文本之前最好先clear一下,不然有可能会导致stata崩溃,写了半天的dofile要是没保存就不好了(具体原因不知道,推测可能是内存不够用?.?)。



文本读进去之后为一个变量 v,然后开始过滤,提纯工作,这也是最为繁杂的工作了,因为要从共 735748 行代码中提取出仅两个信息,一个是 “某某地区几几年”,一个是 “GDP”。根据我们需要的信息,我们去寻找包含这两个信息的关键行,观察其所在的行都有什么共同的特点,通过观察我们看到,地区名字所在的行都含有 <title> 这样的字符,而GDP或者是生产总值所在的行都含有 “生产总值” 这样的字符(如下图),故我们只需要将包含有这两个字符的代码行保留即可

观察代码行特征,找规律

第1步:设置两个指标变量(以dummy variable虚拟变量的形式出现)a 和 b。对 a 变量来说,如果 v 变量(即全部代码行所在的变量)中含有 <title> 则让 stata 返回值1,表示 “是含有”,否则返回0,表示 “不含”。同理以 “生产总值” 为指标生成 b 变量。然后,keep if a==1 | b==1表示将含有 <title> 或者含有 “生产总值” 的行 keep 下来。这一步就将代码行数迅速过滤,缩减至至仅 4570 行。

生成两个指标变量

第2步—第N步:全部是切割,保留,切割,保留,切割,保留.....因为处理方式可以仁者见仁智者见智,我的不一定就是最好的,但原理是一样的。因此仅对使用的部分命令与函数进行解释,见do-file中相关注释【strpos、duplicates drop】。

切割与replace
继续切割、替换、保留
最终得到的数据

可以看到,有些数据前面还有一些乱七八糟的字符,这是因为每份公报的书写格式不统一造成的,需要继续进行处理,方法同上面一样,split,replace and keep,这里不做继续演示,感兴趣的可以继续。

随机找几个数据去网站上查询核对,看对应的数据是否准确。如我这里从上图的左右分别随便挑出合肥市2015年 与 九江市2013年去验证,查询结果如下,经核对,准确无误:

查询验证结果

最后,对于空缺的部分,可以单独去网站寻找数据将其补齐。此外,本次应得1000行数据,但是最终却得到了 1015 行数据,究其原因可能还是公报的格式不完全统一造成的,而且有的数据是省的GDP(较少),有的是市的GDP,因此有重复部分。这类错误还得根据研究者需求自行处理。

好了,至此本篇详解就完结了,撒花!(0.0)

最后一个tips:stata 12、13 白色主界面默认是不支持中文的,显示中文为乱码,可以在主界面任意位置右键—>Preferences,然后将 color scheme 的模式由 Standard 改成 Classic 经典模式即可正常显示中文。

Standard —>Classic
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容