本文作者:刘畅,河南大学经济学院
本文编辑:魏玲辉
技术总编:兰博文
Stata and Python 数据分析
爬虫俱乐部Stata基础课程、Stata进阶课程和Python课程可在小鹅通平台查看,欢迎大家多多支持订阅!如需了解详情,可以通过课程链接(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或课程二维码进行访问哦~
一、导读
教育部网站发布文件的具体网址是:http://www.moe.gov.cn/was5/web/search?channelid=239993

信息拥有司局 |
代码 |
办公厅 |
A01 |
政策法规司 |
A02 |
发展规划司 |
A03 |
人事司 |
A04 |
财务司 |
A05 |
基础教育司 |
A06 |
职业教育与成人教育司 |
A07 |
高等教育司 |
A08 |
民族教育司 |
A09 |
教师工作司 |
A10 |
教育督导司 |
A11 |
思想政治工作司 |
A12 |
社会科学司 |
A13 |
高校学生司(高校毕业生就业服务司) |
A15 |
科学技术与信息化司 |
A16 |
体育卫生与艺术教育司 |
A17 |
语言文字应用管理司 |
A18 |
语言文字信息管理司 |
A19 |
国际合作与交流司(港澳台办公室) |
A20 |
机关党委 |
A21 |
学位管理与研究生教育司(国务院学位委员会办公室) |
A22 |
中国联合国教科文组织全国委员会秘书处 |
A23 |
退休干部局 |
A24 |
纪检组、监察局 |
A25 |
教材局 |
A26 |
综合改革司 |
A27 |
巡视工作办公室 |
A28 |
校外教育培训监管司 |
A29 |
二、爬取通知链接

clear allcd C:\Users\23259\Desktop\Stata17\教育部信息copy "http://www.moe.gov.cn/was5/web/search?channelid=202456" 1.txt, replaceinfix strL v 1-100000 using 1.txt, clearkeep if ustrregexm(v, `"</span></li>"') & strpos(v, `"<a href"')replace v = subinstr(v, " ","", .)
gen 发布链接 = ustrregexs(1) if ustrregexm(v, `"href="(.*?)""')drop if 发布链接==""split v,p("</a>")gen 标题 = ustrregexra(v1, "<.*?>", "")gen 发布时间 = ustrregexra(v2, "<.*?>", "")drop v v1 v2save 1.dta,replace
clear allcd C:\Users\23259\Desktop\Stata17\教育部信息forvalues i = 1/32 {cap copy "http://www.moe.gov.cn/was5/web/search?channelid=202456&page=`i'" temp.txt,replacewhile _rc != 0 {sleep 5000cap copy "http://www.moe.gov.cn/was5/web/search?channelid=202456&page=`i'" temp.txt,replace}infix strL v 1-100000 using temp.txt, clearkeep if ustrregexm(v, `"</span></li>"') & strpos(v, `"<a href"')replace v = subinstr(v, " ","", .)gen 发布链接 = ustrregexs(1) if ustrregexm(v, `"href="(.*?)""')drop if 发布链接==""split v,p("</a>")gen 标题 = ustrregexra(v1, "<.*?>", "")gen 发布时间 = ustrregexra(v2, "<.*?>", "")drop v v1 v2save "`i'.dta", replace}clear //将爬取的链接数据合并为一个总的教育部数据,并生成序号forvalues i = 1/32 {append using "`i'.dta"}gen 序号=_norder 序号 发布链接save 教育部数据.dta ,replace

use 教育部数据.dta,clearlocal N=_Nforvalue i=1(1)`N'{local url`i'=发布链接[`i']}forvalue j=1(1)`N'{copy "`url`j''" "file`j'.txt",replace}

clear allcd C:\Users\23259\Desktop\Stata17\教育部信息infix strL v 1-20000 using file1.txt,clearkeep if ustrregexm(v, `"<td class.*?">"')replace v = ustrregexra(v, "<.*?>", "")gen v1 = v[_n + 1]keep if mod(_n, 2) == 1clearnrowsave file1.dta,replace

clear allcd C:\Users\23259\Desktop\Stata17\教育部信息use 教育部数据, clearforvalues f = 1(1)347{infix strL v 1-200000 using file`f'.txt, clearkeep if ustrregexm(v,`"<td class.*?">"')replace v = ustrregexra(v, "<.*?>", "")gen v1 = v[_n + 1]keep if mod(_n, 2) == 1clearnrowgen 序号=`f'rename (信息名称:信息索引:生成日期:发文机构:发文字号:信息类别:内容概述:) (信息名称 信息索引 生成日期 发文机构 发文字号 信息类别 内容概述 )order 序号 信息名称merge m:1 序号 using 教育部数据.dtakeep if _m==3drop _mkeep 序号 信息名称 信息索引 生成日期 发文机构 发文字号 信息类别 内容概述 发布链接 标题 发布时间save file`f'.dta,replace}clear allforvalues i =1(1)347{append using "file`i'.dta"}save 总数据.dta,replace
最后,我们将所爬取的合并数据导出成Excel形式。
order 序号 标题 发布时间 发布链接export excel 总数据.xlsx,firstrow(varl) replace
抓取的最终数据如下(部分截取):

重磅福利!为了更好地服务各位同学的研究,爬虫俱乐部将在小鹅通平台上持续提供金融研究所需要的各类指标,包括上市公司十大股东、股价崩盘、投资效率、融资约束、企业避税、分析师跟踪、净资产收益率、资产回报率、国际四大审计、托宾Q值、第一大股东持股比例、账面市值比、沪深A股上市公司研究常用控制变量等一系列深加工数据,基于各交易所信息披露的数据利用Stata在实现数据实时更新的同时还将不断上线更多的数据指标。我们以最前沿的数据处理技术、最好的服务质量、最大的诚意望能助力大家的研究工作!相关数据链接,请大家访问:(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或扫描二维码:
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐
清洗实证数据的案例——计算比率和知网数据重命名
空间计量与Stata(一)
【Python实战】基于大数据的贷款违约分析
【数据分析基础】Python数据交叉表
Stata压缩和解压缩文件的几种方法
【python库——whisper】实现音频转换成文字功能
微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

