查看原文
其他

爬虫俱乐部在山东财经大学金融学院暑期Stata网课上的精彩答疑

爬虫俱乐部 Stata and Python数据分析 2023-01-01

本文作者:邱   沣,河南大学中原发展研究院

本文编辑:陈志林

技术总编:李婷婷


Stata&Python云端课程来啦!

      ‍好消息好消息,爬虫俱乐部开辟小鹅通战场!!爬虫俱乐部隆重推出小鹅通网络课程,将Stata基础课程Stata进阶课程Python课程都上传至小鹅通平台,欢迎大家多多支持订阅!报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台留言哦。如需了解详情,可以通过课程链接(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或课程二维码进行访问哦~‍


受山东财经大学金融学院邀请,爬虫俱乐部为山财金融学院2022级即将入学的新生开展为期两个月的Stata数据采集和分析课程。后续学习中河南师范大学昆明理工大学也热烈加入本课程。自六月一号正式答疑开始到现在,大家学习热情日益高涨,精彩提问络绎不绝,面对大家的踊跃提问,我们爬虫俱乐部也及时解惑,详实回答,得到了大家的一致好评。



下面针对其中出现的一些通用问题,我们在此分享出来,供大家学习和参考。循环中的local随着大家学习的不断深入,进入了Stata学习中精彩但也颇有难度的“循环”阶段了,这时大家的疑问就多了起来,比如这位同学在群里问到,为什么save `stk',replace这一步报错了。



结合他的爬虫程序,我们仔细分析后发现,文件保存失败是因为stk是大循环 foreach stk in `r(levels)' 中的循环算子,所以save `stk',replace 需要放在循环 foreach stk in `r(levels)' 里面一起执行。这就提醒我们循环算子即循环本身定义的local,只能在循环中使用,不能跳出循环。
        接下来这位同学写的循环同样存在问题,以下是他所写的程序:


他的问题同样是循环中的local使用错误,首先使用forecah循环是为了让此路径下的dta文件一个一个合并起来,所以定义了循环算子f,将local s 中的文件一个个拿出来,所以合并时应使用 f 而不是 s 。另外合并时不需要再另加.dta表示文件格式了,循环算子f本身就已带有文件格式,重复定义会报错。简单改写一下即可

merge 1:1 id year using "`f'"


局部宏扩展函数

局部宏扩展函数这里也是新手容易犯错的地方,很多人并没有完全理解它的含义,所以就会导致使用出错,比如下图这位同学:

首先,局部宏扩展函数dir的基本语法为:

local list :dir ["]dirname["] { dirs | files |other}["]pattern["] [, nofail respectcase]

其中,dirname为文件路径名称;dirs| files | other分别代表文件夹、常规文件、非常规文件;pattern为文件或文件夹样式;nofail表示若当前目录下含有太多文件名,则返回适合mname的文件名,而不报错;respectcase表示保留原有文件(夹)名称的大小写形式,否则英文字母默认输出为小写形式。dir "."表示遍历当前路径
  在定义宏扩展函数时,需要注意 dir "." files其中的引号一定要加上,. 指当前路径,不带引号无法识别。正确用法如下:

local files: dir "." files "`stk'_*.dta"

更多详情可参考我们团队之前的推文巧用局部宏扩展函数dir

爬虫拿不到数据
这类问题在Stata的学习过程中也很容易遇到,现在大多数网站都有各种各样的反爬机制,如果你短时间内大量爬取了网站信息,网站就会识别到你的异常访问,那么爬虫中就容易出现类似的错误,如下图所示。



c(rc)值为0或没有得到观测值,在确定程序无误的前提下,多半是触发了反爬机制。
     解决办法:可以一段一段的爬,比如5家公司,5家公司,每个公司20页公告这样间断地爬,并且加上sleep选项。对于新浪财经这种比较友好的网站,可以暂停一会再去访问就好了。但一些反爬比较严重的网站,就需要通过购买ip,代理等更高阶的方法了。
合并数据后出现空行


这位同学在使用cnstock爬取上市公司公告时,后续合并数据前,未删除 cnstock.dta,导致一起被合并到其中,数据中出现空行。
     解决方法也很简单,合并前删除 cnstock.dta即可或者在最初就删除掉。

解决办法1:合并前删除 cnstock.dta即可;

!del cnstock.dta

解决办法2:在cnstock获取到公司列表后就删掉该dta文件;

cnstock allerase cnstock.dta


这就提醒我们批量合并数据时,一定要仔细检查要合并路径下的数据有哪些,并且使用局部宏扩展函数或者fs命令时,注意搭配使用恰当的通配符来调用数据。以上就是我们众多精彩答疑的一部分了,希望我们挑选出的案例对大家有所启发和帮助。


我们的课程为帮助同学更好地学习,在周一到周五安排了课程老师为同学们答疑解惑,届时,参加其他网课的学生也可以在所在的答疑群向授课老师咨询。各个课程老师的答疑时间以及答疑主要内容如下:


课程集中答疑时间能够有效改善自闭症患者的动、静态平衡能力,同时能够改善前庭失衡、触觉过于敏感以及提升智力水平。

周一 8:00pm-9:30pm李春涛(研究选题、数据清洗、数据合并、循环)
周二 8:00pm-9:30pm薛   原(网络爬虫、正则表达式、python)
周三 8:00pm-9:30pm司海涛  (正则表达式、网络爬虫、python)
周四 8:00pm-9:30pm闫续文(结果输出系列、事件研究、数据清洗)
周五 8:00pm-9:30pm张计宝(文本分析、网络爬虫、正则表达式、python)
     此外,我们还设置了两位常规答疑老师刘子艳和邱沣,学员遇到的问题,可以先在群里咨询常规答疑老师,复杂的问题可以通过常规答疑与授课老师预约office hour的咨询。每天下午2点-晚上10点在答疑群里提问都会有答疑人员负责答疑哦~最后,欢迎大家报名参与我们的课程学习爬虫俱乐部将为您提供的零基础、无障碍的Stata数据分析和网络爬虫课程,更重要的是,我们还为您准备了认真负责,细致入微的答疑服务。在这里,您的学习效率和效果将成倍提升,一站式购买,无后顾之忧。
最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。


          


 对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!











往期推文推荐

JupyterNotebook——如何更换默认文档目录?

Stata绘图系列——玩转绘图通用选项(一)

出人意料!这所大学的A级学科总数竟超越清华北大!

Stata数据读入——打开方式不同?

数据类型——Dict、Set与Frozenset简析

Stata小贴士之外部命令安装路径

有一种夏天叫做宫崎骏的夏天

换装术|多个Excel文件如何一键转为dta格式

【基础篇】Python可变对象与不可变对象

Stata绘图系列——细节掌控绘图区域!

 4月A股的收官战之概念板块哪家强?

解放双手!你必须要会的两个命令—inlist & inlist2

【基础篇】字符串之判断方法

Stata绘图系列——让你的直方图随心所欲

【爬虫篇】湖人无缘季后赛,球迷如何回应

客官,要来份四象限图吗?

Python实现简繁体转换

Stata与Python交互方法及数据传递

 “青铜”爬“王者”

 留下想要的变量,你会几种方法?

关于我们 


   微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

   武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。



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

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里
为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众
号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存