利用Python 爬取股票实时数据详情

 更新时间:2022年08月10日 11:17:55   作者:zhouluobo  
这篇文章主要介绍了利用Python 爬取股票实时数据详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下

东方财富网地址如下:

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

alt

我们通过点击该网站的下一页发现,网页内容有变化,但是网站的 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

alt

接下来我们多请求几次,来观察该地址的变化情况,发现其中的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 数据

alt

于是我们先进行 json 化:

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

Output:

alt

返回各参数对应含义:

  • 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')

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

alt

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

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 使用socket传输图片视频等文件的实现方式

    python 使用socket传输图片视频等文件的实现方式

    这篇文章主要介绍了python 使用socket传输图片视频等文件的实现方式,本文给出了实例代码,需要的朋友可以参考下
    2019-08-08
  • Python list去重且保持原顺序不变的方法

    Python list去重且保持原顺序不变的方法

    这篇文章主要介绍了Python list去重且保持原顺序不变的方法,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-04-04
  • 详解python中的Turtle函数库

    详解python中的Turtle函数库

    这篇文章主要介绍了python中的Turtle函数库,包括函数库的引用方式,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-11-11
  • 使用python 获取进程pid号的方法

    使用python 获取进程pid号的方法

    这篇文章主要介绍了使用python 获取进程pid号的方法,需要的朋友可以参考下
    2014-03-03
  • scrapy框架中用ssh连接远程服务器的实现

    scrapy框架中用ssh连接远程服务器的实现

    本文主要介绍了scrapy 框架中用ssh连接远程服务器的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • python爬虫框架Scrapy基本应用学习教程

    python爬虫框架Scrapy基本应用学习教程

    这篇文章主要为大家介绍了python爬虫框架Scrapy的基本应用学习教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-11-11
  • OpenManus安装教程

    OpenManus安装教程

    OpenManus是一个开源AIAgent平台,通过复刻Manus项目实现,OpenManus不仅复刻了Manus的核心功能,还具备模块化Agent系统,开发者可以根据需求自由组合不同的功能模块,创造出符合自己需求的AI助手‌,本文介绍OpenManus安装教程,感兴趣的朋友一起看看吧
    2025-03-03
  • python win32 简单操作方法

    python win32 简单操作方法

    下面小编就为大家带来一篇python win32 简单操作方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • 浅析python中SQLAlchemy排序的一个坑

    浅析python中SQLAlchemy排序的一个坑

    这篇文章主要介绍了关于python中SQLAlchemy排序的一个坑,文中给出了详细的示例代码,需要的朋友可以参考借鉴,感兴趣的朋友们下面来一起学习学习吧。
    2017-02-02
  • Python Flask框架实现简单加法工具过程解析

    Python Flask框架实现简单加法工具过程解析

    这篇文章主要介绍了Python Flask框架实现简单加法工具过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06

最新评论