我还是很喜欢你,像爬虫爬取数据,绵绵万里

2016-11-01 李子健 爬虫俱乐部 爬虫俱乐部

诸君安。日前介绍了如何爬取上市公司的公告信息,今天我们教您爬取中国上海证券交易所与深圳证券交易所的上市公司的股票代码及名称。数据万里浩漫漫,拱手奉上讨你欢。


一、找到网络数据源

我们通过东方财富网的股票代码查询一览表(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



说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场,点赞打赏,且随心意。今朝点滴,让我们更进一步;他年涌泉,更好的文章给更好的你。


(编辑@梅洁瓷傲)




那些让你具有高手气场的黑科技:

1.天路——chinafin与cntrade命令

2.分时数据,从此唾手可得

3.有了这个命令,以后还怕重复?

4.esttab功能挖掘:“Yes”or“No”

5.用“套路”处理数据

6.厉害了,我stata哥

7.图之多,stata放得下

8.爬虫俱乐部周末送大礼——chinagcode提取中文地址经纬度

9.据说这样数据替换比较快,你试一下,然后……

10.众里寻她千百度,synth命令来帮助!

11.登登等登 凳登等灯——均值t检验ttable2命令

12.I have a Stata, I have a python




此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:xueyuan19920310@163.com

投稿要求:

1)必须原创,禁止抄袭;

2)必须准确,详细,有例子,有截图;

注意事项:

1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。

3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。


长按二维码关注呀~


微信扫一扫
关注该公众号