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.
Files changed (175) hide show
  1. akshare/__init__.py +4 -2
  2. akshare/air/cons.py +1 -0
  3. akshare/air/crypto.js +1 -1
  4. akshare/air/outcrypto.js +1 -1
  5. akshare/article/cons.py +1 -0
  6. akshare/article/epu_index.py +4 -3
  7. akshare/article/ff_factor.py +19 -8
  8. akshare/article/fred_md.py +4 -1
  9. akshare/article/risk_rv.py +3 -8
  10. akshare/bond/bond_cb_sina.py +1 -0
  11. akshare/bond/bond_cbond.py +19 -14
  12. akshare/bond/bond_em.py +34 -15
  13. akshare/bond/bond_summary.py +38 -37
  14. akshare/bond/bond_zh_cov.py +0 -6
  15. akshare/bond/cons.py +14 -11
  16. akshare/crypto/__init__.py +1 -1
  17. akshare/crypto/crypto_bitcoin_cme.py +7 -7
  18. akshare/crypto/crypto_hold.py +4 -1
  19. akshare/currency/currency.py +1 -0
  20. akshare/currency/currency_china_bank_sina.py +6 -3
  21. akshare/data/__init__.py +1 -1
  22. akshare/data/cninfo.js +1 -1
  23. akshare/economic/cons.py +10 -3
  24. akshare/economic/macro_australia.py +0 -7
  25. akshare/economic/macro_canada.py +92 -81
  26. akshare/economic/macro_china.py +0 -34
  27. akshare/economic/macro_china_hk.py +0 -1
  28. akshare/economic/macro_euro.py +103 -56
  29. akshare/economic/macro_germany.py +1 -1
  30. akshare/economic/macro_japan.py +0 -1
  31. akshare/economic/macro_other.py +1 -6
  32. akshare/economic/macro_swiss.py +2 -3
  33. akshare/economic/macro_uk.py +1 -1
  34. akshare/economic/macro_usa.py +0 -2
  35. akshare/energy/energy_carbon.py +0 -1
  36. akshare/energy/energy_oil_em.py +1 -2
  37. akshare/event/cons.py +1 -0
  38. akshare/forex/forex_em.py +0 -1
  39. akshare/fortune/fortune_bloomberg.py +6 -3
  40. akshare/fortune/fortune_forbes_500.py +3 -6
  41. akshare/fortune/fortune_hurun.py +2 -1
  42. akshare/fortune/fortune_xincaifu_500.py +17 -14
  43. akshare/fund/fund_announcement.py +1 -0
  44. akshare/fund/fund_aum_em.py +47 -35
  45. akshare/fund/fund_em.py +0 -7
  46. akshare/fund/fund_etf_em.py +0 -5
  47. akshare/fund/fund_fhsp_em.py +27 -20
  48. akshare/fund/fund_init_em.py +8 -5
  49. akshare/fund/fund_lof_em.py +0 -5
  50. akshare/fund/fund_manager.py +18 -7
  51. akshare/fund/fund_portfolio_em.py +0 -1
  52. akshare/fund/fund_position_lg.py +19 -8
  53. akshare/fund/fund_rank_em.py +0 -3
  54. akshare/fund/fund_rating.py +28 -9
  55. akshare/fund/fund_scale_em.py +24 -13
  56. akshare/futures/futures_comex_em.py +1 -0
  57. akshare/futures/futures_contract_detail.py +11 -8
  58. akshare/futures/futures_inventory_em.py +0 -2
  59. akshare/futures/futures_rule.py +5 -1
  60. akshare/futures/futures_settlement_price_sgx.py +21 -6
  61. akshare/futures/futures_stock_js.py +0 -1
  62. akshare/futures/receipt.py +279 -153
  63. akshare/futures/requests_fun.py +16 -3
  64. akshare/futures_derivative/cons.py +100 -103
  65. akshare/futures_derivative/futures_contract_info_cffex.py +53 -39
  66. akshare/futures_derivative/futures_contract_info_dce.py +16 -9
  67. akshare/futures_derivative/futures_contract_info_gfex.py +43 -31
  68. akshare/futures_derivative/futures_index_sina.py +25 -13
  69. akshare/fx/cons.py +12 -7
  70. akshare/fx/fx_quote.py +1 -0
  71. akshare/fx/fx_quote_baidu.py +2 -1
  72. akshare/hf/__init__.py +1 -1
  73. akshare/hf/hf_sp500.py +8 -7
  74. akshare/index/index_eri.py +1 -0
  75. akshare/index/index_global_em.py +0 -1
  76. akshare/index/index_kq_fz.py +17 -14
  77. akshare/index/index_kq_ss.py +1 -0
  78. akshare/index/index_stock_hk.py +0 -1
  79. akshare/index/index_stock_zh.py +0 -3
  80. akshare/index/index_sugar.py +18 -4
  81. akshare/index/index_zh_em.py +0 -15
  82. akshare/interest_rate/interbank_rate_em.py +0 -1
  83. akshare/movie/jm.js +0 -1
  84. akshare/news/__init__.py +1 -1
  85. akshare/news/news_stock.py +0 -1
  86. akshare/option/option_commodity_sina.py +22 -26
  87. akshare/option/option_daily_stats_sse_szse.py +0 -1
  88. akshare/option/option_em.py +0 -1
  89. akshare/option/option_lhb_em.py +0 -1
  90. akshare/option/option_risk_indicator_sse.py +0 -1
  91. akshare/other/__init__.py +1 -1
  92. akshare/pro/__init__.py +0 -1
  93. akshare/pro/client.py +6 -4
  94. akshare/pro/cons.py +3 -2
  95. akshare/pro/data_pro.py +6 -5
  96. akshare/qhkc/qhkc_api.py +63 -21
  97. akshare/qhkc_web/qhkc_fund.py +1 -0
  98. akshare/qhkc_web/qhkc_index.py +1 -0
  99. akshare/qhkc_web/qhkc_tool.py +55 -54
  100. akshare/rate/__init__.py +1 -1
  101. akshare/rate/repo_rate.py +36 -32
  102. akshare/reits/__init__.py +1 -1
  103. akshare/reits/reits_basic.py +139 -5
  104. akshare/sport/__init__.py +1 -1
  105. akshare/sport/sport_olympic.py +1 -0
  106. akshare/spot/__init__.py +1 -1
  107. akshare/stock/cons.py +19 -12
  108. akshare/stock/stock_board_concept_em.py +0 -6
  109. akshare/stock/stock_board_industry_em.py +0 -6
  110. akshare/stock/stock_dzjy_em.py +1 -1
  111. akshare/stock/stock_fund_em.py +0 -2
  112. akshare/stock/stock_fund_hold.py +1 -2
  113. akshare/stock/stock_gsrl_em.py +1 -0
  114. akshare/stock/stock_hk_famous.py +0 -1
  115. akshare/stock/stock_hk_fhpx_ths.py +2 -1
  116. akshare/stock/stock_hk_hot_rank_em.py +1 -0
  117. akshare/stock/stock_hold_control_em.py +0 -2
  118. akshare/stock/stock_hot_up_em.py +4 -1
  119. akshare/stock/stock_hsgt_em.py +0 -2
  120. akshare/stock/stock_industry.py +1 -0
  121. akshare/stock/stock_info.py +0 -2
  122. akshare/stock/stock_info_em.py +0 -1
  123. akshare/stock/stock_repurchase_em.py +7 -2
  124. akshare/stock/stock_share_hold.py +0 -1
  125. akshare/stock/stock_stop.py +0 -1
  126. akshare/stock/stock_summary.py +0 -2
  127. akshare/stock/stock_us_famous.py +0 -1
  128. akshare/stock/stock_us_js.py +3 -2
  129. akshare/stock/stock_us_pink.py +0 -1
  130. akshare/stock/stock_weibo_nlp.py +18 -20
  131. akshare/stock/stock_zh_a_special.py +0 -3
  132. akshare/stock/stock_zh_a_tick_tx.py +11 -3
  133. akshare/stock_a/stock_board_concept_name_em.py +0 -1
  134. akshare/stock_a/stock_zh_a_spot.py +0 -1
  135. akshare/stock_feature/cons.py +1 -0
  136. akshare/stock_feature/stock_account_em.py +0 -1
  137. akshare/stock_feature/stock_all_pb.py +2 -1
  138. akshare/stock_feature/stock_analyst_em.py +0 -3
  139. akshare/stock_feature/stock_buffett_index_lg.py +7 -6
  140. akshare/stock_feature/stock_classify_sina.py +3 -6
  141. akshare/stock_feature/stock_comment_em.py +0 -2
  142. akshare/stock_feature/stock_congestion_lg.py +2 -1
  143. akshare/stock_feature/stock_dxsyl_em.py +116 -71
  144. akshare/stock_feature/stock_gdzjc_em.py +16 -5
  145. akshare/stock_feature/stock_gxl_lg.py +3 -2
  146. akshare/stock_feature/stock_hist_em.py +0 -20
  147. akshare/stock_feature/stock_hist_tx.py +10 -8
  148. akshare/stock_feature/stock_hot_xq.py +4 -6
  149. akshare/stock_feature/stock_hsgt_em.py +0 -2
  150. akshare/stock_feature/stock_hsgt_exchange_rate.py +0 -2
  151. akshare/stock_feature/stock_hsgt_min_em.py +13 -16
  152. akshare/stock_feature/stock_inner_trade_xq.py +0 -1
  153. akshare/stock_feature/stock_lhb_em.py +0 -1
  154. akshare/stock_feature/stock_margin_em.py +0 -1
  155. akshare/stock_feature/stock_margin_sse.py +0 -2
  156. akshare/stock_feature/stock_pankou_em.py +0 -2
  157. akshare/stock_feature/stock_qsjy_em.py +13 -4
  158. akshare/stock_feature/stock_research_report_em.py +0 -1
  159. akshare/stock_feature/stock_yjyg_cninfo.py +4 -1
  160. akshare/stock_feature/stock_zh_vote_baidu.py +4 -1
  161. akshare/stock_feature/stock_ztb_em.py +0 -6
  162. akshare/stock_fundamental/__init__.py +1 -1
  163. akshare/stock_fundamental/stock_hold.py +26 -17
  164. akshare/stock_fundamental/stock_ipo_declare.py +1 -0
  165. akshare/stock_fundamental/stock_kcb_detail_sse.py +10 -10
  166. akshare/stock_fundamental/stock_kcb_sse.py +26 -25
  167. akshare/stock_fundamental/stock_profit_forecast_hk_etnet.py +64 -41
  168. akshare/stock_fundamental/stock_recommend.py +20 -4
  169. akshare/utils/demjson.py +2005 -1334
  170. akshare/utils/token_process.py +6 -5
  171. {akshare-1.16.63.dist-info → akshare-1.16.65.dist-info}/METADATA +3 -8
  172. {akshare-1.16.63.dist-info → akshare-1.16.65.dist-info}/RECORD +175 -175
  173. {akshare-1.16.63.dist-info → akshare-1.16.65.dist-info}/WHEEL +0 -0
  174. {akshare-1.16.63.dist-info → akshare-1.16.65.dist-info}/licenses/LICENSE +0 -0
  175. {akshare-1.16.63.dist-info → akshare-1.16.65.dist-info}/top_level.txt +0 -0
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2025/2/24 18:00
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": "50000",
54
+ "pz": "100",
25
55
  "po": "1",
