诸君安。日前介绍了如何爬取上市公司的公告信息,今天我们教您爬取中国上海证券交易所与深圳证券交易所的上市公司的股票代码及名称。数据万里浩漫漫,拱手奉上讨你欢。
一、找到网络数据源
我们通过东方财富网的股票代码查询一览表(http://quote.eastmoney.com/stocklist.html)能够找到上海股票与深圳股票的列表名单
二、爬取可行性分析
通过查看网页源代码,找寻爬取信息以及定位字符。我们可以找到网页源代码中有我们需要获取的内容。尖括号之间的黑色字体是我们可以爬取的,例如信达增利(166105)、R003(201000)。定位内容是“<li><a target="_blank" href="http://quote.eastmoney.com/”
三、网络数据导入stata
运用copy命令,将网页数据导入stata13.1软件中。
clear
set more off
copy "http://quote.eastmoney.com/stocklist.html" "d:/temp.txt",replace
infix strL v 1-20000 using "d:/temp.txt"
format v %100s
在第179能够找到我们需要爬取的内容。
四、处理字符,提取相关内容
我们可以运用split命令,以”<”、”>”、”(”、”)”来分离提取我们需要的内容。
五、筛选完善数据
我们可以看到在数据中,还有基金、指数的代码,我们将其剔除。并按照变量v中存在的”sz”、”sh”符号来区分上海证券交易所与深圳证券交易所。
gen v1 = substr(stkcd,1,1)
drop if v1 == "1"
drop if v1 == "5"
gen exchange = ""
replace exchange = "上海" if index(v,"sh")
replace exchange = "深圳" if index(v,"sz")
drop if v1 == "2" & exchange == "上海"
drop v v1
destring stkcd,replace
format stkcd %06.0f
我们能够看到工整的数据呈现在我们眼前。
另附完整程序:
clear
set more off
copy "http://quote.eastmoney.com/stocklist.html" "d:/temp.txt",replace
infix strL v 1-20000 using "d:/temp.txt"
format v %100s
keep if index(v,`"<li><a target="_blank" href="http://quote.eastmoney.com/"')
split v,p(>)
drop v1 v2 v4
split v3,p(<)
drop v3 v32
split v31,p("(")
replace v312 = subinstr(v312,")","",.)
rename v311 stknm
rename v312 stkcd
drop v31
gen v1 = substr(stkcd,1,1)
drop if v1 == "1"
drop if v1 == "5"
gen exchange = ""
replace exchange = "上海" if index(v,"sh")
replace exchange = "深圳" if index(v,"sz")
drop if v1 == "2" & exchange == "上海"
drop v v1
destring stkcd,replace
format stkcd %06.0f
save "d:/股票代码.dta",replace
说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场,点赞打赏,且随心意。今朝点滴,让我们更进一步;他年涌泉,更好的文章给更好的你。
(编辑@梅洁瓷傲)
那些让你具有高手气场的黑科技:
8.爬虫俱乐部周末送大礼——chinagcode提取中文地址经纬度
12.I have a Stata, I have a python
此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。
投稿邮箱:xueyuan19920310@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。
长按二维码关注呀~
微信扫一扫
关注该公众号