用 Python 爬取股票实时数据
今天我们一起来学习一个 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')
这样我们就完成了整个股票数据的抓取,喜欢就点个赞吧~
后面我们还会基于以上代码,完成一个股票数据抓取 GUI 程序,再之后再一起完成一个股票数据 Web 展示程序,最终完成一个股票量化平台,敬请期待哦!
本文由 mdnice 多平台发布
用 Python 爬取股票实时数据相关推荐
- 实战干货!用 Python 爬取股票实时数据!
今天我们一起来学习一个 Python 爬虫实战案例,我们的目标网站就是东方财富网,废话不多说,开搞 网站分析 东方财富网地址如下 http://quote.eastmoney.com/center/g ...
- python爬取股票大单历史记录_python爬取股票实时数据,python爬虫与股票分析
内容导航: Q1:怎么学python爬取财经信息 本程序使用Python 2.7.6编写,扩展了Python自带的HTMLParser,自动根据预设的股票代码列表,从Yahoo Finance抓取列表 ...
- python爬取股票实时价格_【美股量化00篇】Python获取新浪接口美股实时数据
1.本篇以BABA(阿里巴巴)为例,在浏览器地址栏输入以下url,即可获取个股数据: http://hq.sinajs.cn/list=gb_baba (股票代码必须为小写字母,结果如下图所示) 阿里 ...
- python爬取网页实时数据_使用 Python 爬取网页数据
1. 使用 urllib.request 获取网页 urllib 是 Python 內建的 HTTP 库, 使用 urllib 可以只需要很简单的步骤就能高效采集数据; 配合 Beautiful 等 ...
- 利用python爬取股票实时信息
注:本次实验使用python3.7以及pycharm完成 网络爬虫 所为爬虫就是建立一个与某个网站的连接 通过该连接获取输入流,读取网站内容.实质上就是一个socket的输入输出操作,根据http状态 ...
- python爬取股票数据,以上证指数为例,可以爬取任何股票,保存为temp.csv文件
python爬取股票数据,以上证指数为例,可以爬取任何股票,保存为temp.csv文件 import requests import pandas as pd# market: 0:沪市 1:深市 # ...
- Python爬虫教程-Python爬取股票数据过程详解
这篇文章主要介绍了基于Python爬取股票数据过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 基本环境配置 python 3.6 pycha ...
- 通达信接口怎么样抓取股票实时数据?
通达信接口怎么样抓取股票实时数据?股票爬取接口在股票交易中常常使用到的一些辅助工具,股票爬取接口主要是利用l1和l2接口来执行获取股票实时行情数据的原理,将自己需要查询的需求就可以在接口软件上搜索就可 ...
- 如何用python爬取数据_如何使用python爬取知乎数据并做简单分析
原标题:如何使用python爬取知乎数据并做简单分析 一.使用的技术栈: 爬虫:python27 +requests+json+bs4+time 分析工具: ELK套件 开发工具:pycharm 数据 ...
最新文章
- java中把字符串转换为日期,java字符串转日期方法,java如何将字符串转为日期?...
- Java Bean与Map之间相互转化的实现
- optee3.14.0 qemu_v8的环境搭建篇
- 招聘webgis开发经理和程序员
- Endnote如何一键更改参考文献?
- boost::regex模块用于测试特定于语言环境的表达式的帮助程序类
- 主存地址位数怎么算_两位数乘一位数也能口算?对!你没看错,不是特殊情况也行...
- android 系统状态栏的隐藏和显示
- Spring框架第一天知识总结
- PHP环境搭建:Windows 7下安装配置PHP+Apache+Mysql环境教程
- 5种设置ASP.NET Core应用程序URL的方法
- Mysql事务,并发问题,锁机制-- 幻读、不可重复读--专题
- 以未来式计算机为题目的作文,一般将来时:my travel plan为题作文
- oracle 体系结构初步认识(一)
- 成功解决./nvidia-installer: invalid option: “‐‐no‐opengl‐files“ ERROR: Invalid commandline, please run `
- mmap文件做成html,mmap()映射到文件的一些总结
- 【KDD2021】Are we really making much progress? Revisiting, benchmarking, and refining HGNNs
- python字典的存储结构_Python 字典的存储结构
- bilibili视频批量下载
- 【TensorFlow】计算图graph的使用学习笔记(二)