Python股票数据分析:获取数据(一)(新浪财经股票)基于python的股票数据分析,
在分析数据之前首先要得到数据。股市数据可以从网易、 搜狐、新浪以及其他的网站抓取,也可以通过一些第三方的API接口来获取。在详细比力了以上各种数据源信息后,我发现新浪财经的数据是比力全面的,不得不说某浪在这方面还是下了不少功夫的。于是我们用来自新浪财经的数据。
一个上市公司的未来发展到底好欠好我们看的不是他一时的盈利能力,而是看他的连续性,一个上市公司的股票能不能连续走牛或者说这只股票的涨幅空间还要多大,一般都是由公司市值空间决定的,而决定市值巨细的判定就是公司的发展前景好欠好以及能不能连续发展。我们就需要分析一下这家公司的基本面如何。分析基本面一般从基本常用的财政指标开始,主要分析该上市公司主营业务、偿债能力、现金流、以及盈利能力等。而要分析这些数据,我们就必须获取财政指标、资产负债表、利润表以及现金流量表。
一、获取股票id
新浪财经的以上4个表中,每一个的url均和股票的id有关。
http://vip.stock.finance.sina.com.cn/corp/go.php/vFD_ProfitStatement/stockid/600516/ctrl/part/displaytype/4.phtml 方大炭素的利润表
http://vip.stock.finance.sina.com.cn/corp/go.php/vFD_ProfitStatement/stockid/600004/ctrl/part/displaytype/4.phtml 白云机场的利润表
所以我们必须获取一个有关id的列表,在这里我们用沪深A作为分类。
沪深A的url为:
http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeData?page=1&num=40&sort=symbol&asc=1&node=hs_a&symbol=&_s_r_a=init
返回数据为一个非尺度格式的Json字符串。之所以说非尺度,因为所有数据的tag均无双引号"",直接根据Json来处置惩罚,会出现解析异常,所以必须进行预处置惩罚:
因为这个数据比力简单,所以我接纳了以下方法:
jsonstr = jsonstr.replace("symbol:", "\"symbol\":")
直接用字符串进行替换处置惩罚。替换完成后,就可以根据Json格式来解析了。
解析完成后,我们就可以获取到股票的id列表。
二、获取利润表
host = "http://vip.stock.finance.sina.com.cn"
url = "/corp/go.php/vFD_ProfitStatement/stockid/" + symbol + "/ctrl/part/displaytype/4.phtml"
res = getHttpResponse(host, url, headers)
html = res.read().decode("GB18030", "ignore")
虽然在html中,指定的编码格式为gb2312,<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />,在实际过程中,会出现无法识别的字符,最好用GB18030,因为GB18030 > GBK > GB2312。
"ignore"也最好带上,某浪在一些页面上会出现自己都无法识别的字符。
tree = etree.HTML(html)
profitstatement = tree.xpath(//table[@id="ProfitStatementNewTable0"])
if(len(profitstatement ) == 0):
return
title = profitstatement [0].xpath(./thead/tr/th/text()