Stata获取所有上市公司的基本收入状况数据

Stata获取所有上市公司的基本收入状况数据

接着上面一篇文章提到的换行方法,我赶紧又爬了一些数据,例如这个:A股所有公司收入状况一览表

这里可以下载到1989年以来所有A股上市公司的基本收入状况数据,为了下载所有的数据,我设计了下面的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/* 获取所有会计年度 */
copy "http://stockdata.stock.hexun.com/gszl/srzk.aspx" temp.txt, replace
utrans temp.txt
infix strL v 1-20000 using temp.txt, clear
keep if index(v, `"<ul class="sub" id="select_ul">"')
split v, parse("</li>")
drop v
sxpose, clear
gen year = ustrregexs(1) if ustrregexm(_var1, `"title="(.*)""')
drop _var1
drop if year == ""
levelsof year, local(year)
/* 下载每个年份的数据 */
foreach m in `year'{
cap{
copy "http://stockdata.stock.hexun.com/gszl/data/Jsondata/srzk.ashx?count=4000&date=`m'&stateType=down&titType=5&page=1&callback=hxbase_json16" temp.txt, replace
! cat temp.txt|tr "{" "\n" > my.txt
utrans my.txt
infix strL v 1-20000 using my.txt, clear
drop in 1/2
split v, parse(,)
keep v3 v4 v5 v6 v7 v8 v9 v12 v13
gen code = ustrregexs(1) if ustrregexm(v3, `"\((.*)\)"')
replace v3 = ustrregexs(1) if ustrregexm(v3, `"'(.*)\("')
label var v3 "公司名称"
ren v3 name
label var code "公司代码"
order name code
replace v4 = ustrregexs(1) if ustrregexm(v4, `"'(.*)'"')
label var v4 "收盘价"
ren v4 close
replace v5 = ustrregexs(1) if ustrregexm(v5, `"'(.*)'"')
replace v6 = ustrregexs(1) if ustrregexm(v6, `"'(.*)'"')
replace v7 = ustrregexs(1) if ustrregexm(v7, `"'(.*)'"')
replace v8 = ustrregexs(1) if ustrregexm(v8, `"'(.*)'"')
replace v9 = ustrregexs(1) if ustrregexm(v9, `"">(.*)</a>"')
replace v12 = ustrregexs(1) if ustrregexm(v12, `"">(.*)</a>"')
replace v13 = ustrregexs(1) if ustrregexm(v13, `"">(.*)</a>"')
replace v12 = "" if index(v12, "view")
replace v13 = "" if index(v13, "img")
foreach i of varlist _all{
cap replace `i' = "" if `i' == "--"
}
compress
label var v5 "营业收入(万元)"
ren v5 operating_income
label var v6 "主营业收入占总收入比(%)"
ren v6 oiratio
label var v7 "营业利润(万元)"
ren v7 operating_profit
label var v8 "毛利率(%)"
ren v8 gross_rate
label var v9 "所属行业"
ren v9 industry
label var v12 "地域"
ren v12 area
label var v13 "所属概念"
ren v13 concept
gen year = "`m'"
save "`m'.dta", replace
}
}
/* 合并所有数据 */
foreach n in `year'{
if "`n'" != "2018-06-30"{
cap append using `n'
}
}
/* 再整理一下 */
drop if operating_income == ""
ren area temp
ren concept area
ren temp concept
label var area "地域"
label var concept "所属概念"
!rm *.dta
order year
label data "1989年-2017年所有上市公司的基本收入状况"
save cnstockincome, replace

最后我把这个数据集放入了我的cuse数据库里面,调用命令是:

1
cuse cnstockincome, c w

# Stata

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×