26
- "np": "2",
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"]).T
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
@@ -2,5 +2,5 @@
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
4
  Date: 2021/8/2 16:47
5
- Desc:
5
+ Desc:
6
6
  """
@@ -5,6 +5,7 @@ Date: 2021/8/2 16:47
5
5
  Desc: 运动-奥运会
6
6
  https://www.kaggle.com/marcogdepinto/let-s-discover-more-about-the-olympic-games
7
7
  """
8
+
8
9
  import pandas as pd
9
10
 
10
11
 
akshare/spot/__init__.py CHANGED
@@ -2,5 +2,5 @@
2
2
  # !/usr/bin/env python
3
3
  """
4
4
  Date: 2021/12/6 21:58
5
- Desc:
5
+ Desc:
6
6
  """
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 = "https://finance.sina.com.cn/realstock/company/{}/hisdata_klc2/klc_kl.js"
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 = "https://finance.sina.com.cn/us_stock/company/reinstatement/{}_qfq.js"
43
- us_sina_stock_hist_url = "https://finance.sina.com.cn/us_stock/company/hisdata/klc_kl_{}.js"
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 = [
@@ -493,7 +493,7 @@ def stock_dzjy_yybph(symbol: str = "近三月") -> pd.DataFrame:
493
493
  period_map = {
494
494
  "近一月": "30",
495
495
  "近三月": "90",
496
- "近六月": "120",
496
+ "近六月": "180",
497
497
  "近一年": "360",
498
498
  }
499
499
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
@@ -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()
@@ -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"
@@ -5,6 +5,7 @@ Date: 2023/8/8 21:30
5
5
  Desc: 东方财富网-数据中心-股市日历
6
6
  https://data.eastmoney.com/gsrl/gsdt.html
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
@@ -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(['公告日期'], inplace=True, ignore_index=True)
61
+ temp_df.sort_values(["公告日期"], inplace=True, ignore_index=True)
61
62
  return temp_df
62
63
 
63
64
 
@@ -5,6 +5,7 @@ Date: 2023/3/25 22: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
 
@@ -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()
@@ -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(temp_df["排名较昨日变动"], errors="coerce")
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")
@@ -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()
@@ -5,6 +5,7 @@ Date: 2023/5/9 17:06
5
5
  Desc: 新浪行业-板块行情
6
6
  http://finance.sina.com.cn/stock/sl/
7
7
  """
8
+
8
9
  import json
9
10
  import math
10
11
 
@@ -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()
@@ -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(big_df["占公告前一日总股本比例-上限"])
109
- big_df["占公告前一日总股本比例-下限"] = pd.to_numeric(big_df["占公告前一日总股本比例-下限"])
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 = {
@@ -29,7 +29,6 @@ def stock_staq_net_stop() -> pd.DataFrame:
29
29
  "fid": "f3",
30
30
  "fs": "m:0 s:3",
31
31
  "fields": "f12,f14",
32
- "_": "1622622663841",
33
32
  }
34
33
  r = requests.get(url, params=params)
35
34
  data_json = r.json()
@@ -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/",
@@ -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()