在上一篇推文中,我们介绍了将网页上抓取下来的源代码导入到Stata中的方法,比较了insheet、infix、import delimited几个命令在导入源代码时的特点,以及如何解决不同编码导入Stata中产生的乱码问题。最终我们选择了infix+unicode的组合,在Stata14中对源代码进行处理。
在我们平时做一些简单的网络数据抓取时,这种导入方法已经可以满足我们的需求了。但是当我们去抓取一些特别的数据,比如网页本身源代码中并没有的JavaScript返回数据时,就可能出现问题。比如笔者最近通过百度地图API的链接从经纬度提取地址时,就遇到了问题。
这 个是笔者通过之前的公众号数据处理援助中心上发的中文地址提取经纬度的推文中,中南财经政法大学提取出的经纬度计算的坐标加入到链接中得到的返回结果源代 码,源代码中的地址是湖北省武汉市洪山区中原大道,也就是中南财经政法大学中原楼前面的那条路。但是当笔者将这个源代码导入到Stata中时,就出现了这样的情况。
一条数据都没有读入。这是怎么回事呢?导致这样的情况发生的原因是,我们在通过infix 读入文本文档时,如果某一行不是以回车键结尾的话,这一行是读不进来的。而有些网页本身源代码中看不到的JavaScript返回结果,本身可能就一行, 而且又没有回车符结尾,因此就读入不到Stata中。比如我们做一个简单的测试。我们新建一个文本文档,只有一行,而且没有回车符。
然后我们把这个导入。
还是什么都没有。我们试着在结尾加个回车键。
这部分内容就读入了。我们在这一行下面再输入一行,同样不以回车符结尾。
我们再来导入。
仍然只有一行。不以回车符结尾的行确实无法通过infix 导入。这也是导致前文中返回的源代码无法导入的原因。那么该怎么处理呢?大家都会想到,很简单啊,最后加上一个回车键不就好了。对啊,说起来很简单,但是 真正到做的时候呢?我们在抓取网络数据时,常常要处理成千上万个网页的源代码,如果我们一个个去加回车符,先不说要打断Stata处理的过程,单单是这个 工作量就无法想象。那么有没有什么办法能够帮我们修改文本文档呢?有,这个命令就是rewrite。
使用rewrite这 个命令之前,我们要先安装,安装的方法大家应该都知道。在这里,我们用rewrite命令一个非常简单的用法,将一个文档中的内容拼接到另一个文档中。我 们首先准备一个文本文档,里面只有一个回车符,这就是我们要添加到原先文本文档结尾的内容。我们把这个文本文档命名为cr,也就是回车的意思。
然后将这个拼接到之前的两行内容上面。
rewrite cr.txt using temp1.txt, append
再而我们将拼接后的文本文档导入到Stata中。
这样,两行内容就都导入进来了。同样的方法,我们也可以把文章开始时的源代码导入进来。
有了这个命令,妈妈再也不用担心我的源代码导不进去了。快来关注我们的“爬虫俱乐部”公众号,除了发布好用的命令,说不定小编哪天还偷偷告诉你这个人见人爱、花见花开的帅气笔者他是谁~
我们团队原来的微信公众号是“数据处理援助中心”,现在正式搬家到“爬虫俱乐部”,欢迎关注。新的公众号开始,我们推出有问必答栏目,对您提出的问题,我们会尽力回答,并通过推文的形式进行发布。我们也欢迎各位粉丝向公众号投稿。
(编辑 @徐苾雯)
欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。
投稿邮箱:xueyuan19920310@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”
3)如果大家遇到关于stata处理分析数据的问题,也可以给该邮箱写邮件,邮件名称为“提问”+“问题名称或者关键词”,我们会在后期的推文里给予解答。
长按二维码关注公众号
微信扫一扫
关注该公众号