用 Python 爬取股票实时数据!轻轻松松实现财富自由!

390 篇文章 2 订阅
276 篇文章 4 订阅

今天我们一起来学习一个 Python 爬虫实战案例,我们的目标网站就是东方财富网,废话不多说,开搞

网站分析

东方财富网地址如下

http://quote.eastmoney.com/center/gridlist.html#hs_a_board

图片

我们通过点击该网站的下一页发现,网页内容有变化,但是网站的 URL 却不变,也就是说这里使用了 Ajax 技术,动态从服务器拉取数据,这种方式的好处是可以在不重新加载整幅网页的情况下更新部分数据,减轻网络负荷,加快页面加载速度。

我们通过 F12 来查看网络请求情况,可以很容易的发现,网页上的数据都是通过如下地址请求的

http://38.push2.eastmoney.com/api/qt/clist/get?cb=jQuery112409036039385296142_1658838397275&pn=3&pz=20&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&wbp2u=|0|0|0|web&fid=f3&fs=m:0+t:6,m:0+t:80,m:1+t:2,m:1+t:23,m:0+t:81+s:2048&fields=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152&_=1658838404848

图片

接下来我们多请求几次,来观察该地址的变化情况,发现其中的pn参数代表这页数,于是,我们可以通过修改&pn=后面的数字来访问不同页面对应的数据

import requests

json_url = "http://48.push2.eastmoney.com/api/qt/clist/get?cb=jQuery112402508937289440778_1658838703304&pn=1&pz=20&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&wbp2u=|0|0|0|web&fid=f3&fs=m:0+t:6,m:0+t:80,m:1+t:2,m:1+t:23,m:0+t:81+s:2048&fields=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152&_=1658838703305"

res = requests.get(json_url)

数据处理

接下来我们观察返回的数据,可以看出数据并不是标准的 json 数据

图片

于是我们先进行 json 化

result = res.text.split("jQuery112402508937289440778_1658838703304")[1].split("(")[1].split(");")[0]result_json = json.loads(result)result_json

Output:

图片

这样数据就整齐多了,所有的股票数据都在data.diff下面,我们只需要编写解析函数即可

返回各参数对应含义:

  • f2:最新价
  • f3:涨跌幅
  • f4:涨跌额
  • f5:成交量(手)
  • f6:成交额
  • f7:振幅
  • f8:换手率
  • f9:市盈率
  • f10:量比
  • f12:股票代码
  • f14:股票名称
  • f15:最高
  • f16:最低
  • f17:今开
  • f18:昨收
  • f22:市净率

先准备一个存储函数

def save_data(data, date):    if not os.path.exists(r'stock_data_%s.csv' % date):        with open("stock_data_%s.csv" % date, "a+", encoding='utf-8') as f:            f.write("股票代码,股票名称,最新价,涨跌幅,涨跌额,成交量(手),成交额,振幅,换手率,市盈率,量比,最高,最低,今开,昨收,市净率\n")            for i in data:                Code = i["f12"]                Name = i["f14"]                Close = i['f2']                ChangePercent = i["f3"]                Change = i['f4']                Volume = i['f5']                Amount = i['f6']                Amplitude = i['f7']                TurnoverRate = i['f8']                PERation = i['f9']                VolumeRate = i['f10']                Hign = i['f15']                Low = i['f16']                Open = i['f17']                PreviousClose = i['f18']                PB = i['f22']                row = '{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}'.format(                    Code,Name,Close,ChangePercent,Change,Volume,Amount,Amplitude,                    TurnoverRate,PERation,VolumeRate,Hign,Low,Open,PreviousClose,PB)                f.write(row)                f.write('\n')    else:    ...

然后再把前面处理好的 json 数据传入

stock_data = result_json['data']['diff']save_data(stock_data, '2022-07-28')

这样我们就得到了第一页的股票数据

图片

最后我们只需要循环抓取所有网页即可

for i in range(1, 5):
    print("抓取网页%s" % str(i))
    url = "http://48.push2.eastmoney.com/api/qt/clist/get?cb=jQuery112402508937289440778_1658838703304&pn=%s&pz=20&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&wbp2u=|0|0|0|web&fid=f3&fs=m:0+t:6,m:0+t:80,m:1+t:2,m:1+t:23,m:0+t:81+s:2048&fields=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152&_=1658838703305" % str(i)
    res = requests.get(json_url)
    result = res.text.split("jQuery112402508937289440778_1658838703304")[1].split("(")[1].split(");")[0]
    result_json = json.loads(result)
    stock_data = result_json['data']['diff']
    save_data(stock_data, '2022-07-28')

这样我们就完成了整个股票数据的抓取,喜欢就点个吧~

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习等习教程。带你从零基础系统性的学好Python!

一、Python学习大纲

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、Python必备开发工具

在这里插入图片描述

三、入门学习视频

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。在这里插入图片描述

五、python副业兼职与全职路线

在这里插入图片描述
上述这份完整版的Python全套学习资料已经上传CSDN官方,如果需要可以微信扫描下方CSDN官方认证二维码 即可领取

👉[[CSDN大礼包:《python安装包&全套学习资料》免费分享]]安全链接,放心点击

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值