香樟青苗简报 | 薛原:Stata编程与网络爬虫
2022/7/27 9:24:26 阅读:239 发布者:
2022年7月22日晚上,华中科技大学管理学院博士生薛原作为第五期香樟青苗计划主讲人,为大家带来了“Stata编程与网络爬虫”的讲座。本次讲座由展金泳助教主持,全体第五期香樟青苗计划学员参加。
薛原,华中科技大学管理学院博士研究生,香港中文大学(深圳)经管学院访问学生,爬虫俱乐部成员,擅长Stata、Python编程技术。参与编写了cngcode、cnaddress、t2docx、reg2docx、cnintraday、sum2docx等十余个热门Stata命令。能够实现中文地址与经纬度之间的转换、实证结果输出等多个功能。其中多个命令曾进入ssc最热门的前十大命令。从事公司金融以及资产定价方向的研究,已有成果发表在Stata Journal,《金融研究》。
薛博士从利用Stata编程进行爬虫的意义讲起,从抓取新浪财经上市公司高管任职数据、深交所信息披露考评结果、巨潮资讯网预约披露时间三个案例入手,按照从简单到困难的操作复杂程度,结合网络爬虫的基本步骤,层层递进演示了实操过程。与此同时,薛博士还为大家详细介绍了使用Stata做网络爬虫的必备技能,包括文本文件读入命令、乱码处理命令、文本信息处理方式、局部宏与循环的使用以及HTML基础知识及网页解析。
第一个例子演示的是抓取新浪财经上市公司高管任职数据。薛博士以长江电力公司为例,首先介绍了如何从网页中获取源代码并导入Stata,详细解释出现乱码的原因,并对比了unicode命令和ustrfrom函数处理乱码的便捷程度。其次,演示了如何引入正则表达式提取源代码中的可用信息。最后,通过拆分、压缩等操作进行简单数据清洗,形成最终数据文档。在此基础上,也说明了如何利用foreach命令对证券代码进行循环,以爬取多家上市公司的高管任职数据。薛博士还细致地讲解了如何编写代码应对网速不畅导致的数据爬取失败的细节问题。
第二个例子演示的是爬取深交所信息披露考评结果。深交所每年会对在深交所上市的上市公司进行关于信息披露质量的考评,考评结果分为A、B、C、D四类。薛博士指出,相对于第一个例子而言,该例子的难点在于无法直接在网页源代码中找到想要抓取的信息,因此我们需要借助F12(或右键+检查)打开“抓包界面”,用“抓包功能”来找到需要的信息。
在抓包界面中,薛博士向大家介绍了png、script、style、font、xhr等类型的文件,以及如何筛选出包含我们需要的信息的文件。在找到包含所需信息的文件后,复制得到文件的链接。通过对链接的观察,我们可以发现改变链接最后“PAGENO=”中“=”后面的数字,可以来访问网页的第1-n页。随后薛博士再次按照步骤,依次演示了获取网页源代码、读入了文本文档,采用正则表达式匹配(ustrregexm)、提取(ustrregexs)所需键值对,以及如何利用split和sxpose命令将数据拆分和转置进行循环提取。
在第三个例子演示的是抓取巨潮资讯网预约披露年报,在本案例中薛博士指出,面对请求方式(request method)为post而不是get的网页时,Stata不能直接处理,需要借助curl提交表单数据(或者使用python)来实现,并为大家详细介绍了curl的安装和调用方法。
最后的答疑环节,薛博士解释并演示了大家提出的代码问题,还对同学们提出的如何爬取统计年鉴数据,如何处理爬取页数受限问题,以及如何在情感分析时进行分词给出了十分详细的解答和启发性建议。“纸上得来终觉浅,绝知此事要躬行。”讲座的最后,薛博士鼓励同学们多学多练,将爬虫技术结合研究实际,不断精进自己的编程和爬虫技能。讲座至此圆满结束,感谢薛博士为香樟学员带来的精彩分享!
转自:香樟经济学术圈
如有侵权,请联系本站删除!