Python爬虫技术教程

Python爬虫技术教程

量化金融技术日新月异,数据就等于是新时代的石油。对于投资者和数据分析师来说,获取准确的股票历史数据是至关重要的。
 
接下来编程君手把手教会你,如何用Python自带的urllib库的request函数,从东方财富网爬取A股实时数据,并将其保存为本地的csv文件。
图片

一、确定爬虫目标

本次爬虫案例我们使用中国散户的聚集地——东方财富网站的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尾部的那一串多余的数字。
 
图片

三、编写爬虫代码

接下来只需要将上一步过滤后的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文件中。这样的技能不仅可以应用于个人投资分析,也可以作为数据分析、机器学习等领域的基础。
 

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/102064
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 26 日
下一篇 2024 年 7 月 26 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注