天下武功唯快不破,大道至简一招制敌——高管任职数据抓取与整理

2016-12-21 薛原&赵磊 爬虫俱乐部 爬虫俱乐部

问题一:把大象关进冰箱需要几步?很简单:打开冰箱门,放进大象,关上冰箱门,ok,搞定!

问题二:高管任职数据抓取与整理,需要几步?更简单:抓取,整理,ok,搞定!

逗我玩么?逗的就是你!其实还真就这么简单,一般人我不会告诉他是用下面的方法来分分钟搞定的。

先来查看一下我们想要的数据长什么样子,然后再带您领略神奇飞刀的刀法招式:瞬间削出我们想要的数据来!

小二,上菜(如下图):


上图就是公司高管数据的部分网页源代码,高管任职数据都在含有"</div></td>"特征的行中,我们最终想要的是这些行里面高管的具体姓名、职务、任职日期、离职日期这四项数据。目标明确,单刀直入!

1

抓取网页源代码

首先找到公司高管数据的网页,然后抓取网页源代码,并保存,具体程序如下:

clear

set more off

copy "http://vip.stock.finance.sina.com.cn/corp/go.php/vCI_CorpManager/stockid/600900.phtml" "600900.txt", replace

2

编码转换

由于抓取的网页源代码采用的是gb2312,在stata14中会出现乱码问题,所以我们要先对其进行编码转换,并把文档内容显示在Stata界面。具体如下:

unicode encoding set gb18030

unicode translate 600900.txt, transutf8

unicode erasebackups, badidea

type 600900.txt


出刀前,见上图,接下来,就是见证飞刀威力的神奇时刻!

3

飞刀出鞘(subinfile修改文件)

先保留高管任职信息所在行,然后把除具体高管姓名、职务、任职日期、离职日期之外的其余字符串统统删除,只需一招!

注意,注意,睁大眼睛,飞刀出鞘,一招绝杀:

subinfile 600900.txt, index("</div></td>") from("(.*strong.*)|(<.*?>)") fromregex dropempty replace

type 600900.txt

刀已入鞘!出刀后,见下图:


真的是一刀一招,削得干干净净!It's amazing!

想要了解飞刀(subinfile)之快,招式之绝,可来爬虫俱乐部寻找这本武功秘籍:用subinfile修改文件,滚蛋吧,繁琐的命令君!什么,刚才动作太快,没看清?回放慢动作如下:刚 才用的subinfile这招刀法是:首先保留下来txt文件中含有“</div></td>”的行,然后依次先将含有 “strong”的行删除掉,再将所有“<>”以及“<>”里面的内容删除掉,最后删除掉空白行。这也是同时加入几个选项时 subinfile命令执行的顺序(刀法招式参见刚才推荐的武功秘籍)。

4

导入数据

接下来,我们将修改后的txt文件导入到stata,具体程序如下:

infix strL v 1-2000 using 600900.txt,clear


5

post:得到我们想要的数据类型

由于上图所显示的高管任职数据全部在同一列,下面我们用post命令,将高管姓名(name),职务(position),任职日期(startdate)、离职日期(enddate)依次post出来,分别对应显示在四列,并保存高管任职数据,具体程序如下:

capture postclose mypost

postfile mypost str40 name str40 position str30 startdate str30 enddate using 高管任职数据.dta, replace

forv i=1(4)`=_N' {

  post mypost (v[`i']) (v[`i'+1]) (v[`i'+2]) (v[`i'+3])

}

postclose mypost

use 高管任职数据.dta,clear

compress

结果显示如下图:


注:

①“--”表示高管仍然在任,所以没有离职日期,原始数据显示为“--”。

②有关post命令用法,李春涛教授曾在会计学术联盟、多所高校等讲授过,并且我们公众号推文曾多次使用,大家可以参考往期推文,比如:免费的股价同步性,一片片从邮局寄来免费事件研究,一片片从邮局寄来等。

今天分享的内容就是这些啦,接下来让我们关注一下空气质量情况。

全国空气质量如下


北京的朋友,小编很心疼你们


以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~,点赞打赏随您心意,么么哒~

应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~


编辑 by 徐苾雯


往期推文推荐:

1.火锅和肥羊,啤酒和炸鸡,cnstock和chinafin

2.天路——chinafin与cntrade命令

3.用subinfile修改文件,滚蛋吧,繁琐的命令君!

4.分时数据,从此唾手可得

5.爬虫俱乐部周末送大礼——chinagcode提取中文地址经纬度

6.esttab功能挖掘:“Yes”or“No”

7.用“套路”处理数据

8.厉害了,我stata哥

9.众里寻她千百度,synth命令来帮助!

10.I have a Stata, I have a python




关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。


此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:xueyuan19920310@163.com

投稿要求:

1)必须原创,禁止抄袭;

2)必须准确,详细,有例子,有截图;

注意事项:

1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。

3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

欢迎关注爬虫俱乐部

微信扫一扫
关注该公众号