akshare 1.12.99__py3-none-any.whl → 1.15.73__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of akshare might be problematic. Click here for more details.
- akshare/__init__.py +442 -138
- akshare/air/air_hebei.py +79 -53
- akshare/air/air_zhenqi.py +29 -43
- akshare/air/sunrise_tad.py +32 -17
- akshare/bank/bank_cbirc_2020.py +12 -9
- akshare/bond/bond_cb_ths.py +17 -9
- akshare/bond/bond_china.py +38 -39
- akshare/bond/bond_china_money.py +75 -48
- akshare/bond/bond_info_cm.py +28 -8
- akshare/bond/bond_issue_cninfo.py +73 -30
- akshare/bond/bond_zh_cov.py +1 -1
- akshare/bond/bond_zh_sina.py +57 -51
- akshare/cal/__init__.py +0 -0
- akshare/cal/rv.py +170 -0
- akshare/cost/cost_living.py +7 -5
- akshare/currency/currency_safe.py +7 -6
- akshare/data/cninfo.js +15 -0
- akshare/datasets.py +10 -21
- akshare/economic/macro_bank.py +95 -653
- akshare/economic/macro_china.py +772 -1024
- akshare/economic/macro_china_hk.py +65 -243
- akshare/economic/macro_china_nbs.py +24 -7
- akshare/economic/macro_constitute.py +17 -12
- akshare/economic/macro_euro.py +13 -6
- akshare/economic/macro_finance_ths.py +133 -0
- akshare/economic/macro_info_ws.py +100 -0
- akshare/economic/macro_japan.py +5 -4
- akshare/economic/macro_other.py +12 -9
- akshare/economic/macro_usa.py +376 -1940
- akshare/economic/marco_cnbs.py +11 -6
- akshare/energy/energy_carbon.py +94 -125
- akshare/event/migration.py +3 -2
- akshare/exceptions.py +43 -0
- akshare/file_fold/calendar.json +245 -2
- akshare/fortune/fortune_500.py +15 -48
- akshare/fund/fund_amac.py +157 -75
- akshare/fund/fund_em.py +191 -184
- akshare/fund/fund_etf_em.py +16 -15
- akshare/fund/fund_etf_sina.py +71 -23
- akshare/fund/fund_etf_ths.py +93 -0
- akshare/fund/fund_fee_em.py +98 -0
- akshare/fund/fund_portfolio_em.py +60 -50
- akshare/fund/fund_rank_em.py +91 -82
- akshare/fund/fund_report_cninfo.py +63 -48
- akshare/fund/fund_scale_sina.py +20 -10
- akshare/fund/fund_xq.py +139 -109
- akshare/futures/cons.py +8 -31
- akshare/futures/cot.py +185 -137
- akshare/futures/futures_basis.py +97 -32
- akshare/futures/futures_comm_ctp.py +37 -0
- akshare/futures/futures_comm_qihuo.py +74 -45
- akshare/futures/futures_daily_bar.py +121 -184
- akshare/futures/futures_hf_em.py +66 -61
- akshare/futures/futures_hq_sina.py +79 -61
- akshare/futures/futures_index_ccidx.py +6 -3
- akshare/futures/futures_inventory_99.py +61 -272
- akshare/futures/futures_news_shmet.py +4 -2
- akshare/futures/futures_roll_yield.py +12 -25
- akshare/futures/futures_spot_stock_em.py +19 -13
- akshare/futures/futures_stock_js.py +14 -12
- akshare/futures/futures_to_spot.py +38 -33
- akshare/futures/futures_warehouse_receipt.py +75 -71
- akshare/futures/futures_zh_sina.py +5 -5
- akshare/futures/symbol_var.py +18 -13
- akshare/futures_derivative/futures_contract_info_czce.py +60 -52
- akshare/futures_derivative/futures_contract_info_ine.py +43 -34
- akshare/futures_derivative/futures_contract_info_shfe.py +46 -35
- akshare/futures_derivative/futures_cot_sina.py +26 -19
- akshare/futures_derivative/futures_spot_sys.py +21 -8
- akshare/fx/currency_investing.py +19 -285
- akshare/index/index_cflp.py +29 -26
- akshare/index/index_cni.py +86 -88
- akshare/index/index_cons.py +26 -10
- akshare/index/index_cx.py +248 -47
- akshare/index/index_drewry.py +17 -16
- akshare/index/index_option_qvix.py +329 -0
- akshare/index/index_research_fund_sw.py +134 -0
- akshare/index/{index_sw_research.py → index_research_sw.py} +122 -58
- akshare/index/index_spot.py +9 -5
- akshare/index/index_stock_hk.py +35 -16
- akshare/index/index_stock_us_sina.py +1 -1
- akshare/index/index_stock_zh.py +180 -89
- akshare/index/index_stock_zh_csindex.py +15 -369
- akshare/index/index_sw.py +62 -34
- akshare/index/index_yw.py +46 -23
- akshare/index/index_zh_a_scope.py +48 -0
- akshare/index/index_zh_em.py +6 -4
- akshare/interest_rate/interbank_rate_em.py +14 -9
- akshare/movie/artist_yien.py +32 -5
- akshare/movie/movie_yien.py +92 -18
- akshare/movie/video_yien.py +28 -5
- akshare/news/news_baidu.py +78 -44
- akshare/news/news_cctv.py +38 -38
- akshare/news/news_stock.py +6 -3
- akshare/nlp/nlp_interface.py +7 -8
- akshare/option/cons.py +11 -11
- akshare/option/option_comm_qihuo.py +86 -0
- akshare/option/option_commodity.py +178 -51
- akshare/option/option_daily_stats_sse_szse.py +146 -0
- akshare/option/option_em.py +147 -138
- akshare/option/option_finance_sina.py +160 -137
- akshare/option/option_lhb_em.py +62 -56
- akshare/option/option_risk_indicator_sse.py +17 -14
- akshare/other/other_car_cpca.py +934 -0
- akshare/other/{other_car.py → other_car_gasgoo.py} +15 -54
- akshare/qdii/__init__.py +0 -0
- akshare/qdii/qdii_jsl.py +233 -0
- akshare/request.py +117 -0
- akshare/spot/spot_hog_soozhu.py +232 -0
- akshare/spot/spot_price_qh.py +121 -0
- akshare/spot/spot_sge.py +63 -10
- akshare/stock/stock_allotment_cninfo.py +10 -9
- akshare/stock/stock_board_concept_em.py +23 -14
- akshare/stock/stock_board_industry_em.py +40 -34
- akshare/stock/stock_cg_equity_mortgage.py +15 -11
- akshare/stock/stock_cg_guarantee.py +41 -51
- akshare/stock/stock_cg_lawsuit.py +36 -35
- akshare/stock/stock_dividend_cninfo.py +12 -6
- akshare/stock/stock_dzjy_em.py +347 -260
- akshare/stock/stock_fund_em.py +332 -84
- akshare/stock/stock_hk_famous.py +108 -0
- akshare/stock/stock_hk_sina.py +8 -7
- akshare/stock/stock_hold_control_cninfo.py +100 -15
- akshare/stock/stock_hold_control_em.py +4 -3
- akshare/stock/stock_hold_num_cninfo.py +18 -12
- akshare/stock/stock_hot_rank_em.py +2 -1
- akshare/stock/stock_hot_search_baidu.py +5 -2
- akshare/stock/stock_industry_cninfo.py +24 -18
- akshare/stock/stock_industry_pe_cninfo.py +45 -31
- akshare/stock/stock_industry_sw.py +9 -10
- akshare/stock/stock_info.py +25 -15
- akshare/stock/stock_info_em.py +5 -2
- akshare/stock/stock_intraday_em.py +5 -2
- akshare/stock/stock_intraday_sina.py +22 -18
- akshare/stock/stock_ipo_summary_cninfo.py +25 -10
- akshare/stock/stock_new_cninfo.py +32 -19
- akshare/stock/stock_news_cx.py +39 -0
- akshare/stock/stock_profile_cninfo.py +9 -8
- akshare/stock/stock_rank_forecast.py +8 -6
- akshare/stock/stock_share_changes_cninfo.py +18 -14
- akshare/stock/stock_share_hold.py +24 -19
- akshare/stock/stock_summary.py +54 -26
- akshare/stock/stock_us_famous.py +15 -6
- akshare/stock/stock_us_pink.py +7 -5
- akshare/stock/stock_us_sina.py +15 -12
- akshare/stock/stock_xq.py +38 -12
- akshare/stock/stock_zh_a_sina.py +53 -78
- akshare/stock/stock_zh_b_sina.py +32 -55
- akshare/stock/stock_zh_kcb_report.py +11 -9
- akshare/stock/stock_zh_kcb_sina.py +67 -64
- akshare/stock_feature/stock_a_below_net_asset_statistics.py +5 -2
- akshare/stock_feature/stock_a_high_low.py +5 -2
- akshare/stock_feature/stock_a_indicator.py +12 -9
- akshare/stock_feature/stock_a_pe_and_pb.py +27 -6
- akshare/stock_feature/stock_account_em.py +58 -40
- akshare/stock_feature/stock_analyst_em.py +36 -27
- akshare/stock_feature/stock_board_industry_ths.py +136 -400
- akshare/stock_feature/stock_comment_em.py +118 -85
- akshare/stock_feature/stock_concept_futu.py +183 -0
- akshare/stock_feature/stock_cyq_em.py +58 -54
- akshare/stock_feature/stock_disclosure_cninfo.py +147 -102
- akshare/stock_feature/stock_esg_sina.py +216 -11
- akshare/stock_feature/stock_fhps_em.py +60 -25
- akshare/stock_feature/stock_fhps_ths.py +25 -6
- akshare/stock_feature/stock_fund_flow.py +38 -25
- akshare/stock_feature/stock_gdfx_em.py +180 -95
- akshare/stock_feature/stock_gdhs.py +73 -49
- akshare/stock_feature/stock_gpzy_em.py +78 -46
- akshare/stock_feature/stock_hist_em.py +55 -23
- akshare/stock_feature/stock_hk_valuation_baidu.py +20 -8
- akshare/stock_feature/stock_hsgt_em.py +184 -452
- akshare/stock_feature/stock_info.py +52 -29
- akshare/stock_feature/stock_inner_trade_xq.py +39 -31
- akshare/stock_feature/stock_irm_cninfo.py +32 -9
- akshare/stock_feature/stock_jgdy_em.py +41 -38
- akshare/stock_feature/stock_lh_yybpm.py +36 -37
- akshare/stock_feature/stock_lhb_em.py +135 -71
- akshare/stock_feature/stock_lhb_sina.py +93 -46
- akshare/stock_feature/stock_margin_em.py +102 -0
- akshare/stock_feature/{stock_sse_margin.py → stock_margin_sse.py} +21 -15
- akshare/stock_feature/{stock_szse_margin.py → stock_margin_szse.py} +23 -19
- akshare/stock_feature/stock_market_legu.py +13 -8
- akshare/stock_feature/stock_pankou_em.py +72 -34
- akshare/stock_feature/stock_report_em.py +244 -54
- akshare/stock_feature/stock_research_report_em.py +48 -19
- akshare/stock_feature/stock_sns_sseinfo.py +15 -12
- akshare/stock_feature/stock_sy_em.py +86 -33
- akshare/stock_feature/stock_technology_ths.py +152 -120
- akshare/stock_feature/stock_tfp_em.py +35 -13
- akshare/stock_feature/stock_three_report_em.py +119 -77
- akshare/stock_feature/stock_ttm_lyr.py +4 -7
- akshare/stock_feature/stock_value_em.py +83 -0
- akshare/stock_feature/stock_wencai.py +21 -9
- akshare/stock_feature/stock_yjyg_em.py +63 -28
- akshare/stock_feature/stock_zf_pg.py +61 -38
- akshare/stock_feature/stock_zh_valuation_baidu.py +3 -2
- akshare/stock_feature/stock_ztb_em.py +62 -40
- akshare/stock_fundamental/stock_finance.py +150 -58
- akshare/stock_fundamental/stock_finance_ths.py +116 -31
- akshare/stock_fundamental/stock_mda_ym.py +5 -3
- akshare/stock_fundamental/stock_notice.py +29 -15
- akshare/stock_fundamental/stock_profit_forecast_em.py +31 -13
- akshare/stock_fundamental/stock_profit_forecast_ths.py +19 -10
- akshare/stock_fundamental/stock_register_em.py +448 -0
- akshare/stock_fundamental/stock_restricted_em.py +79 -32
- akshare/stock_fundamental/stock_zygc.py +10 -8
- akshare/stock_fundamental/stock_zyjs_ths.py +5 -3
- akshare/tool/trade_date_hist.py +4 -3
- akshare/utils/cons.py +10 -0
- akshare/utils/context.py +43 -0
- akshare/utils/demjson.py +2 -2
- akshare/utils/func.py +26 -0
- akshare/utils/tqdm.py +13 -3
- {akshare-1.12.99.dist-info → akshare-1.15.73.dist-info}/METADATA +52 -69
- akshare-1.15.73.dist-info/RECORD +385 -0
- {akshare-1.12.99.dist-info → akshare-1.15.73.dist-info}/WHEEL +1 -1
- tests/test_func.py +3 -5
- akshare/bond/bond_futures.py +0 -50
- akshare/bond/bond_investing.py +0 -139
- akshare/crypto/crypto_hist_investing.py +0 -249
- akshare/fortune/fortune_it_juzi.py +0 -123
- akshare/futures/futures_international.py +0 -170
- akshare/futures/futures_news_baidu.py +0 -54
- akshare/futures/inventory_data.py +0 -100
- akshare/futures_derivative/futures_index_price_nh.py +0 -61
- akshare/futures_derivative/futures_index_return_nh.py +0 -47
- akshare/futures_derivative/futures_index_volatility_nh.py +0 -51
- akshare/futures_derivative/futures_other_index_nh.py +0 -145
- akshare/index/index_fear_greed_funddb.py +0 -71
- akshare/index/index_investing.py +0 -232
- akshare/sport/sport_olympic_winter.py +0 -39
- akshare/stock_feature/stock_board_concept_ths.py +0 -422
- akshare/stock_fundamental/stock_register.py +0 -292
- akshare-1.12.99.dist-info/RECORD +0 -374
- {akshare-1.12.99.dist-info → akshare-1.15.73.dist-info}/LICENSE +0 -0
- {akshare-1.12.99.dist-info → akshare-1.15.73.dist-info}/top_level.txt +0 -0
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date:
|
|
4
|
+
Date: 2024/4/4 18:10
|
|
5
5
|
Desc: 东方财富-数据中心-年报季报
|
|
6
6
|
东方财富-数据中心-年报季报-业绩预告
|
|
7
7
|
https://data.eastmoney.com/bbsj/202003/yjyg.html
|
|
8
8
|
东方财富-数据中心-年报季报-预约披露时间
|
|
9
9
|
https://data.eastmoney.com/bbsj/202003/yysj.html
|
|
10
10
|
"""
|
|
11
|
+
|
|
11
12
|
import pandas as pd
|
|
12
13
|
import requests
|
|
13
14
|
from tqdm import tqdm
|
|
@@ -17,7 +18,7 @@ def stock_yjkb_em(date: str = "20211231") -> pd.DataFrame:
|
|
|
17
18
|
"""
|
|
18
19
|
东方财富-数据中心-年报季报-业绩快报
|
|
19
20
|
https://data.eastmoney.com/bbsj/202003/yjkb.html
|
|
20
|
-
:param date: "20200331", "20200630", "20200930", "20201231"; 从 20100331 开始
|
|
21
|
+
:param date: 财报发布日期; choice of {"20200331", "20200630", "20200930", "20201231", ...}; 从 20100331 开始
|
|
21
22
|
:type date: str
|
|
22
23
|
:return: 业绩快报
|
|
23
24
|
:rtype: pandas.DataFrame
|
|
@@ -30,7 +31,8 @@ def stock_yjkb_em(date: str = "20211231") -> pd.DataFrame:
|
|
|
30
31
|
"pageNumber": "1",
|
|
31
32
|
"reportName": "RPT_FCI_PERFORMANCEE",
|
|
32
33
|
"columns": "ALL",
|
|
33
|
-
"filter": f"""(SECURITY_TYPE_CODE in ("058001001","058001008"))(TRADE_MARKET_CODE!="069001017")
|
|
34
|
+
"filter": f"""(SECURITY_TYPE_CODE in ("058001001","058001008"))(TRADE_MARKET_CODE!="069001017")
|
|
35
|
+
(REPORT_DATE='{'-'.join([date[:4], date[4:6], date[6:]])}')""",
|
|
34
36
|
}
|
|
35
37
|
r = requests.get(url, params=params)
|
|
36
38
|
data_json = r.json()
|
|
@@ -45,7 +47,7 @@ def stock_yjkb_em(date: str = "20211231") -> pd.DataFrame:
|
|
|
45
47
|
r = requests.get(url, params=params)
|
|
46
48
|
data_json = r.json()
|
|
47
49
|
temp_df = pd.DataFrame(data_json["result"]["data"])
|
|
48
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
50
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
49
51
|
|
|
50
52
|
big_df.reset_index(inplace=True)
|
|
51
53
|
big_df["index"] = range(1, len(big_df) + 1)
|
|
@@ -101,14 +103,28 @@ def stock_yjkb_em(date: str = "20211231") -> pd.DataFrame:
|
|
|
101
103
|
]
|
|
102
104
|
]
|
|
103
105
|
big_df["每股收益"] = pd.to_numeric(big_df["每股收益"], errors="coerce")
|
|
104
|
-
big_df["营业收入-营业收入"] = pd.to_numeric(
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
big_df["
|
|
106
|
+
big_df["营业收入-营业收入"] = pd.to_numeric(
|
|
107
|
+
big_df["营业收入-营业收入"], errors="coerce"
|
|
108
|
+
)
|
|
109
|
+
big_df["营业收入-去年同期"] = pd.to_numeric(
|
|
110
|
+
big_df["营业收入-去年同期"], errors="coerce"
|
|
111
|
+
)
|
|
112
|
+
big_df["营业收入-同比增长"] = pd.to_numeric(
|
|
113
|
+
big_df["营业收入-同比增长"], errors="coerce"
|
|
114
|
+
)
|
|
115
|
+
big_df["营业收入-季度环比增长"] = pd.to_numeric(
|
|
116
|
+
big_df["营业收入-季度环比增长"], errors="coerce"
|
|
117
|
+
)
|
|
108
118
|
big_df["净利润-净利润"] = pd.to_numeric(big_df["净利润-净利润"], errors="coerce")
|
|
109
|
-
big_df["净利润-去年同期"] = pd.to_numeric(
|
|
110
|
-
|
|
111
|
-
|
|
119
|
+
big_df["净利润-去年同期"] = pd.to_numeric(
|
|
120
|
+
big_df["净利润-去年同期"], errors="coerce"
|
|
121
|
+
)
|
|
122
|
+
big_df["净利润-同比增长"] = pd.to_numeric(
|
|
123
|
+
big_df["净利润-同比增长"], errors="coerce"
|
|
124
|
+
)
|
|
125
|
+
big_df["净利润-季度环比增长"] = pd.to_numeric(
|
|
126
|
+
big_df["净利润-季度环比增长"], errors="coerce"
|
|
127
|
+
)
|
|
112
128
|
big_df["每股净资产"] = pd.to_numeric(big_df["每股净资产"], errors="coerce")
|
|
113
129
|
big_df["净资产收益率"] = pd.to_numeric(big_df["净资产收益率"], errors="coerce")
|
|
114
130
|
big_df["净资产收益率"] = pd.to_numeric(big_df["净资产收益率"], errors="coerce")
|
|
@@ -120,7 +136,7 @@ def stock_yjyg_em(date: str = "20200331") -> pd.DataFrame:
|
|
|
120
136
|
"""
|
|
121
137
|
东方财富-数据中心-年报季报-业绩预告
|
|
122
138
|
https://data.eastmoney.com/bbsj/202003/yjyg.html
|
|
123
|
-
:param date: "
|
|
139
|
+
:param date: 财报发布日期; choice of {"20200331", "20200630", "20200930", "20201231", ...}; 从 20081231 开始
|
|
124
140
|
:type date: str
|
|
125
141
|
:return: 业绩预告
|
|
126
142
|
:rtype: pandas.DataFrame
|
|
@@ -148,7 +164,7 @@ def stock_yjyg_em(date: str = "20200331") -> pd.DataFrame:
|
|
|
148
164
|
r = requests.get(url, params=params)
|
|
149
165
|
data_json = r.json()
|
|
150
166
|
temp_df = pd.DataFrame(data_json["result"]["data"])
|
|
151
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
167
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
152
168
|
|
|
153
169
|
big_df.reset_index(inplace=True)
|
|
154
170
|
big_df["index"] = range(1, len(big_df) + 1)
|
|
@@ -197,7 +213,7 @@ def stock_yjyg_em(date: str = "20200331") -> pd.DataFrame:
|
|
|
197
213
|
"公告日期",
|
|
198
214
|
]
|
|
199
215
|
]
|
|
200
|
-
big_df["公告日期"] = pd.to_datetime(big_df["公告日期"]).dt.date
|
|
216
|
+
big_df["公告日期"] = pd.to_datetime(big_df["公告日期"], errors="coerce").dt.date
|
|
201
217
|
big_df["业绩变动幅度"] = pd.to_numeric(big_df["业绩变动幅度"], errors="coerce")
|
|
202
218
|
big_df["预测数值"] = pd.to_numeric(big_df["预测数值"], errors="coerce")
|
|
203
219
|
big_df["上年同期值"] = pd.to_numeric(big_df["上年同期值"], errors="coerce")
|
|
@@ -223,42 +239,51 @@ def stock_yysj_em(symbol: str = "沪深A股", date: str = "20200331") -> pd.Data
|
|
|
223
239
|
"pageNumber": "1",
|
|
224
240
|
"reportName": "RPT_PUBLIC_BS_APPOIN",
|
|
225
241
|
"columns": "ALL",
|
|
226
|
-
"filter": f"""(SECURITY_TYPE_CODE in ("058001001","058001008"))(TRADE_MARKET_CODE!="069001017")
|
|
242
|
+
"filter": f"""(SECURITY_TYPE_CODE in ("058001001","058001008"))(TRADE_MARKET_CODE!="069001017")
|
|
243
|
+
(REPORT_DATE='{'-'.join([date[:4], date[4:6], date[6:]])}')""",
|
|
227
244
|
}
|
|
228
245
|
if symbol == "沪市A股":
|
|
229
246
|
params.update(
|
|
230
247
|
{
|
|
231
|
-
"filter": f"""(SECURITY_TYPE_CODE in ("058001001","058001008"))
|
|
248
|
+
"filter": f"""(SECURITY_TYPE_CODE in ("058001001","058001008"))
|
|
249
|
+
(TRADE_MARKET_CODE in ("069001001001","069001001003","069001001006"))
|
|
250
|
+
(REPORT_DATE='{'-'.join([date[:4], date[4:6], date[6:]])}')"""
|
|
232
251
|
}
|
|
233
252
|
)
|
|
234
253
|
elif symbol == "科创板":
|
|
235
254
|
params.update(
|
|
236
255
|
{
|
|
237
|
-
"filter": f"""(SECURITY_TYPE_CODE in ("058001001","058001008"))(TRADE_MARKET_CODE="069001001006")
|
|
256
|
+
"filter": f"""(SECURITY_TYPE_CODE in ("058001001","058001008"))(TRADE_MARKET_CODE="069001001006")
|
|
257
|
+
(REPORT_DATE='{'-'.join([date[:4], date[4:6], date[6:]])}')"""
|
|
238
258
|
}
|
|
239
259
|
)
|
|
240
260
|
elif symbol == "深市A股":
|
|
241
261
|
params.update(
|
|
242
262
|
{
|
|
243
|
-
"filter": f"""(SECURITY_TYPE_CODE="058001001")(TRADE_MARKET_CODE in
|
|
263
|
+
"filter": f"""(SECURITY_TYPE_CODE="058001001")(TRADE_MARKET_CODE in
|
|
264
|
+
("069001002001","069001002002","069001002003","069001002005"))
|
|
265
|
+
(REPORT_DATE='{'-'.join([date[:4], date[4:6], date[6:]])}')"""
|
|
244
266
|
}
|
|
245
267
|
)
|
|
246
268
|
elif symbol == "创业板":
|
|
247
269
|
params.update(
|
|
248
270
|
{
|
|
249
|
-
"filter": f"""(SECURITY_TYPE_CODE="058001001")(TRADE_MARKET_CODE="069001002002")
|
|
271
|
+
"filter": f"""(SECURITY_TYPE_CODE="058001001")(TRADE_MARKET_CODE="069001002002")
|
|
272
|
+
(REPORT_DATE='{'-'.join([date[:4], date[4:6], date[6:]])}')"""
|
|
250
273
|
}
|
|
251
274
|
)
|
|
252
275
|
elif symbol == "京市A股":
|
|
253
276
|
params.update(
|
|
254
277
|
{
|
|
255
|
-
"filter": f"""(TRADE_MARKET_CODE="069001017")
|
|
278
|
+
"filter": f"""(TRADE_MARKET_CODE="069001017")
|
|
279
|
+
(REPORT_DATE='{'-'.join([date[:4], date[4:6], date[6:]])}')"""
|
|
256
280
|
}
|
|
257
281
|
)
|
|
258
282
|
elif symbol == "ST板":
|
|
259
283
|
params.update(
|
|
260
284
|
{
|
|
261
|
-
"filter": f"""(TRADE_MARKET_CODE in("069001001003","069001002005"))
|
|
285
|
+
"filter": f"""(TRADE_MARKET_CODE in("069001001003","069001002005"))
|
|
286
|
+
(REPORT_DATE='{'-'.join([date[:4], date[4:6], date[6:]])}')"""
|
|
262
287
|
}
|
|
263
288
|
)
|
|
264
289
|
r = requests.get(url, params=params)
|
|
@@ -274,7 +299,7 @@ def stock_yysj_em(symbol: str = "沪深A股", date: str = "20200331") -> pd.Data
|
|
|
274
299
|
r = requests.get(url, params=params)
|
|
275
300
|
data_json = r.json()
|
|
276
301
|
temp_df = pd.DataFrame(data_json["result"]["data"])
|
|
277
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
302
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
278
303
|
|
|
279
304
|
big_df.reset_index(inplace=True)
|
|
280
305
|
big_df["index"] = range(1, len(big_df) + 1)
|
|
@@ -314,11 +339,21 @@ def stock_yysj_em(symbol: str = "沪深A股", date: str = "20200331") -> pd.Data
|
|
|
314
339
|
"实际披露时间",
|
|
315
340
|
]
|
|
316
341
|
]
|
|
317
|
-
big_df["首次预约时间"] = pd.to_datetime(
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
big_df["
|
|
321
|
-
|
|
342
|
+
big_df["首次预约时间"] = pd.to_datetime(
|
|
343
|
+
big_df["首次预约时间"], errors="coerce"
|
|
344
|
+
).dt.date
|
|
345
|
+
big_df["一次变更日期"] = pd.to_datetime(
|
|
346
|
+
big_df["一次变更日期"], errors="coerce"
|
|
347
|
+
).dt.date
|
|
348
|
+
big_df["二次变更日期"] = pd.to_datetime(
|
|
349
|
+
big_df["二次变更日期"], errors="coerce"
|
|
350
|
+
).dt.date
|
|
351
|
+
big_df["三次变更日期"] = pd.to_datetime(
|
|
352
|
+
big_df["三次变更日期"], errors="coerce"
|
|
353
|
+
).dt.date
|
|
354
|
+
big_df["实际披露时间"] = pd.to_datetime(
|
|
355
|
+
big_df["实际披露时间"], errors="coerce"
|
|
356
|
+
).dt.date
|
|
322
357
|
return big_df
|
|
323
358
|
|
|
324
359
|
|
|
@@ -329,5 +364,5 @@ if __name__ == "__main__":
|
|
|
329
364
|
stock_yjyg_em_df = stock_yjyg_em(date="20191231")
|
|
330
365
|
print(stock_yjyg_em_df)
|
|
331
366
|
|
|
332
|
-
stock_yysj_em_df = stock_yysj_em(symbol="
|
|
367
|
+
stock_yysj_em_df = stock_yysj_em(symbol="沪深A股", date="20211231")
|
|
333
368
|
print(stock_yysj_em_df)
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date:
|
|
4
|
+
Date: 2024/4/4 18:20
|
|
5
5
|
Desc: 增发和配股
|
|
6
6
|
东方财富网-数据中心-新股数据-增发-全部增发
|
|
7
|
-
|
|
7
|
+
https://data.eastmoney.com/other/gkzf.html
|
|
8
8
|
东方财富网-数据中心-新股数据-配股
|
|
9
|
-
|
|
9
|
+
https://data.eastmoney.com/xg/pg/
|
|
10
10
|
"""
|
|
11
|
+
|
|
11
12
|
import pandas as pd
|
|
12
13
|
import requests
|
|
13
|
-
|
|
14
|
+
|
|
15
|
+
from akshare.utils.tqdm import get_tqdm
|
|
14
16
|
|
|
15
17
|
|
|
16
18
|
def stock_qbzf_em() -> pd.DataFrame:
|
|
@@ -20,6 +22,9 @@ def stock_qbzf_em() -> pd.DataFrame:
|
|
|
20
22
|
:return: 全部增发
|
|
21
23
|
:rtype: pandas.DataFrame
|
|
22
24
|
"""
|
|
25
|
+
import warnings
|
|
26
|
+
|
|
27
|
+
warnings.filterwarnings(action="ignore", category=FutureWarning)
|
|
23
28
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
24
29
|
params = {
|
|
25
30
|
"sortColumns": "ISSUE_DATE",
|
|
@@ -35,30 +40,36 @@ def stock_qbzf_em() -> pd.DataFrame:
|
|
|
35
40
|
}
|
|
36
41
|
r = requests.get(url, params=params)
|
|
37
42
|
data_json = r.json()
|
|
38
|
-
total_page = data_json[
|
|
43
|
+
total_page = data_json["result"]["pages"]
|
|
39
44
|
big_df = pd.DataFrame()
|
|
45
|
+
tqdm = get_tqdm()
|
|
40
46
|
for page in tqdm(range(1, total_page + 1), leave=False):
|
|
41
|
-
params.update(
|
|
42
|
-
|
|
43
|
-
|
|
47
|
+
params.update(
|
|
48
|
+
{
|
|
49
|
+
"pageNumber": page,
|
|
50
|
+
}
|
|
51
|
+
)
|
|
44
52
|
r = requests.get(url, params=params)
|
|
45
53
|
data_json = r.json()
|
|
46
|
-
temp_df = pd.DataFrame(data_json[
|
|
47
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
54
|
+
temp_df = pd.DataFrame(data_json["result"]["data"])
|
|
55
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
48
56
|
|
|
49
|
-
big_df.rename(
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
57
|
+
big_df.rename(
|
|
58
|
+
columns={
|
|
59
|
+
"SECURITY_NAME_ABBR": "股票简称",
|
|
60
|
+
"SECURITY_CODE": "股票代码",
|
|
61
|
+
"CORRECODE": "增发代码",
|
|
62
|
+
"SEO_TYPE": "发行方式",
|
|
63
|
+
"ISSUE_NUM": "发行总数",
|
|
64
|
+
"ONLINE_ISSUE_NUM": "网上发行",
|
|
65
|
+
"ISSUE_PRICE": "发行价格",
|
|
66
|
+
"NEW_PRICE": "最新价",
|
|
67
|
+
"ISSUE_DATE": "发行日期",
|
|
68
|
+
"ISSUE_LISTING_DATE": "增发上市日期",
|
|
69
|
+
"LOCKIN_PERIOD": "锁定期",
|
|
70
|
+
},
|
|
71
|
+
inplace=True,
|
|
72
|
+
)
|
|
62
73
|
big_df = big_df[
|
|
63
74
|
[
|
|
64
75
|
"股票代码",
|
|
@@ -77,9 +88,11 @@ def stock_qbzf_em() -> pd.DataFrame:
|
|
|
77
88
|
big_df["发行总数"] = pd.to_numeric(big_df["发行总数"], errors="coerce")
|
|
78
89
|
big_df["发行价格"] = pd.to_numeric(big_df["发行价格"], errors="coerce")
|
|
79
90
|
big_df["最新价"] = pd.to_numeric(big_df["最新价"], errors="coerce")
|
|
80
|
-
big_df[
|
|
81
|
-
big_df["发行日期"] = pd.to_datetime(big_df["发行日期"]).dt.date
|
|
82
|
-
big_df["增发上市日期"] = pd.to_datetime(
|
|
91
|
+
big_df["发行方式"] = big_df["发行方式"].map({"2": "公开增发", "1": "定向增发"})
|
|
92
|
+
big_df["发行日期"] = pd.to_datetime(big_df["发行日期"], errors="coerce").dt.date
|
|
93
|
+
big_df["增发上市日期"] = pd.to_datetime(
|
|
94
|
+
big_df["增发上市日期"], errors="coerce"
|
|
95
|
+
).dt.date
|
|
83
96
|
return big_df
|
|
84
97
|
|
|
85
98
|
|
|
@@ -90,6 +103,9 @@ def stock_pg_em() -> pd.DataFrame:
|
|
|
90
103
|
:return: 配股
|
|
91
104
|
:rtype: pandas.DataFrame
|
|
92
105
|
"""
|
|
106
|
+
import warnings
|
|
107
|
+
|
|
108
|
+
warnings.filterwarnings(action="ignore", category=FutureWarning)
|
|
93
109
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
94
110
|
params = {
|
|
95
111
|
"sortColumns": "EQUITY_RECORD_DATE",
|
|
@@ -105,16 +121,19 @@ def stock_pg_em() -> pd.DataFrame:
|
|
|
105
121
|
}
|
|
106
122
|
r = requests.get(url, params=params)
|
|
107
123
|
data_json = r.json()
|
|
108
|
-
total_page = data_json[
|
|
124
|
+
total_page = data_json["result"]["pages"]
|
|
109
125
|
big_df = pd.DataFrame()
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
126
|
+
tqdm = get_tqdm()
|
|
127
|
+
for page in tqdm(range(1, total_page + 1), leave=False):
|
|
128
|
+
params.update(
|
|
129
|
+
{
|
|
130
|
+
"pageNumber": page,
|
|
131
|
+
}
|
|
132
|
+
)
|
|
114
133
|
r = requests.get(url, params=params)
|
|
115
134
|
data_json = r.json()
|
|
116
|
-
temp_df = pd.DataFrame(data_json[
|
|
117
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
135
|
+
temp_df = pd.DataFrame(data_json["result"]["data"])
|
|
136
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
118
137
|
big_df.columns = [
|
|
119
138
|
"_",
|
|
120
139
|
"_",
|
|
@@ -163,16 +182,20 @@ def stock_pg_em() -> pd.DataFrame:
|
|
|
163
182
|
big_df["最新价"] = pd.to_numeric(big_df["最新价"], errors="coerce")
|
|
164
183
|
big_df["配股前总股本"] = pd.to_numeric(big_df["配股前总股本"], errors="coerce")
|
|
165
184
|
big_df["配股后总股本"] = pd.to_numeric(big_df["配股后总股本"], errors="coerce")
|
|
166
|
-
big_df["股权登记日"] = pd.to_datetime(big_df["股权登记日"]).dt.date
|
|
167
|
-
big_df["缴款起始日期"] = pd.to_datetime(
|
|
168
|
-
|
|
169
|
-
|
|
185
|
+
big_df["股权登记日"] = pd.to_datetime(big_df["股权登记日"], errors="coerce").dt.date
|
|
186
|
+
big_df["缴款起始日期"] = pd.to_datetime(
|
|
187
|
+
big_df["缴款起始日期"], errors="coerce"
|
|
188
|
+
).dt.date
|
|
189
|
+
big_df["缴款截止日期"] = pd.to_datetime(
|
|
190
|
+
big_df["缴款截止日期"], errors="coerce"
|
|
191
|
+
).dt.date
|
|
192
|
+
big_df["上市日"] = pd.to_datetime(big_df["上市日"], errors="coerce").dt.date
|
|
170
193
|
return big_df
|
|
171
194
|
|
|
172
195
|
|
|
173
196
|
if __name__ == "__main__":
|
|
174
197
|
stock_qbzf_em_df = stock_qbzf_em()
|
|
175
|
-
print(stock_qbzf_em_df
|
|
198
|
+
print(stock_qbzf_em_df)
|
|
176
199
|
|
|
177
200
|
stock_pg_em_df = stock_pg_em()
|
|
178
201
|
print(stock_pg_em_df)
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date:
|
|
4
|
+
Date: 2024/5/29 23:00
|
|
5
5
|
Desc: 百度股市通-A股-财务报表-估值数据
|
|
6
6
|
https://gushitong.baidu.com/stock/ab-002044
|
|
7
7
|
"""
|
|
8
|
+
|
|
8
9
|
import pandas as pd
|
|
9
10
|
import requests
|
|
10
11
|
|
|
@@ -56,6 +57,6 @@ def stock_zh_valuation_baidu(
|
|
|
56
57
|
|
|
57
58
|
if __name__ == "__main__":
|
|
58
59
|
stock_zh_valuation_baidu_df = stock_zh_valuation_baidu(
|
|
59
|
-
symbol="
|
|
60
|
+
symbol="002044", indicator="总市值", period="近一年"
|
|
60
61
|
)
|
|
61
62
|
print(stock_zh_valuation_baidu_df)
|