akshare 1.16.63__py3-none-any.whl → 1.16.65__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.
- akshare/__init__.py +4 -2
- akshare/air/cons.py +1 -0
- akshare/air/crypto.js +1 -1
- akshare/air/outcrypto.js +1 -1
- akshare/article/cons.py +1 -0
- akshare/article/epu_index.py +4 -3
- akshare/article/ff_factor.py +19 -8
- akshare/article/fred_md.py +4 -1
- akshare/article/risk_rv.py +3 -8
- akshare/bond/bond_cb_sina.py +1 -0
- akshare/bond/bond_cbond.py +19 -14
- akshare/bond/bond_em.py +34 -15
- akshare/bond/bond_summary.py +38 -37
- akshare/bond/bond_zh_cov.py +0 -6
- akshare/bond/cons.py +14 -11
- akshare/crypto/__init__.py +1 -1
- akshare/crypto/crypto_bitcoin_cme.py +7 -7
- akshare/crypto/crypto_hold.py +4 -1
- akshare/currency/currency.py +1 -0
- akshare/currency/currency_china_bank_sina.py +6 -3
- akshare/data/__init__.py +1 -1
- akshare/data/cninfo.js +1 -1
- akshare/economic/cons.py +10 -3
- akshare/economic/macro_australia.py +0 -7
- akshare/economic/macro_canada.py +92 -81
- akshare/economic/macro_china.py +0 -34
- akshare/economic/macro_china_hk.py +0 -1
- akshare/economic/macro_euro.py +103 -56
- akshare/economic/macro_germany.py +1 -1
- akshare/economic/macro_japan.py +0 -1
- akshare/economic/macro_other.py +1 -6
- akshare/economic/macro_swiss.py +2 -3
- akshare/economic/macro_uk.py +1 -1
- akshare/economic/macro_usa.py +0 -2
- akshare/energy/energy_carbon.py +0 -1
- akshare/energy/energy_oil_em.py +1 -2
- akshare/event/cons.py +1 -0
- akshare/forex/forex_em.py +0 -1
- akshare/fortune/fortune_bloomberg.py +6 -3
- akshare/fortune/fortune_forbes_500.py +3 -6
- akshare/fortune/fortune_hurun.py +2 -1
- akshare/fortune/fortune_xincaifu_500.py +17 -14
- akshare/fund/fund_announcement.py +1 -0
- akshare/fund/fund_aum_em.py +47 -35
- akshare/fund/fund_em.py +0 -7
- akshare/fund/fund_etf_em.py +0 -5
- akshare/fund/fund_fhsp_em.py +27 -20
- akshare/fund/fund_init_em.py +8 -5
- akshare/fund/fund_lof_em.py +0 -5
- akshare/fund/fund_manager.py +18 -7
- akshare/fund/fund_portfolio_em.py +0 -1
- akshare/fund/fund_position_lg.py +19 -8
- akshare/fund/fund_rank_em.py +0 -3
- akshare/fund/fund_rating.py +28 -9
- akshare/fund/fund_scale_em.py +24 -13
- akshare/futures/futures_comex_em.py +1 -0
- akshare/futures/futures_contract_detail.py +11 -8
- akshare/futures/futures_inventory_em.py +0 -2
- akshare/futures/futures_rule.py +5 -1
- akshare/futures/futures_settlement_price_sgx.py +21 -6
- akshare/futures/futures_stock_js.py +0 -1
- akshare/futures/receipt.py +279 -153
- akshare/futures/requests_fun.py +16 -3
- akshare/futures_derivative/cons.py +100 -103
- akshare/futures_derivative/futures_contract_info_cffex.py +53 -39
- akshare/futures_derivative/futures_contract_info_dce.py +16 -9
- akshare/futures_derivative/futures_contract_info_gfex.py +43 -31
- akshare/futures_derivative/futures_index_sina.py +25 -13
- akshare/fx/cons.py +12 -7
- akshare/fx/fx_quote.py +1 -0
- akshare/fx/fx_quote_baidu.py +2 -1
- akshare/hf/__init__.py +1 -1
- akshare/hf/hf_sp500.py +8 -7
- akshare/index/index_eri.py +1 -0
- akshare/index/index_global_em.py +0 -1
- akshare/index/index_kq_fz.py +17 -14
- akshare/index/index_kq_ss.py +1 -0
- akshare/index/index_stock_hk.py +0 -1
- akshare/index/index_stock_zh.py +0 -3
- akshare/index/index_sugar.py +18 -4
- akshare/index/index_zh_em.py +0 -15
- akshare/interest_rate/interbank_rate_em.py +0 -1
- akshare/movie/jm.js +0 -1
- akshare/news/__init__.py +1 -1
- akshare/news/news_stock.py +0 -1
- akshare/option/option_commodity_sina.py +22 -26
- akshare/option/option_daily_stats_sse_szse.py +0 -1
- akshare/option/option_em.py +0 -1
- akshare/option/option_lhb_em.py +0 -1
- akshare/option/option_risk_indicator_sse.py +0 -1
- akshare/other/__init__.py +1 -1
- akshare/pro/__init__.py +0 -1
- akshare/pro/client.py +6 -4
- akshare/pro/cons.py +3 -2
- akshare/pro/data_pro.py +6 -5
- akshare/qhkc/qhkc_api.py +63 -21
- akshare/qhkc_web/qhkc_fund.py +1 -0
- akshare/qhkc_web/qhkc_index.py +1 -0
- akshare/qhkc_web/qhkc_tool.py +55 -54
- akshare/rate/__init__.py +1 -1
- akshare/rate/repo_rate.py +36 -32
- akshare/reits/__init__.py +1 -1
- akshare/reits/reits_basic.py +139 -5
- akshare/sport/__init__.py +1 -1
- akshare/sport/sport_olympic.py +1 -0
- akshare/spot/__init__.py +1 -1
- akshare/stock/cons.py +19 -12
- akshare/stock/stock_board_concept_em.py +0 -6
- akshare/stock/stock_board_industry_em.py +0 -6
- akshare/stock/stock_dzjy_em.py +1 -1
- akshare/stock/stock_fund_em.py +0 -2
- akshare/stock/stock_fund_hold.py +1 -2
- akshare/stock/stock_gsrl_em.py +1 -0
- akshare/stock/stock_hk_famous.py +0 -1
- akshare/stock/stock_hk_fhpx_ths.py +2 -1
- akshare/stock/stock_hk_hot_rank_em.py +1 -0
- akshare/stock/stock_hold_control_em.py +0 -2
- akshare/stock/stock_hot_up_em.py +4 -1
- akshare/stock/stock_hsgt_em.py +0 -2
- akshare/stock/stock_industry.py +1 -0
- akshare/stock/stock_info.py +0 -2
- akshare/stock/stock_info_em.py +0 -1
- akshare/stock/stock_repurchase_em.py +7 -2
- akshare/stock/stock_share_hold.py +0 -1
- akshare/stock/stock_stop.py +0 -1
- akshare/stock/stock_summary.py +0 -2
- akshare/stock/stock_us_famous.py +0 -1
- akshare/stock/stock_us_js.py +3 -2
- akshare/stock/stock_us_pink.py +0 -1
- akshare/stock/stock_weibo_nlp.py +18 -20
- akshare/stock/stock_zh_a_special.py +0 -3
- akshare/stock/stock_zh_a_tick_tx.py +11 -3
- akshare/stock_a/stock_board_concept_name_em.py +0 -1
- akshare/stock_a/stock_zh_a_spot.py +0 -1
- akshare/stock_feature/cons.py +1 -0
- akshare/stock_feature/stock_account_em.py +0 -1
- akshare/stock_feature/stock_all_pb.py +2 -1
- akshare/stock_feature/stock_analyst_em.py +0 -3
- akshare/stock_feature/stock_buffett_index_lg.py +7 -6
- akshare/stock_feature/stock_classify_sina.py +3 -6
- akshare/stock_feature/stock_comment_em.py +0 -2
- akshare/stock_feature/stock_congestion_lg.py +2 -1
- akshare/stock_feature/stock_dxsyl_em.py +116 -71
- akshare/stock_feature/stock_gdzjc_em.py +16 -5
- akshare/stock_feature/stock_gxl_lg.py +3 -2
- akshare/stock_feature/stock_hist_em.py +0 -20
- akshare/stock_feature/stock_hist_tx.py +10 -8
- akshare/stock_feature/stock_hot_xq.py +4 -6
- akshare/stock_feature/stock_hsgt_em.py +0 -2
- akshare/stock_feature/stock_hsgt_exchange_rate.py +0 -2
- akshare/stock_feature/stock_hsgt_min_em.py +13 -16
- akshare/stock_feature/stock_inner_trade_xq.py +0 -1
- akshare/stock_feature/stock_lhb_em.py +0 -1
- akshare/stock_feature/stock_margin_em.py +0 -1
- akshare/stock_feature/stock_margin_sse.py +0 -2
- akshare/stock_feature/stock_pankou_em.py +0 -2
- akshare/stock_feature/stock_qsjy_em.py +13 -4
- akshare/stock_feature/stock_research_report_em.py +0 -1
- akshare/stock_feature/stock_yjyg_cninfo.py +4 -1
- akshare/stock_feature/stock_zh_vote_baidu.py +4 -1
- akshare/stock_feature/stock_ztb_em.py +0 -6
- akshare/stock_fundamental/__init__.py +1 -1
- akshare/stock_fundamental/stock_hold.py +26 -17
- akshare/stock_fundamental/stock_ipo_declare.py +1 -0
- akshare/stock_fundamental/stock_kcb_detail_sse.py +10 -10
- akshare/stock_fundamental/stock_kcb_sse.py +26 -25
- akshare/stock_fundamental/stock_profit_forecast_hk_etnet.py +64 -41
- akshare/stock_fundamental/stock_recommend.py +20 -4
- akshare/utils/demjson.py +2005 -1334
- akshare/utils/token_process.py +6 -5
- {akshare-1.16.63.dist-info → akshare-1.16.65.dist-info}/METADATA +3 -8
- {akshare-1.16.63.dist-info → akshare-1.16.65.dist-info}/RECORD +175 -175
- {akshare-1.16.63.dist-info → akshare-1.16.65.dist-info}/WHEEL +0 -0
- {akshare-1.16.63.dist-info → akshare-1.16.65.dist-info}/licenses/LICENSE +0 -0
- {akshare-1.16.63.dist-info → akshare-1.16.65.dist-info}/top_level.txt +0 -0
akshare/reits/reits_basic.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
2
|
# -*- coding:utf-8 -*-
|
3
3
|
"""
|
4
|
-
Date: 2025/
|
4
|
+
Date: 2025/3/27 15:00
|
5
5
|
Desc: REITs 行情及信息
|
6
6
|
https://quote.eastmoney.com/center/gridlist.html#fund_reits_all
|
7
7
|
https://www.jisilu.cn/data/cnreits/#CnReits
|
@@ -9,6 +9,36 @@ https://www.jisilu.cn/data/cnreits/#CnReits
|
|
9
9
|
|
10
10
|
import pandas as pd
|
11
11
|
import requests
|
12
|
+
from functools import lru_cache
|
13
|
+
from typing import Dict
|
14
|
+
|
15
|
+
|
16
|
+
@lru_cache()
|
17
|
+
def __reits_code_market_map() -> Dict:
|
18
|
+
"""
|
19
|
+
东方财富网-行情中心-REITs-沪深 REITs
|
20
|
+
https://quote.eastmoney.com/center/gridlist.html#fund_reits_all
|
21
|
+
:return: 沪深 REITs-实时行情
|
22
|
+
:rtype: pandas.DataFrame
|
23
|
+
"""
|
24
|
+
url = "https://95.push2.eastmoney.com/api/qt/clist/get"
|
25
|
+
params = {
|
26
|
+
"pn": "1",
|
27
|
+
"pz": "100",
|
28
|
+
"po": "1",
|
29
|
+
"np": "1",
|
30
|
+
"ut": "bd1d9ddb04089700cf9c27f6f7426281",
|
31
|
+
"fltt": "2",
|
32
|
+
"invt": "2",
|
33
|
+
"fid": "f3",
|
34
|
+
"fs": "m:1 t:9 e:97,m:0 t:10 e:97",
|
35
|
+
"fields": "f12,f13",
|
36
|
+
}
|
37
|
+
r = requests.get(url, params=params)
|
38
|
+
data_json = r.json()
|
39
|
+
temp_df = pd.DataFrame(data_json["data"]["diff"])
|
40
|
+
temp_dict = dict(zip(temp_df["f12"], temp_df["f13"]))
|
41
|
+
return temp_dict
|
12
42
|
|
13
43
|
|
14
44
|
def reits_realtime_em() -> pd.DataFrame:
|
@@ -21,20 +51,19 @@ def reits_realtime_em() -> pd.DataFrame:
|
|
21
51
|
url = "https://95.push2.eastmoney.com/api/qt/clist/get"
|
22
52
|
params = {
|
23
53
|
"pn": "1",
|
24
|
-
"pz": "
|
54
|
+
"pz": "100",
|
25
55
|
"po": "1",
|
26
|
-
"np": "
|
56
|
+
"np": "1",
|
27
57
|
"ut": "bd1d9ddb04089700cf9c27f6f7426281",
|
28
58
|
"fltt": "2",
|
29
59
|
"invt": "2",
|
30
60
|
"fid": "f3",
|
31
61
|
"fs": "m:1 t:9 e:97,m:0 t:10 e:97",
|
32
62
|
"fields": "f2,f3,f4,f5,f6,f12,f14,f15,f16,f17,f18",
|
33
|
-
"_": "1630048369992",
|
34
63
|
}
|
35
64
|
r = requests.get(url, params=params)
|
36
65
|
data_json = r.json()
|
37
|
-
temp_df = pd.DataFrame(data_json["data"]["diff"])
|
66
|
+
temp_df = pd.DataFrame(data_json["data"]["diff"])
|
38
67
|
temp_df.reset_index(inplace=True)
|
39
68
|
temp_df["index"] = range(1, len(temp_df) + 1)
|
40
69
|
temp_df.rename(
|
@@ -51,6 +80,7 @@ def reits_realtime_em() -> pd.DataFrame:
|
|
51
80
|
"f16": "最低价",
|
52
81
|
"f17": "开盘价",
|
53
82
|
"f18": "昨收",
|
83
|
+
"f13": "市场标识",
|
54
84
|
},
|
55
85
|
inplace=True,
|
56
86
|
)
|
@@ -82,6 +112,110 @@ def reits_realtime_em() -> pd.DataFrame:
|
|
82
112
|
return temp_df
|
83
113
|
|
84
114
|
|
115
|
+
def reits_hist_em(symbol: str = "508097") -> pd.DataFrame:
|
116
|
+
"""
|
117
|
+
东方财富网-行情中心-REITs-沪深 REITs-历史行情
|
118
|
+
https://quote.eastmoney.com/sh508097.html
|
119
|
+
:param symbol: REITs 代码
|
120
|
+
:type symbol: str
|
121
|
+
:return: 沪深 REITs-历史行情
|
122
|
+
:rtype: pandas.DataFrame
|
123
|
+
"""
|
124
|
+
url = "https://push2his.eastmoney.com/api/qt/stock/kline/get"
|
125
|
+
code_market_dict = __reits_code_market_map()
|
126
|
+
params = {
|
127
|
+
"secid": f"{code_market_dict[symbol]}.{symbol}",
|
128
|
+
"klt": "101",
|
129
|
+
"fqt": "1",
|
130
|
+
"lmt": "10000",
|
131
|
+
"end": "20500000",
|
132
|
+
"iscca": "1",
|
133
|
+
"fields1": "f1,f2,f3,f4,f5,f6,f7,f8",
|
134
|
+
"fields2": "f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f62,f63,f64",
|
135
|
+
"ut": "f057cbcbce2a86e2866ab8877db1d059",
|
136
|
+
"forcect": "1",
|
137
|
+
}
|
138
|
+
r = requests.get(url, params=params)
|
139
|
+
data_json = r.json()
|
140
|
+
temp_df = pd.DataFrame([item.split(",") for item in data_json["data"]["klines"]])
|
141
|
+
temp_df.columns = [
|
142
|
+
"日期",
|
143
|
+
"今开",
|
144
|
+
"最新价",
|
145
|
+
"最高",
|
146
|
+
"最低",
|
147
|
+
"成交量",
|
148
|
+
"成交额",
|
149
|
+
"振幅",
|
150
|
+
"-",
|
151
|
+
"-",
|
152
|
+
"换手",
|
153
|
+
"-",
|
154
|
+
"-",
|
155
|
+
"-",
|
156
|
+
]
|
157
|
+
temp_df = temp_df[
|
158
|
+
["日期", "今开", "最高", "最低", "最新价", "成交量", "成交额", "振幅", "换手"]
|
159
|
+
]
|
160
|
+
temp_df["今开"] = pd.to_numeric(temp_df["今开"], errors="coerce")
|
161
|
+
temp_df["最高"] = pd.to_numeric(temp_df["最高"], errors="coerce")
|
162
|
+
temp_df["最低"] = pd.to_numeric(temp_df["最低"], errors="coerce")
|
163
|
+
temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
|
164
|
+
temp_df["成交量"] = pd.to_numeric(temp_df["成交量"], errors="coerce")
|
165
|
+
temp_df["成交额"] = pd.to_numeric(temp_df["成交额"], errors="coerce")
|
166
|
+
temp_df["振幅"] = pd.to_numeric(temp_df["振幅"], errors="coerce")
|
167
|
+
temp_df["换手"] = pd.to_numeric(temp_df["换手"], errors="coerce")
|
168
|
+
temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
|
169
|
+
return temp_df
|
170
|
+
|
171
|
+
|
172
|
+
def reits_hist_min_em(symbol: str = "508097") -> pd.DataFrame:
|
173
|
+
"""
|
174
|
+
东方财富网-行情中心-REITs-沪深 REITs-历史行情
|
175
|
+
https://quote.eastmoney.com/sh508097.html
|
176
|
+
:param symbol: REITs 代码
|
177
|
+
:type symbol: str
|
178
|
+
:return: 沪深 REITs-历史行情
|
179
|
+
:rtype: pandas.DataFrame
|
180
|
+
"""
|
181
|
+
url = "https://push2.eastmoney.com/api/qt/stock/trends2/get"
|
182
|
+
code_market_dict = __reits_code_market_map()
|
183
|
+
params = {
|
184
|
+
"secid": f"{code_market_dict[symbol]}.{symbol}",
|
185
|
+
"fields1": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f17",
|
186
|
+
"fields2": "f51,f53,f54,f55,f56,f57,f58",
|
187
|
+
"iscr": "0",
|
188
|
+
"iscca": "0",
|
189
|
+
"ut": "f057cbcbce2a86e2866ab8877db1d059",
|
190
|
+
"ndays": "5",
|
191
|
+
}
|
192
|
+
r = requests.get(url, params=params)
|
193
|
+
data_json = r.json()
|
194
|
+
temp_df = pd.DataFrame([item.split(",") for item in data_json["data"]["trends"]])
|
195
|
+
temp_df.columns = [
|
196
|
+
"时间",
|
197
|
+
"最新价",
|
198
|
+
"最高",
|
199
|
+
"最低",
|
200
|
+
"成交量",
|
201
|
+
"成交额",
|
202
|
+
"昨收",
|
203
|
+
]
|
204
|
+
|
205
|
+
temp_df["最高"] = pd.to_numeric(temp_df["最高"], errors="coerce")
|
206
|
+
temp_df["最低"] = pd.to_numeric(temp_df["最低"], errors="coerce")
|
207
|
+
temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
|
208
|
+
temp_df["成交量"] = pd.to_numeric(temp_df["成交量"], errors="coerce")
|
209
|
+
temp_df["成交额"] = pd.to_numeric(temp_df["成交额"], errors="coerce")
|
210
|
+
return temp_df
|
211
|
+
|
212
|
+
|
85
213
|
if __name__ == "__main__":
|
86
214
|
reits_realtime_em_df = reits_realtime_em()
|
87
215
|
print(reits_realtime_em_df)
|
216
|
+
|
217
|
+
reits_hist_em_df = reits_hist_em(symbol="508097")
|
218
|
+
print(reits_hist_em_df)
|
219
|
+
|
220
|
+
reits_hist_min_em_df = reits_hist_min_em(symbol="508097")
|
221
|
+
print(reits_hist_min_em_df)
|
akshare/sport/__init__.py
CHANGED
akshare/sport/sport_olympic.py
CHANGED
akshare/spot/__init__.py
CHANGED
akshare/stock/cons.py
CHANGED
@@ -4,6 +4,7 @@
|
|
4
4
|
Date: 2019/10/25 15:56
|
5
5
|
Desc: 股票配置文件
|
6
6
|
"""
|
7
|
+
|
7
8
|
# zh-sina-kcb
|
8
9
|
zh_sina_kcb_stock_url = "http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeData"
|
9
10
|
zh_sina_kcb_stock_payload = {
|
@@ -13,7 +14,7 @@ zh_sina_kcb_stock_payload = {
|
|
13
14
|
"asc": "1",
|
14
15
|
"node": "kcb",
|
15
16
|
"symbol": "",
|
16
|
-
"_s_r_a": "auto"
|
17
|
+
"_s_r_a": "auto",
|
17
18
|
}
|
18
19
|
zh_sina_kcb_stock_count_url = "http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeStockCount?node=kcb"
|
19
20
|
zh_sina_kcb_stock_hist_url = "https://quotes.sina.cn/cn/api/jsonp.php/var%20_{}{}=/KC_MarketDataService.getKLineData?symbol={}"
|
@@ -30,17 +31,23 @@ zh_sina_a_stock_payload = {
|
|
30
31
|
"asc": "1",
|
31
32
|
"node": "hs_a",
|
32
33
|
"symbol": "",
|
33
|
-
"_s_r_a": "page"
|
34
|
+
"_s_r_a": "page",
|
34
35
|
}
|
35
36
|
zh_sina_a_stock_count_url = "http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeStockCount?node=hs_a"
|
36
|
-
zh_sina_a_stock_hist_url =
|
37
|
+
zh_sina_a_stock_hist_url = (
|
38
|
+
"https://finance.sina.com.cn/realstock/company/{}/hisdata_klc2/klc_kl.js"
|
39
|
+
)
|
37
40
|
zh_sina_a_stock_amount_url = "https://stock.finance.sina.com.cn/stock/api/jsonp.php/var%20KKE_ShareAmount_{}=/StockService.getAmountBySymbol?_=20&symbol={}"
|
38
41
|
zh_sina_a_stock_hfq_url = "https://finance.sina.com.cn/realstock/company/{}/hfq.js"
|
39
42
|
zh_sina_a_stock_qfq_url = "https://finance.sina.com.cn/realstock/company/{}/qfq.js"
|
40
43
|
|
41
44
|
# us-sina
|
42
|
-
us_sina_stock_hist_qfq_url =
|
43
|
-
|
45
|
+
us_sina_stock_hist_qfq_url = (
|
46
|
+
"https://finance.sina.com.cn/us_stock/company/reinstatement/{}_qfq.js"
|
47
|
+
)
|
48
|
+
us_sina_stock_hist_url = (
|
49
|
+
"https://finance.sina.com.cn/us_stock/company/hisdata/klc_kl_{}.js"
|
50
|
+
)
|
44
51
|
us_sina_stock_list_url = "http://stock.finance.sina.com.cn/usstock/api/jsonp.php/IO.XSRV2.CallbackList[{}]/US_CategoryService.getList"
|
45
52
|
us_sina_stock_dict_payload = {
|
46
53
|
"page": "2",
|
@@ -48,7 +55,7 @@ us_sina_stock_dict_payload = {
|
|
48
55
|
"sort": "",
|
49
56
|
"asc": "0",
|
50
57
|
"market": "",
|
51
|
-
"id": ""
|
58
|
+
"id": "",
|
52
59
|
}
|
53
60
|
js_hash_text = """
|
54
61
|
function d(s){
|
@@ -119,14 +126,14 @@ hk_sina_stock_dict_payload = {
|
|
119
126
|
"sort": "symbol",
|
120
127
|
"asc": "1",
|
121
128
|
"node": "qbgg_hk",
|
122
|
-
"_s_r_a": "page"
|
129
|
+
"_s_r_a": "page",
|
123
130
|
}
|
124
131
|
|
125
132
|
# hk-tx
|
126
133
|
hk_url = "http://stock.gtimg.cn/data/hk_rank.php"
|
127
134
|
hk_headers = {
|
128
135
|
"Referer": "http://stockapp.finance.qq.com/mstats/",
|
129
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"
|
136
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36",
|
130
137
|
}
|
131
138
|
hk_payload = {
|
132
139
|
"board": "A_H",
|
@@ -134,7 +141,7 @@ hk_payload = {
|
|
134
141
|
"pageSize": "20",
|
135
142
|
"reqPage": "1",
|
136
143
|
"order": "decs",
|
137
|
-
"var_name": "list_data"
|
144
|
+
"var_name": "list_data",
|
138
145
|
}
|
139
146
|
|
140
147
|
hk_stock_url = "http://web.ifzq.gtimg.cn/appstock/app/hkfqkline/get"
|
@@ -145,7 +152,7 @@ hk_stock_headers = {
|
|
145
152
|
hk_stock_payload = {
|
146
153
|
"_var": "kline_dayhfq{}",
|
147
154
|
"param": "hk{},day,{}-01-01,{}-12-31,640,hfq",
|
148
|
-
"r": ""
|
155
|
+
"r": "",
|
149
156
|
}
|
150
157
|
|
151
158
|
# usa
|
@@ -154,7 +161,7 @@ payload_usa_daily = {
|
|
154
161
|
"code": "NASDAQNTES",
|
155
162
|
"start": "20191026213000",
|
156
163
|
"number": "-1000",
|
157
|
-
"type": "5"
|
164
|
+
"type": "5",
|
158
165
|
}
|
159
166
|
|
160
167
|
# china
|
@@ -170,7 +177,7 @@ hx_headers = {
|
|
170
177
|
"Host": "stockdata.stock.hexun.com",
|
171
178
|
"Pragma": "no-cache",
|
172
179
|
"Referer": "http://stockdata.stock.hexun.com/zrbg/",
|
173
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"
|
180
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36",
|
174
181
|
}
|
175
182
|
|
176
183
|
hx_params = {
|
@@ -35,7 +35,6 @@ def __stock_board_concept_name_em() -> pd.DataFrame:
|
|
35
35
|
"fid": "f12",
|
36
36
|
"fs": "m:90 t:3 f:!50",
|
37
37
|
"fields": "f2,f3,f4,f8,f12,f14,f15,f16,f17,f18,f20,f21,f24,f25,f22,f33,f11,f62,f128,f124,f107,f104,f105,f136",
|
38
|
-
"_": "1626075887768",
|
39
38
|
}
|
40
39
|
temp_df = fetch_paginated_data(url, params)
|
41
40
|
temp_df.columns = [
|
@@ -115,7 +114,6 @@ def stock_board_concept_name_em() -> pd.DataFrame:
|
|
115
114
|
"fid": "f12",
|
116
115
|
"fs": "m:90 t:3 f:!50",
|
117
116
|
"fields": "f2,f3,f4,f8,f12,f14,f15,f16,f17,f18,f20,f21,f24,f25,f22,f33,f11,f62,f128,f124,f107,f104,f105,f136",
|
118
|
-
"_": "1626075887768",
|
119
117
|
}
|
120
118
|
temp_df = fetch_paginated_data(url, params)
|
121
119
|
temp_df.columns = [
|
@@ -270,7 +268,6 @@ def stock_board_concept_hist_em(
|
|
270
268
|
"end": end_date,
|
271
269
|
"smplmt": "10000",
|
272
270
|
"lmt": "1000000",
|
273
|
-
"_": "1626079488673",
|
274
271
|
}
|
275
272
|
r = requests.get(url, params=params)
|
276
273
|
data_json = r.json()
|
@@ -342,7 +339,6 @@ def stock_board_concept_hist_min_em(
|
|
342
339
|
"iscr": "0",
|
343
340
|
"ndays": "1",
|
344
341
|
"secid": f"90.{stock_board_code}",
|
345
|
-
"_": "1687852931312",
|
346
342
|
}
|
347
343
|
r = requests.get(url, params=params)
|
348
344
|
data_json = r.json()
|
@@ -378,7 +374,6 @@ def stock_board_concept_hist_min_em(
|
|
378
374
|
"fqt": "1",
|
379
375
|
"end": "20500101",
|
380
376
|
"lmt": "1000000",
|
381
|
-
"_": "1647760607065",
|
382
377
|
}
|
383
378
|
r = requests.get(url, params=params)
|
384
379
|
data_json = r.json()
|
@@ -455,7 +450,6 @@ def stock_board_concept_cons_em(symbol: str = "融资融券") -> pd.DataFrame:
|
|
455
450
|
"fs": f"b:{stock_board_code} f:!50",
|
456
451
|
"fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,"
|
457
452
|
"f24,f25,f22,f11,f62,f128,f136,f115,f152,f45",
|
458
|
-
"_": "1626081702127",
|
459
453
|
}
|
460
454
|
temp_df = fetch_paginated_data(url, params)
|
461
455
|
temp_df.columns = [
|
@@ -37,7 +37,6 @@ def __stock_board_industry_name_em() -> pd.DataFrame:
|
|
37
37
|
"fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,"
|
38
38
|
"f23,f24,f25,f26,f22,f33,f11,f62,f128,f136,f115,f152,f124,f107,f104,f105,"
|
39
39
|
"f140,f141,f207,f208,f209,f222",
|
40
|
-
"_": "1626075887768",
|
41
40
|
}
|
42
41
|
temp_df = fetch_paginated_data(url, params)
|
43
42
|
temp_df.columns = [
|
@@ -134,7 +133,6 @@ def stock_board_industry_name_em() -> pd.DataFrame:
|
|
134
133
|
"fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,"
|
135
134
|
"f23,f24,f25,f26,f22,f33,f11,f62,f128,f136,f115,f152,f124,f107,f104,f105,"
|
136
135
|
"f140,f141,f207,f208,f209,f222",
|
137
|
-
"_": "1626075887768",
|
138
136
|
}
|
139
137
|
temp_df = fetch_paginated_data(url, params)
|
140
138
|
temp_df.columns = [
|
@@ -306,7 +304,6 @@ def stock_board_industry_hist_em(
|
|
306
304
|
"end": end_date,
|
307
305
|
"smplmt": "10000",
|
308
306
|
"lmt": "1000000",
|
309
|
-
"_": "1626079488673",
|
310
307
|
}
|
311
308
|
r = requests.get(url, params=params)
|
312
309
|
data_json = r.json()
|
@@ -378,7 +375,6 @@ def stock_board_industry_hist_min_em(
|
|
378
375
|
"iscr": "0",
|
379
376
|
"ndays": "1",
|
380
377
|
"secid": f"90.{stock_board_code}",
|
381
|
-
"_": "1687852931312",
|
382
378
|
}
|
383
379
|
r = requests.get(url, params=params)
|
384
380
|
data_json = r.json()
|
@@ -417,7 +413,6 @@ def stock_board_industry_hist_min_em(
|
|
417
413
|
"end": "20500101",
|
418
414
|
"smplmt": "10000",
|
419
415
|
"lmt": "1000000",
|
420
|
-
"_": "1626079488673",
|
421
416
|
}
|
422
417
|
r = requests.get(url, params=params)
|
423
418
|
data_json = r.json()
|
@@ -494,7 +489,6 @@ def stock_board_industry_cons_em(symbol: str = "小金属") -> pd.DataFrame:
|
|
494
489
|
"fs": f"b:{stock_board_code} f:!50",
|
495
490
|
"fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,"
|
496
491
|
"f23,f24,f25,f22,f11,f62,f128,f136,f115,f152,f45",
|
497
|
-
"_": "1626081702127",
|
498
492
|
}
|
499
493
|
temp_df = fetch_paginated_data(url, params)
|
500
494
|
temp_df.columns = [
|
akshare/stock/stock_dzjy_em.py
CHANGED
akshare/stock/stock_fund_em.py
CHANGED
@@ -979,7 +979,6 @@ def stock_sector_fund_flow_hist(symbol: str = "汽车服务") -> pd.DataFrame:
|
|
979
979
|
"fields1": "f1,f2,f3,f7",
|
980
980
|
"fields2": "f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f62,f63,f64,f65",
|
981
981
|
"secid": f"90.{code_name_map[symbol]}",
|
982
|
-
"_": "1678954135116",
|
983
982
|
}
|
984
983
|
r = requests.get(url, params=params)
|
985
984
|
data_json = r.json()
|
@@ -1092,7 +1091,6 @@ def stock_concept_fund_flow_hist(symbol: str = "数据要素") -> pd.DataFrame:
|
|
1092
1091
|
"fields1": "f1,f2,f3,f7",
|
1093
1092
|
"fields2": "f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f62,f63,f64,f65",
|
1094
1093
|
"secid": f"90.{code_name_map[symbol]}",
|
1095
|
-
"_": "1678954135116",
|
1096
1094
|
}
|
1097
1095
|
r = requests.get(url, params=params)
|
1098
1096
|
data_json = r.json()
|
akshare/stock/stock_fund_hold.py
CHANGED
@@ -5,11 +5,10 @@ Date: 2021/12/19 13:09
|
|
5
5
|
Desc: 东方财富网-数据中心-主力数据-基金持仓
|
6
6
|
http://data.eastmoney.com/zlsj/2020-06-30-1-2.html
|
7
7
|
"""
|
8
|
+
|
8
9
|
import pandas as pd
|
9
10
|
import requests
|
10
11
|
|
11
|
-
from akshare.utils import demjson
|
12
|
-
|
13
12
|
|
14
13
|
def stock_report_fund_hold(
|
15
14
|
symbol: str = "基金持仓", date: str = "20210331"
|
akshare/stock/stock_gsrl_em.py
CHANGED
akshare/stock/stock_hk_famous.py
CHANGED
@@ -32,7 +32,6 @@ def stock_hk_famous_spot_em() -> pd.DataFrame:
|
|
32
32
|
"fs": "b:DLMK0106",
|
33
33
|
"fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,"
|
34
34
|
"f25,f26,f22,f33,f11,f62,f128,f136,f115,f152",
|
35
|
-
"_": "1631271634231",
|
36
35
|
}
|
37
36
|
r = requests.get(url, params=params)
|
38
37
|
data_json = r.json()
|
@@ -5,6 +5,7 @@ Date: 2024/1/16 15:30
|
|
5
5
|
Desc: 同花顺-港股-分红派息
|
6
6
|
https://stockpage.10jqka.com.cn/HK0700/bonus/
|
7
7
|
"""
|
8
|
+
|
8
9
|
from io import StringIO
|
9
10
|
|
10
11
|
import pandas as pd
|
@@ -57,7 +58,7 @@ def stock_hk_fhpx_detail_ths(symbol: str = "0700") -> pd.DataFrame:
|
|
57
58
|
temp_df["过户日期起止日-截止"] = pd.to_datetime(
|
58
59
|
temp_df["过户日期起止日-截止"], format="%Y-%m-%d", errors="coerce"
|
59
60
|
).dt.date
|
60
|
-
temp_df.sort_values([
|
61
|
+
temp_df.sort_values(["公告日期"], inplace=True, ignore_index=True)
|
61
62
|
return temp_df
|
62
63
|
|
63
64
|
|
@@ -33,7 +33,6 @@ def stock_hold_management_detail_em() -> pd.DataFrame:
|
|
33
33
|
"p": "1",
|
34
34
|
"pageNo": "1",
|
35
35
|
"pageNum": "1",
|
36
|
-
"_": "1691501763413",
|
37
36
|
}
|
38
37
|
r = requests.get(url, params=params)
|
39
38
|
data_json = r.json()
|
@@ -134,7 +133,6 @@ def stock_hold_management_person_em(
|
|
134
133
|
"sortColumns": "CHANGE_DATE,SECURITY_CODE,PERSON_NAME",
|
135
134
|
"source": "WEB",
|
136
135
|
"client": "WEB",
|
137
|
-
"_": "1691503078611",
|
138
136
|
}
|
139
137
|
r = requests.get(url, params=params)
|
140
138
|
data_json = r.json()
|
akshare/stock/stock_hot_up_em.py
CHANGED
@@ -5,6 +5,7 @@ Date: 2023/6/15 15:15
|
|
5
5
|
Desc: 东方财富个股人气榜
|
6
6
|
https://guba.eastmoney.com/rank/
|
7
7
|
"""
|
8
|
+
|
8
9
|
import pandas as pd
|
9
10
|
import requests
|
10
11
|
|
@@ -62,7 +63,9 @@ def stock_hot_up_em() -> pd.DataFrame:
|
|
62
63
|
"涨跌幅",
|
63
64
|
]
|
64
65
|
]
|
65
|
-
temp_df["排名较昨日变动"] = pd.to_numeric(
|
66
|
+
temp_df["排名较昨日变动"] = pd.to_numeric(
|
67
|
+
temp_df["排名较昨日变动"], errors="coerce"
|
68
|
+
)
|
66
69
|
temp_df["当前排名"] = pd.to_numeric(temp_df["当前排名"], errors="coerce")
|
67
70
|
temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
|
68
71
|
temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce")
|
akshare/stock/stock_hsgt_em.py
CHANGED
@@ -35,7 +35,6 @@ def stock_zh_ah_spot_em() -> pd.DataFrame:
|
|
35
35
|
"dect": "1",
|
36
36
|
"ut": "fa5fd1943c7b386f172d6893dbfba10b",
|
37
37
|
"wbp2u": "|0|0|0|web",
|
38
|
-
"_": "1741100627371",
|
39
38
|
}
|
40
39
|
r = requests.get(url, params=params)
|
41
40
|
data_json = r.json()
|
@@ -101,7 +100,6 @@ def stock_hsgt_sh_hk_spot_em() -> pd.DataFrame:
|
|
101
100
|
"dect": "1",
|
102
101
|
"ut": "fa5fd1943c7b386f172d6893dbfba10b",
|
103
102
|
"wbp2u": "|0|0|0|web",
|
104
|
-
"_": "1741100627371",
|
105
103
|
}
|
106
104
|
r = requests.get(url, params=params)
|
107
105
|
data_json = r.json()
|
akshare/stock/stock_industry.py
CHANGED
akshare/stock/stock_info.py
CHANGED
@@ -151,7 +151,6 @@ def stock_info_sh_name_code(symbol: str = "主板A股") -> pd.DataFrame:
|
|
151
151
|
"pageHelp.pageSize": "10000",
|
152
152
|
"pageHelp.pageNo": "1",
|
153
153
|
"pageHelp.endPage": "1",
|
154
|
-
"_": "1653291270045",
|
155
154
|
}
|
156
155
|
r = requests.get(url, params=params, headers=headers)
|
157
156
|
data_json = r.json()
|
@@ -321,7 +320,6 @@ def stock_info_sh_delist(symbol: str = "全部") -> pd.DataFrame:
|
|
321
320
|
"pageHelp.pageSize": "500",
|
322
321
|
"pageHelp.pageNo": "1",
|
323
322
|
"pageHelp.endPage": "1",
|
324
|
-
"_": "1643035608183",
|
325
323
|
}
|
326
324
|
r = requests.get(url, params=params, headers=headers)
|
327
325
|
data_json = r.json()
|
akshare/stock/stock_info_em.py
CHANGED
@@ -37,7 +37,6 @@ def stock_individual_info_em(
|
|
37
37
|
"f171,f277,f278,f279,f288,f152,f250,f251,f252,f253,f254,f269,f270,f271,f272,f273,f274,"
|
38
38
|
"f275,f276,f265,f266,f289,f290,f286,f285,f292,f293,f294,f295",
|
39
39
|
"secid": f"{market_code}.{symbol}",
|
40
|
-
"_": "1640157544804",
|
41
40
|
}
|
42
41
|
r = requests.get(url, params=params, timeout=timeout)
|
43
42
|
data_json = r.json()
|
@@ -5,6 +5,7 @@ Date: 2022/8/29 14:20
|
|
5
5
|
Desc: 东方财富网-数据中心-股票回购-股票回购数据
|
6
6
|
https://data.eastmoney.com/gphg/hglist.html
|
7
7
|
"""
|
8
|
+
|
8
9
|
import pandas as pd
|
9
10
|
import requests
|
10
11
|
from tqdm import tqdm
|
@@ -105,8 +106,12 @@ def stock_repurchase_em() -> pd.DataFrame:
|
|
105
106
|
big_df["计划回购价格区间"] = pd.to_numeric(big_df["计划回购价格区间"])
|
106
107
|
big_df["计划回购数量区间-下限"] = pd.to_numeric(big_df["计划回购数量区间-下限"])
|
107
108
|
big_df["计划回购数量区间-上限"] = pd.to_numeric(big_df["计划回购数量区间-上限"])
|
108
|
-
big_df["占公告前一日总股本比例-上限"] = pd.to_numeric(
|
109
|
-
|
109
|
+
big_df["占公告前一日总股本比例-上限"] = pd.to_numeric(
|
110
|
+
big_df["占公告前一日总股本比例-上限"]
|
111
|
+
)
|
112
|
+
big_df["占公告前一日总股本比例-下限"] = pd.to_numeric(
|
113
|
+
big_df["占公告前一日总股本比例-下限"]
|
114
|
+
)
|
110
115
|
big_df["计划回购金额区间-上限"] = pd.to_numeric(big_df["计划回购金额区间-上限"])
|
111
116
|
big_df["计划回购金额区间-下限"] = pd.to_numeric(big_df["计划回购金额区间-下限"])
|
112
117
|
big_df["已回购股份价格区间-下限"] = pd.to_numeric(big_df["已回购股份价格区间-下限"])
|
@@ -41,7 +41,6 @@ def stock_share_hold_change_sse(symbol: str = "600000") -> pd.DataFrame:
|
|
41
41
|
"BEGIN_DATE": "1990-01-01",
|
42
42
|
"END_DATE": "2050-01-01",
|
43
43
|
"BOARDTYPE": "",
|
44
|
-
"_": "1692750843592",
|
45
44
|
}
|
46
45
|
params if symbol == "全部" else params.update({"COMPANY_CODE": symbol})
|
47
46
|
headers = {
|
akshare/stock/stock_stop.py
CHANGED
akshare/stock/stock_summary.py
CHANGED
@@ -192,7 +192,6 @@ def stock_sse_summary() -> pd.DataFrame:
|
|
192
192
|
"sqlId": "COMMON_SSE_SJ_GPSJ_GPSJZM_TJSJ_L",
|
193
193
|
"PRODUCT_NAME": "股票,主板,科创板",
|
194
194
|
"type": "inParams",
|
195
|
-
"_": "1640855495128",
|
196
195
|
}
|
197
196
|
headers = {
|
198
197
|
"Referer": "http://www.sse.com.cn/",
|
@@ -238,7 +237,6 @@ def stock_sse_deal_daily(date: str = "20241216") -> pd.DataFrame:
|
|
238
237
|
"PRODUCT_CODE": "01,02,03,11,17",
|
239
238
|
"type": "inParams",
|
240
239
|
"SEARCH_DATE": "-".join([date[:4], date[4:6], date[6:]]),
|
241
|
-
"_": "1640836561673",
|
242
240
|
}
|
243
241
|
headers = {
|
244
242
|
"Referer": "https://www.sse.com.cn/",
|
akshare/stock/stock_us_famous.py
CHANGED
@@ -40,7 +40,6 @@ def stock_us_famous_spot_em(symbol: str = "科技类") -> pd.DataFrame:
|
|
40
40
|
"fs": f"b:MK{market_map[symbol]}",
|
41
41
|
"fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,"
|
42
42
|
"f25,f26,f22,f33,f11,f62,f128,f136,f115,f152",
|
43
|
-
"_": "1631271634231",
|
44
43
|
}
|
45
44
|
r = requests.get(url, params=params)
|
46
45
|
data_json = r.json()
|