前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Stata | 爬取企业景气指数与企业家信心指数

Stata | 爬取企业景气指数与企业家信心指数

作者头像
PyStaData
发布2020-07-21 10:58:09
5610
发布2020-07-21 10:58:09
举报
文章被收录于专栏:PyStaDataPyStaData

前言

之前看见有文章在稳健性检验部分,用企业景气指数和企业家信心指数代替 GDP 增长率作为宏观经济层面投资机会的替代变量(李凤羽和杨墨竹,2015)。所以想收集来看看,在网上找到中国经济网行情数据中心[1]有这个数据,所以用 Stata 爬了下,好久没有用 Stata 干这种活儿,也当是练练手。

思路分析

网页是 POST 请求,所以调用 curl 进行爬取。整体思路不难,找到翻页信息后批量请求,之后对字符串进行清理,再整理成规范的数据。如果想复刻我的代码,注意先下载 curl,安装nrow, openall 两个外部命令。

实现过程

爬取数据

代码语言:javascript
复制
* 获取页面截止页码
!curl -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36" -d "curPage=1&numPerPage=15&rand=1587711227852" -o confidenceIndex.txt "http://data.ce.cn/servlet/macrography/MacrographyAction?function=Condition"
infix strL v 1-20000 using confidenceIndex.txt,clear
keep if index(v, "pagecount")
if ustrregexm(v,"(\d+)") local a = ustrregexs(1)

* 爬取并存储单页数据
forvalues p = 1/`a'{
	qui{
	!curl -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36" -d "curPage=`p'&numPerPage=15&rand=1530620756348" -o confidenceIndex.txt "http://data.ce.cn/servlet/macrography/MacrographyAction?function=Condition"

	* 处理字符串
	infix strL v 1-200000 using confidenceIndex.txt,clear
	keep if index(v,`"<td >"') | ///
        index(v,`"<td style="border-left:none;">"') | ///
        index(v,`"<td class="tsblue" style="border-left:0 none;">"')

	replace v = ustrregexra(v,"<(.*?)td(.*?)>","")

	* 调整数据格式
		forvalues i = 0/7{
			gen temp`i' = v if mod(_n, 7) == `i'
			preserve
			keep temp`i'
			drop if temp`i' == ""
			save ".\temp\temp`i'.dta", replace
			restore
		}

	use ".\temp\temp0.dta", clear
	forvalues i = 1/6{
		merge 1:1 _n using ".\temp\temp`i'.dta", nogen
	}

	nrow
	save ".\result\result`p'.dta", replace
}
	dis in result "第 -`p'- 页爬取完毕!"
}

数据整理

代码语言:javascript
复制

openall, directory("./result/")

* 日期变量
gen q = usubstr(月份,1,4) + "q" + usubstr(月份,6,1)
g 季度=quarterly(q,"YQ")
format 季度 %tq
drop q

* 数据类型
order 月份 数据类型 总体 工业 建筑业 房地产业 住宿和餐饮业
destring 总体-住宿和餐饮业, replace
encode 数据类型, gen(类型)

* 定义panel
xtset 季度 类型
save "企业景气指数与企业家信心指数.dta", replace

绘图

代码语言:javascript
复制
use "企业景气指数与企业家信心指数.dta", clear
tw (line 工业 季度 if 类型 == 1) ///
   (line 工业 季度 if 类型 == 2), ///
   scheme(qleanmono) ///
   legend(pos(8) label(1 "企业家信心指数") label(2 "企业景气指数")) ///
   title("中国企业景气指数与企业家信心指数:工业") ///
   subtitle("(时间:1999年第1季度-2019年第4季度)") ///
   ytitle("总体指数") ///
   note("数据来源:中国经济网(http://data.ce.cn)")
graph export "中国企业景气指数与企业家信心指数_工业.png", replace

小结

中国经济网行情数据中心还有一些其他股票、基金、宏观经济和金融等数据,数据源质量还比较好。

其实有点想以这个网站数据源为基础,写个命令方便的获取上面的数据,但一是还有其他的事情要忙活,做这件事的激励似乎不太够;二是写出来之后还需要精力维护,就懒得行动了。有兴趣的朋友可以尝试一下,我在上面这里也爬过房价指数和其他的数据,数据页面的网页结构是差不多的,实现起来应该还好。

参考资料

[1]

中国经济网行情数据中心: http://data.ce.cn/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PyStaData 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 思路分析
  • 实现过程
    • 爬取数据
      • 数据整理
        • 参考资料
    • 绘图
    • 小结
    相关产品与服务
    命令行工具
    腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档