手把手教你爬取任意日期全部股票分时数据~_Python进阶者的博客-程序员秘密

技术标签: python  数据分析  机器学习  人工智能  编程语言  

点击上方“ Python爬虫与数据挖掘 ”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

独怜幽草涧边生,上有黄鹂深树鸣。

大家好,我是志斌~

在之前志斌写过一篇东方财富网的股票数据爬取文章,详看,受到很多读者的喜欢,有的读者问志斌能不能在写一个获取股票分时数据的文章,今天志斌给安排上!

01

数据采集

1be4f47ae4c02a1efd69e4ca4bd638f4.png

首先进入某只股票的详情页,然后在右侧找到分时成交并点击查看更多分时成交,然后进入分时数据的详情页面。

cdc2f92fe8704ed71bf8d4a8ffdab6bd.png

然后我们按F12打开开发者模式,对分时数据的详情页面进行观察后,发现数据存储在一个get开头的页面中,并以JQuery的方式存储。

523b0f9acdfc8a7775b903fa32e9d96a.png

我们已经发现单页数据存储的方式了,现在我们来看一下各页URL之间的联系,如图:

4fb5314246d2ed0c63cce2023b9756ec.png

从图中,我们可以发现,pageindex的值就是页数-1,所以,我们在爬取的时候只需要让pageindex的值进行循环即可。

经过上面的分析,我们已经找全了爬虫的几个关键参数,现在可以开始构建程序,开始爬取了,核心代码如下:

import requests
import csv
with open('688103.csv','a',newline='') as f:
   writer = csv.writer(f)
   writer.writerow(['时间','成交价','手数'])
for page in range(27):
   params = (
       ('pagesize', '144'),
       ('ut', '7eea3edcaed734bea9cbfc24409ed989'),
       ('dpt', 'wzfscj'),
       ('cb', 'jQuery1124029337350072397084_1631343037828'),
       ('pageindex', str(page)),
       ('id', '6009051'),
       ('sort', '1'),
       ('ft', '1'),
       ('code', '688103'),
       ('market', '1'),
       ('_', '1631343037827'),
   )
   response = requests.get('http://push2ex.eastmoney.com/getStockFenShi', headers=headers, params=params, cookies=cookies, verify=False)
   for i in eval(response.text[43:-2])['data']['data']:
       with open('688103.csv','a',newline='') as f:
           writer = csv.writer(f)
           if len(str(i['t']))<6:
               shi = str(i['t'])[0]
               fen = str(i['t'])[1:3]
               miao = str(i['t'])[3:]
           else:
               shi = str(i['t'])[0:2]
               fen = str(i['t'])[2:4]
               miao = str(i['t'])[4:]
           if i['bs'] == 4:
               a = '--'
           elif i['bs'] == 2:
               a = '买入'
           elif i['bs'] == 1:
               a = '卖出'

02

批量爬取

上面的程序是对单个股票数据的分时数据进行爬取的,我们如果想对其他股票进行爬取,还要在一个一个进行构造那也太麻烦了。

所以我们需要对程序进行完善,让它能够爬取全部的股票分时数据。

我们通过对不同股票的页面数据进行观察发现每个股票的code是它们自己的股票代码,并且id是code+‘2’.

c4fbe957aac75822084f5be9f494b933.png

好了,经过上面的分析,我们也只知道不同股票之间的联系了,那我们接下来就可以开始完善程序了,核心代码如下:

gupiao_code = ['301073']
for code in gupiao_code:
    with open(f'{code}.csv', 'a', newline='') as f:
        writer = csv.writer(f)
        writer.writerow(['时间', '成交价', '手数', '买入/卖出'])

    try:
        for page in range(40):

            params = (
                ('pagesize', '144'),
                ('ut', '7eea3edcaed734bea9cbfc24409ed989'),
                ('dpt', 'wzfscj'),
                ('cb', 'jQuery112408490604705504154_1633509557420'),
                ('pageindex', str(page)),
                ('id', '3010732'),
                ('sort', '1'),
                ('ft', '1'),
                ('code', code),
                ('market', '0'),
                ('_', '1633509557478'),
            )

03

任意时间

有的读者又说了,能不能把之前的分时数据也给爬取下来呢,那必须能啊!

志斌对所有的参数进行观察后发现,在cookie里面有关于日期的参数,如下图:

ae1a4ee37273d4b47738565d404ca1e7.png

这就是说当我们改动cookie里面的时间参数就可以爬取任意时间的股票分时数据了,核心代码如下:

riqi = input('输入格式如下:xxxx-')
cookies = {
   'st_sp': f'{riqi}%2014%3A57%3A10',
}

因为涉及到cookie,所以就只展示关键部分的数据写法,其他的大家详见代码。

04

小结

1. 本文详细的介绍了如何从东方财富网上批量获取股票分时数据,请读者仔细阅读,并加以操作。

2. 东方财富网没有反爬,但是本着友好的原则,用户在爬取时最好使用间隔爬取。

3. 本文仅供参考学习,不做商用。

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

13d8be460cbcbd05d37aa1f6df045d29.png

------------------- End -------------------

往期精彩文章推荐:

3c75af6e6d53adc1be9ae502fd921930.png

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

/今日留言主题/

随便说一两句吧~

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/pdcfighting/article/details/121133825

智能推荐

Cache---高速缓存存储器_cache模式的最快速率可以达到多少mbit/e_. . . . .的博客-程序员秘密

