quietly----原来还可以这样用

2017-12-26 徐露露 爬虫俱乐部 爬虫俱乐部



        有问题,不要怕!点击推文底部“阅读原文”下载爬虫俱乐部用户问题登记表并按要求填写后发送至邮箱statatraining@163.com,我们会及时为您解答哟~

喜大普奔~爬虫俱乐部的github主站正式上线了!我们的网站地址是:https://stata-club.github.io,粉丝们可以通过该网站访问过去的推文哟~


有过爬虫经验的码农们都希望抓取信息的速度越快越好,在之前的推文中,我们介绍了rmsg这个命令《rmsg-爬虫到底要花多少时间》,它可以告诉你抓取海量数据到底需要多少时间,在知道爬虫所需具体时间之后,我们的下一步当然是优化我们的程序,进一步缩短爬时间。在这里呢,小编就给大家介绍一个炒鸡好用炒鸡简单的命令---“quietly”。

简单来说,quietly表示悄悄地运行程序,即不在Stata窗口显示运行的结果。那么在什么情况下,我们可以使用到这个命令呢?接下来,让小编来举几个例子吧。

1.只显示关键信息

假设我们运行了多个回归结果,想要从中挑出拟合优度()最高的那个方程,一般来说我们都是这样做的:

sysuse auto,clear

reg price weight mpg

reg price weight mpg gear_ratio

reg price weight mpg gear_ratio foreign

输出如图:

在stata结果窗口中,我们可以看到输出了很多我们当前并不需要的信息,使得我们不能马上就观察到拟合优度的值并进行比较。那么在这个情况,我们就可以使用quietly命令啦。对于以下这种单行的命令,我们可以直接将quietly加在程序的开头,每次运行完回归结果之后,拟合优度()会被保存到了e(r2)这个宏中。

sysuse auto,clear

quietly reg price weight mpg

dis `e(r2)'

quietly reg price weight mpg gear_ratio

dis `e(r2)'

quietly reg price weight mpg gear_ratio foreign

dis `e(r2)'

输出结果如图:

是不是很快就发现第三个方程的拟合优度是最高了的呢。

2.缩短运行时间

既然quietly可以让程序默默进行而不显示输出结果,这在一定程度上可以缩短了运行的时间,而这若运用到海量数据爬取中,则能大大缩短程序运行时间。

 还记得当初我们用rmsg计算抓取港股数据股票代码为00001的历年交易数据总时间为多少吗?

那么我们在源程序上做一些修改,让爬虫悄悄进行,只显示当前抓取的年份和时间,程序如下,值得注意的是,对于多行程序,只需将其放在quietly{ }的花括号中:

set rmsg on

clear

cap mkdir e:/港股数据/

cd e:/港股数据/

forvalue year = 2000(1)2016 {

       forvalue season = 1(1)4 {

              quietly{

                     !curl --data "year=`year'&season=`season'" -o `year'_`season'.txt http://stock.finance.sina.com.cn/hkstock/history/00001.html  

                     clear

                     set obs 1

                     gen v=fileread("`year'_`season'.txt")

                     split v,parse("</form>""</table>")

                     keep v3

                     rename v3 v

                     replace v= ustrregexra(v,"\s+","")

                     split v,parse("</tr>")

                     drop v v1

                     sxpose,clear

                     rename _var1 v

                     replace v= ustrregexra(v,"\s+|^<tr><td>|</td>$","")

                     split v,p("</td><td>")

                     drop v

                     rename (v1-v10)(日期 收盘价 涨跌额 涨跌幅 成交量 成交额 开盘价 最高价 最低价 振幅)

                     drop in -1

                     save `year'_`season',replace

                     erase `year'_`season'.txt

              }

       dis "`year'_`season'"    

       }

}

openall

save 00001.dta,replace

我们可以在输出窗口中看到:

输出窗口不再像原来那样一直处于快速滚动状态,使我们不清楚到底当前已经抓到哪一部分了,修改完之后,窗口的输出变得简单明了。并且最后的运行时间从3分钟缩短到1分钟。哇,只添加了一个quietly命令,就把时间缩短为原来的1/3,这也太棒了吧。

注:此推文中的图片及封面(除操作部分的)均来源于网络!如有雷同,纯属巧合!

以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。另外,我们开通了苹果手机打赏通道,只要扫描下方的二维码,就可以打赏啦!

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

文字编辑/高金凤

技术总编/刘贝贝


往期推文推荐:

1.高校学术大神:你的导师上榜了吗?

2.中国高校财经、管理与综合类期刊灌水排行榜

3.命令sum2docx输出统计量表到docx文件

4.reg2docx报告你的实证结果吧!

5.爬虫俱乐部又出新命令了——wordconvert转换你的word文件

6.putdocx+wordconvert—将实证结果输出到Word.docx)文档

7.如何从pdf中提取表格数据

8.爬虫俱乐部出品——获取上市公司数据的利器

9.爬虫俱乐部出品——实证结果输出命令

10.Putpdf--神奇的转换工具



关于我们

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

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

投稿邮箱:statatraining@163.com

投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

欢迎关注爬虫俱乐部




微信扫一扫
关注该公众号

公开收集正在保存拖拽至此处以完成收集私密