python爬蟲(chóng)爬取股票的北上資金持倉(cāng)數(shù)據(jù)
前言
前面已經(jīng)講述了如何獲取股票的k線(xiàn)數(shù)據(jù),今天我們來(lái)分析一下股票的資金流入情況,股票的上漲和下跌都是由資金推動(dòng)的,這其中的北上資金就是一個(gè)風(fēng)向標(biāo),今天就抓取一下北上資金對(duì)股票的逐天持倉(cāng)變動(dòng)和資金變動(dòng)。
數(shù)據(jù)分析
照例先貼一下數(shù)據(jù)的訪問(wèn)地址:
# 以海爾智家為例貼一下數(shù)據(jù)的頁(yè)面連接地址,再次吐槽一下拼音前綴 https://data.eastmoney.com/hsgtcg/StockHdStatistics/600690.html
下圖就是北上資金逐天的訪問(wèn)數(shù)據(jù)頁(yè)面,我們要抓取的是持股數(shù)量、持股市值、持股百分比和市值變化信息。

通過(guò)瀏覽器后臺(tái)的接口可以看到這樣一個(gè)接口數(shù)據(jù):

這個(gè)接口的參數(shù)為:

# 請(qǐng)求地址數(shù)據(jù),這里的參數(shù)和請(qǐng)求的不太一樣,因?yàn)槠渌膮?shù)我試過(guò)了,可以忽略掉,以下是必要參數(shù) https://datacenter-web.eastmoney.com/api/data/v1/get? # 排序字段和排序的類(lèi)型, -1 為倒序排列 sortColumns=TRADE_DATE &sortTypes=-1 # 后兩個(gè)參數(shù)比較簡(jiǎn)單,就是分頁(yè)參數(shù)而已 &pageSize=50 &pageNumber=1 # 報(bào)告類(lèi)型,固定為北上資金數(shù)據(jù) &reportName=RPT_MUTUAL_HOLDSTOCKNORTH_STA # 返回的數(shù)據(jù)列,默認(rèn)返回所有 &columns=ALL # 獲取數(shù)據(jù)參數(shù)為股票代碼和交易日期 &filter=(SECURITY_CODE="600690")(TRADE_DATE>='2021-10-29')
數(shù)據(jù)抓取
我們已經(jīng)解析了獲取資金的參數(shù),以下就是使用 python 來(lái)獲取數(shù)據(jù),并進(jìn)行展示。我們依舊使用 requets 來(lái)獲取數(shù)據(jù)。
我們需要先組裝請(qǐng)求的參數(shù),這里的 fliter 只傳入了代碼,日期選擇了固定,這個(gè)個(gè)人感覺(jué)是查詢(xún)的 ES ,不然不會(huì)這么傳入?yún)?shù),建議做個(gè)參數(shù)轉(zhuǎn)換吧,這樣直傳不太好。

數(shù)據(jù)查詢(xún)返回的結(jié)果是json 格式,進(jìn)行了解析后我們采用 prettyTable 打印結(jié)果。

由于獲取的數(shù)據(jù)沒(méi)有經(jīng)過(guò)格式化,顯示的位數(shù)比較長(zhǎng),所以對(duì)持股數(shù)和市值之類(lèi)的數(shù)據(jù)進(jìn)行了格式化展示,
代碼如下:
# 如果是億級(jí)的就格式化為億,萬(wàn)的話(huà)格式化為萬(wàn)
def cal_num(num):
if abs(num / 100000000) > 0:
return str(round(num / 100000000, 3)) + "億"
else:
return str(round(num / 10000, 3)) + "萬(wàn)"最終我們得到的結(jié)果如下:

建立模型
我們已經(jīng)獲取到了股票的北上資金的情況,我們建立一個(gè)簡(jiǎn)單的模型篩選一下:
- 1 選取最近一個(gè)月內(nèi)北上資金連續(xù)加倉(cāng)的股票,加倉(cāng)幅度超過(guò)流通股份的1%。
在這個(gè)模型中,我們可以根據(jù)最近一個(gè)月每天的持倉(cāng)百分比建立線(xiàn)性規(guī)劃模型,y = kx + b 來(lái)計(jì)算斜率和截距,但是這個(gè)覺(jué)得有點(diǎn)兒復(fù)雜了,我們可以簡(jiǎn)化一下,就偷個(gè)懶計(jì)算當(dāng)天的持倉(cāng)量與一個(gè)月前的持倉(cāng)比例差值即可,
具體代碼如下:
# rate_list 為持股比例的集合,將 ratio 添加進(jìn)集合中,這里為什么是22呢,
# 一般情況下一個(gè)月有22個(gè)交易日,所以減去22就是一個(gè)月前的持倉(cāng)比例
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總結(jié)
今天我們使用接口獲取了個(gè)股北上資金的持倉(cāng)數(shù)據(jù),并建立了簡(jiǎn)單的分析模型來(lái)選擇股票,這個(gè)技術(shù)實(shí)現(xiàn)比較簡(jiǎn)單,作為學(xué)習(xí)和練習(xí)使用已經(jīng)就足夠了。
到此這篇關(guān)于python爬蟲(chóng)爬取股票的北上資金持倉(cāng)數(shù)據(jù)的文章就介紹到這了,更多相關(guān)python爬取數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python3+django2開(kāi)發(fā)一個(gè)簡(jiǎn)單的人員管理系統(tǒng)過(guò)程詳解
這篇文章主要介紹了python3+django2開(kāi)發(fā)一個(gè)簡(jiǎn)單的人員管理系統(tǒng)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
利用python畫(huà)出AUC曲線(xiàn)的實(shí)例
今天小編就為大家分享一篇利用python畫(huà)出AUC曲線(xiàn)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
在Python中使用CasperJS獲取JS渲染生成的HTML內(nèi)容的教程
這篇文章主要介紹了在Python中使用CasperJS獲取JS渲染生成的HTML內(nèi)容的教程,需要先用JavaScript創(chuàng)建一個(gè)接口文件,需要的朋友可以參考下2015-04-04
淺談openpyxl庫(kù),遇到批量合并單元格的問(wèn)題
這篇文章主要介紹了淺談openpyxl庫(kù),遇到批量合并單元格的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
Python爬蟲(chóng)必備技巧詳細(xì)總結(jié)
本篇文章介紹了我在爬蟲(chóng)過(guò)程中總結(jié)的幾個(gè)必備技巧,都是經(jīng)過(guò)實(shí)驗(yàn)的,通讀本篇對(duì)大家的學(xué)習(xí)或工作具有一定的價(jià)值,需要的朋友可以參考下2021-10-10
Anaconda環(huán)境改名的實(shí)現(xiàn)步驟
本文主要介紹了Anaconda環(huán)境改名的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
python打開(kāi)windows應(yīng)用程序的實(shí)例
今天小編就為大家分享一篇python打開(kāi)windows應(yīng)用程序的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06

