fa45d8aa5f
- 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,直连正常
127 lines
4.9 KiB
Python
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)
|