本文作者:陈志玲
文字编辑:张馨月技术总编:张计宝
写在前面:
利用stata调用python是stata16中的一个新增功能。对此,相信很多人和小编当初的想法一样,觉得该功能是多此一举。但是小编在深入了解学习之后发现,该功能简直是stata用户的福音。该功能使得,我们可以先利用python爬取数据,然后再利用用户所熟悉的stata去处理数据,因为stata在处理数据方面具有一定的优势。
那么今天我们就来看看,怎样利用stata调用python爬取数据,再用stata进行处理?今天试爬的数据是巨潮网上的预约年报的披露时间数据。
进入Python交互模式
首先做好准备工作,清空内存,创建好路径,进入路径,然后只需要输入python,即可进入python交互模式,具体程序如下:
clearcap mkdir "D:\爬虫\A股年报披露时间"cd "D:\爬虫\A股年报披露时间"python
结果如图:
此时出现报错,报错信息提示,end命令缺失。这就是需要我们注意的地方,进入python交互模式之后,在dofile中的程序中不可以像之前stata程序一样一行一行运行,而必须将python和end命令(包括python和end命令)之间的所有行一起运行,即必须以end命令结尾。
Python爬取网络数据
(1)利用python爬取网页源代码
大家可以进入巨潮资讯网(http://www.cninfo.com.cn/new/index),点击上图的数据—>定期报告预约披露,可以看到该网页包含190页的数据,为了方便起见,今天只爬取这190页的数据。
为方便stata与python使用循环,下面将利用python语法封装函数。爬取网页源代码的程序如下(此处原理参考往期推文《玩转python之“手把手”教你爬数据》):
def GetSourceCode(page) : #获取网页源代码import requestsimport timeurl = "http://www.cninfo.com.cn/new/information/getPrbookInfo"headers = {"Accept":"*/*","Accept-Encoding":"gzip, deflate","Accept-Language":"zh-CN,zh;q=0.9","Connection":"keep-alive","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8","Host":"www.cninfo.com.cn","Origin":"http://www.cninfo.com.cn","Referer":"http://www.cninfo.com.c