python爬虫爬取股票的北上资金持仓数据
作者:??斜月???? 发布时间:2023-11-18 20:44:56
标签:python,爬取,股票,资金,数据
前言
前面已经讲述了如何获取股票的k线数据,今天我们来分析一下股票的资金流入情况,股票的上涨和下跌都是由资金推动的,这其中的北上资金就是一个风向标,今天就抓取一下北上资金对股票的逐天持仓变动和资金变动。
数据分析
照例先贴一下数据的访问地址:
# 以海尔智家为例贴一下数据的页面连接地址,再次吐槽一下拼音前缀
https://data.eastmoney.com/hsgtcg/StockHdStatistics/600690.html
下图就是北上资金逐天的访问数据页面,我们要抓取的是持股数量、持股市值、持股百分比和市值变化信息。
通过浏览器后台的接口可以看到这样一个接口数据:
这个接口的参数为:
# 请求地址数据,这里的参数和请求的不太一样,因为其它的参数我试过了,可以忽略掉,以下是必要参数
https://datacenter-web.eastmoney.com/api/data/v1/get?
# 排序字段和排序的类型, -1 为倒序排列
sortColumns=TRADE_DATE
&sortTypes=-1
# 后两个参数比较简单,就是分页参数而已
&pageSize=50
&pageNumber=1
# 报告类型,固定为北上资金数据
&reportName=RPT_MUTUAL_HOLDSTOCKNORTH_STA
# 返回的数据列,默认返回所有
&columns=ALL
# 获取数据参数为股票代码和交易日期
&filter=(SECURITY_CODE="600690")(TRADE_DATE>='2021-10-29')
数据抓取
我们已经解析了获取资金的参数,以下就是使用 python
来获取数据,并进行展示。我们依旧使用 requets
来获取数据。
我们需要先组装请求的参数,这里的 fliter 只传入了代码,日期选择了固定,这个个人感觉是查询的 ES ,不然不会这么传入参数,建议做个参数转换吧,这样直传不太好。
数据查询返回的结果是json
格式,进行了解析后我们采用 prettyTable
打印结果。
由于获取的数据没有经过格式化,显示的位数比较长,所以对持股数和市值之类的数据进行了格式化展示,
代码如下:
# 如果是亿级的就格式化为亿,万的话格式化为万
def cal_num(num):
if abs(num / 100000000) > 0:
return str(round(num / 100000000, 3)) + "亿"
else:
return str(round(num / 10000, 3)) + "万"
最终我们得到的结果如下:
建立模型
我们已经获取到了股票的北上资金的情况,我们建立一个简单的模型筛选一下:
1 选取最近一个月内北上资金连续加仓的股票,加仓幅度超过流通股份的1%。
在这个模型中,我们可以根据最近一个月每天的持仓百分比建立线性规划模型,y = kx + b
来计算斜率和截距,但是这个觉得有点儿复杂了,我们可以简化一下,就偷个懒计算当天的持仓量与一个月前的持仓比例差值即可,
具体代码如下:
# rate_list 为持股比例的集合,将 ratio 添加进集合中,这里为什么是22呢,
# 一般情况下一个月有22个交易日,所以减去22就是一个月前的持仓比例
def cal_model(rate_list):
if len(rate_list) >= 22:
cur_node = rate_list[0]
pre_node = rate_list[22]
return cur_node - pre_node
return -100
来源:https://juejin.cn/post/7059030392308760583
0
投稿
猜你喜欢
- 一.Orcal临时表分类1.会话级临时表1).保存一个会话Session的数据。2).当会话退出时,临时表数据自动清空。表结构与元数据还存储
- 本文实例讲述了PHP使用星号隐藏用户名,手机和邮箱的实现方法。分享给大家供大家参考,具体如下:PHP使用星号替代用户名手机和邮箱这个在许多的
- 有时你需临时搭建一个简单的 Web Server,但你又不想去安装 Apache、Nginx 等这类功能较复杂的 HTTP 服务程序时。这时
- 今天同事 明城 在项目中碰到一个 BUG,代码具体如下:<!DOCTYPE html PUBLIC "-//W3C//DTD
- 自学Django已经有一周啦,想把自己自学过程中的每一步都记录下来,给一些零基自学Django的战友们一些参考;本次主要内容为,用一个实例展
- 本文实例总结了php随机取mysql记录方法。分享给大家供大家参考。具体分析如下:在php中要随机取mysql记录我们可以直接使用mysql
- 本文实例讲述了Python单向链表和双向链表原理与用法。分享给大家供大家参考,具体如下:链表是一种数据结构,链表在循环遍历的时候效率不高,但
- MySQL Group By用法我们现在回到函数上。记得我们用 SUM 这个指令来算出所有的 Sales (营业额)吧!如果我们的需求变成是
- ASP与MySQL的连接ASP和MySQL连接目前有两种方法:一种方法是使用MySQLX之类的组件,不过这种连接方法需要支付一定的费用;另外
- selenium 安装与 chromedriver安装我们前文提到,Python脚本中使用了selenium库,而selenium又通过ch
- pycharm设置Console控制台输出自动换行解决方法File --> Settings… --> E
- 在腾讯的微信公众平台开发者文档,网页授权获取用户基本信息这一节中写道”在微信公众号请求用户网页授权之前,开发者需要先到公众平台网站的我的服务
- 方法: 使用urlencode函数urllib.request.urlopen()import urllib.requestimport u
- 微信,一个日活10亿的超级app,不仅在国内社交独领风骚,在国外社交也同样占有一席之地,今天我们要将便是如何用Python来生成一个微信机器
- 本文实例讲述了Python简单实现Base64编码和解码的方法。分享给大家供大家参考,具体如下:Base64编码是一种“防君子不防小人”的编
- ping的原理是发送一个ICMP请求包,然后根据目的地址的应答包来判断是否能够和这个主机进行通信。我们使用python实现,借助于scapy
- 前言刚接触golang不久,有些环境无法融会贯通,现在针对开发过程中遇到的问题做个排查记录问题背景开发环境区分不同网段,同一个程序引入到另一
- 需求如下: 1.模板页右边包含了一个登陆div,想让没登陆的时候这个div显示,登陆后该div隐藏 2.显示一个欢迎用户的div,主要是想通
- 本文将详细介绍一下如何搭建深度学习所需要的实验环境.这个框架分为以下六个模块显卡简单理解这个就是我们常说的GPU,显卡的功能是一个专门做矩阵
- Web开发中,我们经常会遇到分页显示和排序数据记录集的情况,这在服务器端使用服务器端的代码和数据库技术是件很轻松的事情,比如:ASP、PHP