赞
踩
量化金融技术日新月异,数据就等于是新时代的石油。对于投资者和数据分析师来说,获取准确的股票历史数据是至关重要的。
接下来编程君手把手教会你,如何用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)
上面就是完整的爬虫代码了,最终我们抓取到的当天收盘后A股实时数据显示如下:
大家也可以自己东方财富网站查找自己需要的数据,只需要在11-13行的构造url的代码添加你需要的f开头的标题即可。
通过上述步骤,即使是零基础的编程新手也能够轻松地从东方财富网获取A股实时数据,并将其保存到本地的CSV文件中。这样的技能不仅可以应用于个人投资分析,也可以作为数据分析、机器学习等领域的基础。
你是否想探索Python奥秘?
你是否困惑难以系统性****学习Python?
你是否在学习过程中遇到问题却无人可请教?
……
点击下方安全链接前往获取
CSDN大礼包:《Python入门&进阶学习资源包》免费分享
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。