python获取股票实时数据,python爬取股票历史数据
今天我们来学习一个Python爬虫的实际案例。我们的目标网站是东方财富网。别废话了,动手吧。
网络分析东方财富网的地址如下
http://quote.eastmoney.com/center/gridlist.html#hs_a_board
通过点击网站的下一页,我们发现网页的内容发生了变化,但网站的网址保持不变。也就是说,这里使用了Ajax技术从服务器动态拉取数据。这种方法的优点是可以在不重新加载整个网页的情况下更新部分数据,减少网络负载,加快页面加载速度。
我们通过F12查看网络请求情况,很容易发现网页上的数据是通过下面的地址请求的。
http://38.push2.eastmoney.com/api/qt/clist/get?CB=jquery 112409036039385296142 _ 1658838397275 pn=3 pz=20 po=1 NP=1 ut=BD 1d 9 DDB 04089700 cf 9 c 27 f 6 f 7426281 fltt=2 invt=2 wbp2u= 0 0 0 0 web FID=F3 fs=m:0t:6,m:0 t:80,m:1
接下来,我们请求了几次来观察地址的变化,发现pn参数代表的是页数。因此,我们可以通过修改pn=后的数字来访问不同页面对应的数据
导入请求
JSON _ URL= http://48 . push 2 . eastmoney . com/API/Qt/clist/get?CB=jquery 112402508937289440778 _ 1658838703304 pn=1 pz=20 po=1 NP=1 ut=BD 1d 9 DDB 04089700 cf 9 c 27 f 6 f 7426281 fltt=2 invt=2 wbp2u= 0 0 0 0 web FID=F3 fs=m:0t:6,m:0 t:80,m:1
Res=requests.get(json_url)数据处理接下来,当我们查看返回的数据时,可以看到这些数据并不是标准的json数据。
所以还是先做json吧。
result=RES . text . split( jquery 112402508937289440778 _ 1658838703304 )[1]。拆分(()[1]。拆分();)[0]
result_json=json.loads(结果)
结果_jsonOutput:
这样数据就整齐多了,所有的股票数据都在data.diff下面我们只需要写解析函数就可以了。
返回每个参数的相应含义:
F2:最新价f3:涨价f4:涨价f5:成交量(手)f6:成交量f7:振幅f8:成交量f9:市盈率f10:成交量比例f12:股票代码f14:股票名称f15:最高f16:最低f17:今日开盘f18:昨日收盘f22:市净率先准备一个存储函数。
def save_data(数据,日期):
如果不是OS . path . exists(r stock _ data _ % s . CSV % date):
with open( stock _ data _ % s . CSV % date, a ,encoding=utf-8 )为f:
F.write(股票代码、股票名称、最新价格、涨跌幅、涨跌幅、成交量(手)、成交量、振幅、换手率、市盈率、成交量比率、最高、最低、当前开盘、昨天收盘、市净率\n )
对于i in数据:
Code=i[f12]
Name=i[f14]
Close=i[f2]
ChangePercent=i[f3]
Change=i[f4]
音量=i[f5]
Amount=i[f6]
振幅=i[f7]
周转率=i[f8]
operation=I[ F9 ]
VolumeRate=i[f10]
Hign=i[f15]
低=i[f16]
Open=i[f17]
PreviousClose=i[f18]
PB=i[f22]
row={},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{} 。格式(
代码、名称、收盘、变动百分比、变动、成交量、金额、振幅、
换手率、操作、成交量、高、低、开盘、前收盘、PB)
f.write(行)
f.write(\n )
否则:
.然后传入之前处理过的json数据。
stock _ data=result _ JSON[ data ][ diff ]
Save _ data (stock _ data, 2022-07-28 )以便我们在第一页获得股票数据。
最后,我们只需要在一个循环中抓取所有的网页。
对于范围(1,5)内的I:
Print(爬网网页%s% str(i))
URL= http://48 . push 2 . eastmoney . com/API/Qt/clist/get?CB=jquery 112402508937289440778 _ 1658838703304 pn=% s pz=20 po=1 NP=1 ut=BD 1d 9 DDB 04089700 cf 9 c 27 f 6 f 7426281 fltt=2 invt=2 wbp2u= 0 0 0 0 web FID=F3 fs=m:0t:6,m:0 t:80,m:1
res=requests.get(json_url)
result=RES . text . split( jquery 112402508937289440778 _ 1658838703304 )[1]。拆分(()[1]。拆分();)[0]
result_json=json.loads(结果)
stock _ data=result _ JSON[ data ][ diff ]
Save _ data (stock _ data, 2022-07-28 )这样我们就完成了整个股票数据抓取,请大家喜欢~
完整代码,后台回复“gupiao”即可获取
稍后,基于以上代码,我们将完成一个捕捉股票数据的GUI程序,然后一起完成一个股票数据的Web展示程序,最后完成一个股票量化平台,敬请期待!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。