Cache的功能:提高CPU数据输入输出的速率,突破冯诺依曼瓶颈,即CPU与存储系统间数据传送带宽限制。在计算机的存储系统体系中,Cache是访问速度最快的层次。使用Cache改善系统性能的依据是程序的局部性原理。例如:如果以h代表Cache的访问命中率,t1表示Cache的周期时间,t2表示主存器周期时间,以读操作为例,使用“Cache+主存储器”的系统平均周期为t3,则:t3 ...

老板让你用Excel制作仪表盘?你这样做,几分钟就能搞定了_阳光终会撒在每个角落的博客-程序员秘密

不知道大家在工作中,有没有遇到特别冷酷无情的老板,每天都想尽各种办法来刁难你。比如说,甩给你一些数据,让你用Excel制作出一个仪表盘来。小编有一个朋友,他就曾被这样刁难过。不过呢,最后在小编的帮助下,他完美解决了这个问题,还获得老板的赏识呢。老板让你用Excel制作仪表盘?你这样做,几分钟就能搞定了所以啊,今天小编就打算给大家分享一下用Excel制作仪表盘的方法,有需要的朋友,可以学起来,暂时不需要的朋友,也可以留作备用哦~下面我们先来看一下最终的效果图吧:老板让你用Excel制作仪表盘?你这样做

ciscn_2019_final_2_z1r0.的博客-程序员秘密

ciscn_2019_final_2查看保护在delete这里的话有两个uaf。还开了沙盒,说实话一开始真没什么思路,看了一下ha1vk的wp才知道漏了一init里面的一个非常重要的东西这里读flag。flag的文件描述符被设置成了666泄露数据的话也不是很多。几个字节攻击思路:因为是2.27下,double free泄露出堆的低位地址,利用double free将size改为0x91,这个时候可以tcache attack泄露出main_arena的低位。libc的这些低位都有了之后接

win11如何开启GUEST账户 windows11开启GUEST账户的设置方法_win11如何启用guest_小白一键重装系统的博客-程序员秘密

我们平时使用的基本都是admin管理员账户,但其实在系统中还有一个Guest账号,很多小伙伴都还不清楚如何开启,那么要遇到这种情况应该怎么办呢?下面就和小编一起来看看有什么解决方法吧。更多windows11系统教程,可以参考小白一键重装网。Win11开启Guest账号的方法方法一1、首先确保你没有安装其他模拟器软件。2、接着展开左侧“本地用户和组”,进入“用户”选项。3、再双击右边的“guest”设置。4、最后取消“账户已禁用”,再点击“确定”就可以了。方法二

windows关闭svnserver_Window系统下使用VisualSVNServer搭建SVN服务器_原来是安稳呐的博客-程序员秘密

下面介绍在Windows系统下如何搭建VisualSVN Server的:1.下载VisualSVN Server2.双击Visual-SVN-Server-*.*.*.exe安装文件。3.点击"Next"进入下一个界面如下图所示:Location为VisualSVN Server的安装目录,点击后面的Browse按钮可以更换安装目录,安装的内容包括Subversion和Apache的程序。Rep...

堆——数据结构_堆可以被看成是一棵树_爱马拉松的东宫高兴的博客-程序员秘密

堆的基本概念:严格来讲,堆有不同的种类,但是我们在算法学习中,主要用的还是二叉堆,而二叉堆有最大堆和最小堆之分。最大(最小)堆是一棵每一个节点的键值都不小于(大于)其孩子(如果存在)的键值的树。大顶堆是一棵完全二叉树,同时也是一棵最大树。小顶堆是一棵完全完全二叉树,同时也是一棵最小树。需要注意的问题是:堆中的任一子树也还是堆,即大堆的子树也都是大堆,小堆同样。堆的基本特性:(1).堆...

随便推点

五种I/O模型详解_Sharp_UP的博客-程序员秘密

1. 概念理解      在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步:      所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。 例如普通B/S模式(同步):提交请求->等待服务器处理->处理

99.9%的Java程序员都说不清的问题:JVM中的对象内存布局?_weixin_34121282的博客-程序员秘密

作者:李瑞杰目前就职于阿里巴巴,资深 JVM 研究人员在 Java 程序中,我们拥有多种新建对象的方式。除了最为常见的 new 语句之外,我们还可以通过反射机制、Object.clone 方法、反序列化以及 Unsafe.allocateInstance 方法来新建对象。其中,Object.clone 方法和反序列化通过直接复制已有的数据,来初始化新建对象的实例字段。Unsafe.allocate...

蓝桥杯C语言培训5 博弈问题的思路 例2 高斯日记(培训4补充)_还需要学习的萌新的博客-程序员秘密

题目描述:大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210。后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年...

内核函数__get_free_page和 free_pages___get_free_pages_yldfree的博客-程序员秘密

unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order)功能:以gfp_mask的方式分配2^order个物理页面gfP_mask:分配的方式,指出如何分配在哪分配如GFP_KERNELorder:分配2^order个页面返回值:返回分配的第一个页的逻辑地址头文件: #include &amp;lt;gfp/linux.h...

hdu1372 Knight Moves_zhang360896270的博客-程序员秘密

<br />广搜水题,此题可以采用双向广搜进行优化,即从起点和终点两个位置同时开始进行bfs,如果相遇即可输出步数,这样可以节省一半时间,优化后程序跑了15ms,比起0ms秒过的牛人还是差老大一截。。。。ORZ,无限膜拜

html 亮暗调节条,前端|滑动条调节页面亮度_陶晓博的博客-程序员秘密

window.onload = function(){var control_bar = document.getElementsByClassName("control_bar")[0];var control_bar_mask = document.getElementById("control_bar_mask");var control_bar_cursor = document...