Files
MoFin/venv/lib/python3.12/site-packages/akshare/stock/stock_repurchase_em.py
T
知微 fa45d8aa5f fix: 小果地址统一node122(兼容LAN+EasyTier)
- health_checklist.json: 192.168.1.122→node122
- ocr_client.py: docstring IP→node122
- docs/market-data-requirements.md: IP→node122
- 所有API调用通过ProxyHandler({})绕过系统代理
  Privoxy对node122:18003返回500,直连正常
2026-06-30 02:56:35 +08:00

127 lines
4.9 KiB
Python

# -*- coding:utf-8 -*-
# !/usr/bin/env python
"""
Date: 2022/8/29 14:20
Desc: 东方财富网-数据中心-股票回购-股票回购数据
https://data.eastmoney.com/gphg/hglist.html
"""
import pandas as pd
import requests
from tqdm import tqdm
def stock_repurchase_em() -> pd.DataFrame:
"""
东方财富网-数据中心-股票回购-股票回购数据
https://data.eastmoney.com/gphg/hglist.html
:return: 股票回购数据
:rtype: pandas.DataFrame
"""
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
params = {
"sortColumns": "UPD,DIM_DATE,DIM_SCODE",
"sortTypes": "-1,-1,-1",
"pageSize": "500",
"pageNumber": "1",
"reportName": "RPTA_WEB_GETHGLIST_NEW",
"columns": "ALL",
"source": "WEB",
}
r = requests.get(url, params=params)
data_json = r.json()
total_page = data_json["result"]["pages"]
big_df = pd.DataFrame()
for page in tqdm(range(1, int(total_page) + 1), leave=False):
params.update({"pageNumber": page})
r = requests.get(url, params=params)
data_json = r.json()
temp_df = pd.DataFrame(data_json["result"]["data"])
big_df = pd.concat([big_df, temp_df], ignore_index=True)
big_df.rename(
{
"DIM_SCODE": "股票代码",
"SECURITYSHORTNAME": "股票简称",
"NEWPRICE": "最新价",
"REPURPRICECAP": "计划回购价格区间",
"REPURNUMLOWER": "计划回购数量区间-下限",
"REPURNUMCAP": "计划回购数量区间-上限",
"ZSZXX": "占公告前一日总股本比例-下限",
"ZSZSX": "占公告前一日总股本比例-上限",
"JEXX": "计划回购金额区间-下限",
"JESX": "计划回购金额区间-上限",
"DIM_TRADEDATE": "回购起始时间",
"REPURPROGRESS": "实施进度",
"REPURPRICELOWER1": "已回购股份价格区间-下限",
"REPURPRICECAP1": "已回购股份价格区间-上限",
"REPURNUM": "已回购股份数量",
"REPURAMOUNT": "已回购金额",
"UPDATEDATE": "最新公告日期",
},
axis="columns",
inplace=True,
)
big_df = big_df[
[
"股票代码",
"股票简称",
"最新价",
"计划回购价格区间",
"计划回购数量区间-下限",
"计划回购数量区间-上限",
"占公告前一日总股本比例-下限",
"占公告前一日总股本比例-上限",
"计划回购金额区间-下限",
"计划回购金额区间-上限",
"回购起始时间",
"实施进度",
"已回购股份价格区间-下限",
"已回购股份价格区间-上限",
"已回购股份数量",
"已回购金额",
"最新公告日期",
]
]
big_df.reset_index(inplace=True)
big_df.rename(
{
"index": "序号",
},
axis="columns",
inplace=True,
)
big_df["序号"] = big_df.index + 1
process_map = {
"001": "董事会预案",
"002": "股东大会通过",
"003": "股东大会否决",
"004": "实施中",
"005": "停止实施",
"006": "完成实施",
}
big_df["实施进度"] = big_df["实施进度"].map(process_map)
big_df["回购起始时间"] = pd.to_datetime(big_df["回购起始时间"]).dt.date
big_df["最新公告日期"] = pd.to_datetime(big_df["最新公告日期"]).dt.date
big_df["最新价"] = pd.to_numeric(big_df["最新价"])
big_df["计划回购价格区间"] = pd.to_numeric(big_df["计划回购价格区间"])
big_df["计划回购数量区间-下限"] = pd.to_numeric(big_df["计划回购数量区间-下限"])
big_df["计划回购数量区间-上限"] = pd.to_numeric(big_df["计划回购数量区间-上限"])
big_df["占公告前一日总股本比例-上限"] = pd.to_numeric(
big_df["占公告前一日总股本比例-上限"]
)
big_df["占公告前一日总股本比例-下限"] = pd.to_numeric(
big_df["占公告前一日总股本比例-下限"]
)
big_df["计划回购金额区间-上限"] = pd.to_numeric(big_df["计划回购金额区间-上限"])
big_df["计划回购金额区间-下限"] = pd.to_numeric(big_df["计划回购金额区间-下限"])
big_df["已回购股份价格区间-下限"] = pd.to_numeric(big_df["已回购股份价格区间-下限"])
big_df["已回购股份价格区间-上限"] = pd.to_numeric(big_df["已回购股份价格区间-上限"])
big_df["已回购股份数量"] = pd.to_numeric(big_df["已回购股份数量"])
big_df["已回购金额"] = pd.to_numeric(big_df["已回购金额"])
return big_df
if __name__ == "__main__":
stock_repurchase_em_df = stock_repurchase_em()
print(stock_repurchase_em_df)