当前位置:   article > 正文

Python爬虫技术教程——抓取A股实时数据!_python爬取a股涨停数据

python爬取a股涨停数据

量化金融技术日新月异,数据就等于是新时代的石油。对于投资者和数据分析师来说,获取准确的股票历史数据是至关重要的。

接下来编程君手把手教会你,如何用Python自带的urllib库的request函数,从东方财富网爬取A股实时数据,并将其保存为本地的csv文件。

先给大家介绍下这本**《用Python写网络爬虫》书籍.pdf资料**,这本书编程君是强烈推荐,适合有一定Python基础,而且对爬虫技术感兴趣的学员,它能帮助你快速上手爬虫限时扫码,免费领取!

扫描下方图片二维码

先领先用,快人一步

(内部学员联系专属辅导员即可)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一、确定爬虫目标

本次爬虫案例我们使用中国散户的聚集地——东方财富网站的A股实时数据作为爬虫目标

在东方财富网站的“行情中心”----“沪深京个股”选项卡下,有当前所有A股的实时数据:

现在我们就来尝试抓取他们。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

二、获取URL

Python自带的urllib库是一个很方便的爬虫武器库,我们需要找到网站链接背后隐藏着的真实数据源,也就是URL,下面介绍一种简单的获取方法:

1、进入网站开发者模式


首先用谷歌浏览器打开东方财富的网站链接:

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

你会看到上面第1步的截图。

然后按一下键盘的F12进入开发者模式,再依次点击Network、JS这两个选项卡,然后点击左下角的第一个链接:

2、提取Response URL


你会看到在Headers选项卡中,有一个Request URL的标题,它对应的内容就是我们需要的URL了!

不过这个URL还略显粗糙,而且包含了过多的无效信息,我们需要进行过滤。

3、URL过滤


这次我们点击Response选项卡,查看URL返回给我们的信息:

可以看到,在返回结果中有许多的f开头的标题。通过与网页数据的对比可以发现:

Response中的f2就是最新价(当天收盘后的收盘价),f15是最高价,f16是最低价,f17是开盘价。

假设我们只获取这几列数据外加股票代码f12和股票名称f14,我们可以把其他的f开头的标题都删除,将原始的Request URL过滤成如下的形式:

注意,此处还删除了Response URL尾部的那一串多余的数字。

今天,编程君为大家推荐一套,很多公司内部都在用的《Python项目开发实战》.pdf资料,进入大厂不再是梦!限时0元,免费领取!

扫描下方图片二维码

先领先用,快人一步

(内部学员联系专属辅导员即可)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

三、编写爬虫代码

接下来只需要将上一步过滤后的URL复制到python代码中,运行爬虫代码即可。

下面给出利用过滤后的URL编写的爬虫代码:



from urllib.request import urlopen  
import pandas as pd  
import json  
pd.set\_option('display.min\_rows', 1000) \# 最少显示数据的行数  
pd.set\_option('display.max\_rows', 5000) \# 最多显示数据的行数  
pd.set\_option('expand\_frame\_repr', False) \# 当列太多时不换行  
pd.set\_option('display.unicode.ambiguous\_as\_wide', True) \# 字符对齐  
pd.set\_option('display.unicode.east\_asian\_width', True) \# 字符对齐  
  
\# 过滤后的URL  
url = 'https://80.push2.eastmoney.com/api/qt/clist/get?cb=jQuery112409723198935668804\_1705759153487&pn=1&pz=10000&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=f12,f14,f15,f16,f17,f2,f6'  
  
\# 爬取数据  
data = urlopen(url=url).read()  
data = data.decode('utf-8')  
  
\# 清洗数据,转化为json格式  
data = data.strip()  
data = data.split(';')\[0\]  
data = data.split('(')\[1\]  
data = data.split(')')\[0\]  
data = json.loads(data)  
  
\# 将json格式转化为dataframe格式  
data = data\['data'\]\['diff'\]  
data = list(data)  
data = pd.DataFrame(data)  
  
\# 整理data,对column进行重命名  
cols = {'f12': 'code', 'f14': '股票名称','f2': '收盘价', 'f15': '最高价', 'f16': '最低价', 'f17': '开盘价', 'f6':'成交额'}  
data.rename(columns=cols, inplace=True)  
data.sort\_values(by=\['code'\], ascending=True, inplace=True)  
data\['code'\] = data\['code'\].astype('str')  
data.reset\_index(drop=True, inplace=True)  
print(data)  
  
\# 保存数据  
data.to\_csv('A股实时数据.csv', encoding='gbk', index=True)


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

上面就是完整的爬虫代码了,最终我们抓取到的当天收盘后A股实时数据显示如下:

大家也可以自己东方财富网站查找自己需要的数据,只需要在11-13行的构造url的代码添加你需要的f开头的标题即可。

通过上述步骤,即使是零基础的编程新手也能够轻松地从东方财富网获取A股实时数据,并将其保存到本地的CSV文件中。这样的技能不仅可以应用于个人投资分析,也可以作为数据分析、机器学习等领域的基础。

你是否想探索Python奥秘

你是否困惑难以系统性****学习Python

你是否在学习过程中遇到问题却无人可请教

……

点击下方安全链接前往获取

CSDN大礼包:《Python入门&进阶学习资源包》免费分享

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/957267

推荐阅读
相关标签