akshare 1.16.64__py3-none-any.whl → 1.16.66__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 (176) hide show
  1. akshare/__init__.py +3 -1
  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 +44 -2
  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_yjyg_em.py +1 -1
  161. akshare/stock_feature/stock_zh_vote_baidu.py +4 -1
  162. akshare/stock_feature/stock_ztb_em.py +0 -6
  163. akshare/stock_fundamental/__init__.py +1 -1
  164. akshare/stock_fundamental/stock_hold.py +26 -17
  165. akshare/stock_fundamental/stock_ipo_declare.py +1 -0
  166. akshare/stock_fundamental/stock_kcb_detail_sse.py +10 -10
  167. akshare/stock_fundamental/stock_kcb_sse.py +26 -25
  168. akshare/stock_fundamental/stock_profit_forecast_hk_etnet.py +64 -41
  169. akshare/stock_fundamental/stock_recommend.py +20 -4
  170. akshare/utils/demjson.py +2007 -1336
  171. akshare/utils/token_process.py +6 -5
  172. {akshare-1.16.64.dist-info → akshare-1.16.66.dist-info}/METADATA +12 -35
  173. {akshare-1.16.64.dist-info → akshare-1.16.66.dist-info}/RECORD +176 -176
  174. {akshare-1.16.64.dist-info → akshare-1.16.66.dist-info}/WHEEL +0 -0
  175. {akshare-1.16.64.dist-info → akshare-1.16.66.dist-info}/licenses/LICENSE +0 -0
  176. {akshare-1.16.64.dist-info → akshare-1.16.66.dist-info}/top_level.txt +0 -0
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()
@@ -5,6 +5,7 @@ Date: 2022/11/27 13:30
5
5
  Desc: 美股目标价 or 港股目标价
6
6
  https://www.ushknews.com/report.html
7
7
  """
8
+
8
9
  import requests
9
10
  import pandas as pd
10
11
 
@@ -20,8 +21,8 @@ def stock_price_js(symbol: str = "us") -> pd.DataFrame:
20
21
  """
21
22
  url = "https://calendar-api.ushknews.com/getWebTargetPriceList"
22
23
  params = {
23
- 'limit': '20',
24
- 'category': symbol,
24
+ "limit": "20",
25
+ "category": symbol,
25
26
  }
26
27
  headers = {
27
28
  "accept": "application/json, text/plain, */*",
@@ -30,7 +30,6 @@ def stock_us_pink_spot_em() -> pd.DataFrame:
30
30
  "fs": "m:153",
31
31
  "fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,"
32
32
  "f26,f22,f33,f11,f62,f128,f136,f115,f152",
33
- "_": "1631271634231",
34
33
  }
35
34
  r = requests.get(url, params=params)
36
35
  data_json = r.json()
@@ -9,6 +9,7 @@ https://datacenter.jin10.com/market
9
9
  红色颜色越深,表明该股票讨论热度越高,其当前的涨幅更大。
10
10
  绿色颜色越深,表明该股票讨论的热度越低,其当前的跌幅更大。
11
11
  """
12
+
12
13
  import time
13
14
  from typing import Dict
14
15
 
@@ -55,34 +56,31 @@ def stock_js_weibo_report(time_period: str = "CNHOUR12") -> pd.DataFrame:
55
56
  :rtype: pandas.DataFrame
56
57
  """
57
58
  url = "https://datacenter-api.jin10.com/weibo/list"
58
- payload = {
59
- "timescale": time_period,
60
- "_": int(time.time() * 1000)
61
- }
59
+ payload = {"timescale": time_period, "_": int(time.time() * 1000)}
62
60
  headers = {
63
- 'authority': 'datacenter-api.jin10.com',
64
- 'pragma': 'no-cache',
65
- 'cache-control': 'no-cache',
66
- 'accept': '*/*',
67
- 'x-app-id': 'rU6QIu7JHe2gOUeR',
68
- 'sec-fetch-dest': 'empty',
69
- 'x-csrf-token': '',
70
- 'x-version': '1.0.0',
71
- 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36',
72
- 'origin': 'https://datacenter.jin10.com',
73
- 'sec-fetch-site': 'same-site',
74
- 'sec-fetch-mode': 'cors',
75
- 'referer': 'https://datacenter.jin10.com/market',
76
- 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8'
61
+ "authority": "datacenter-api.jin10.com",
62
+ "pragma": "no-cache",
63
+ "cache-control": "no-cache",
64
+ "accept": "*/*",
65
+ "x-app-id": "rU6QIu7JHe2gOUeR",
66
+ "sec-fetch-dest": "empty",
67
+ "x-csrf-token": "",
68
+ "x-version": "1.0.0",
69
+ "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36",
70
+ "origin": "https://datacenter.jin10.com",
71
+ "sec-fetch-site": "same-site",
72
+ "sec-fetch-mode": "cors",
73
+ "referer": "https://datacenter.jin10.com/market",
74
+ "accept-language": "zh-CN,zh;q=0.9,en;q=0.8",
77
75
  }
78
76
 
79
77
  r = requests.get(url, params=payload, headers=headers)
80
78
  temp_df = pd.DataFrame(r.json()["data"])
81
- temp_df['rate'] = pd.to_numeric(temp_df['rate'])
79
+ temp_df["rate"] = pd.to_numeric(temp_df["rate"])
82
80
  return temp_df
83
81
 
84
82
 
85
- if __name__ == '__main__':
83
+ if __name__ == "__main__":
86
84
  stock_js_weibo_nlp_time_map = stock_js_weibo_nlp_time()
87
85
  print(stock_js_weibo_nlp_time_map)
88
86
 
@@ -37,7 +37,6 @@ def stock_zh_a_st_em() -> pd.DataFrame:
37
37
  "fs": "m:0 f:4,m:1 f:4",
38
38
  "fields": "f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,"
39
39
  "f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152",
40
- "_": "1631107510188",
41
40
  }
42
41
  temp_df = fetch_paginated_data(url, params)
43
42
  temp_df.columns = [
@@ -128,7 +127,6 @@ def stock_zh_a_new_em() -> pd.DataFrame:
128
127
  "fs": "m:0 f:8,m:1 f:8",
129
128
  "fields": "f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,"
130
129
  "f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152",
131
- "_": "1631107510188",
132
130
  }
133
131
  temp_df = fetch_paginated_data(url, params)
134
132
  temp_df.columns = [
@@ -219,7 +217,6 @@ def stock_zh_a_stop_em() -> pd.DataFrame:
219
217
  "fs": "m:0 s:3",
220
218
  "fields": "f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,"
221
219
  "f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152",
222
- "_": "1631107510188",
223
220
  }
224
221
  temp_df = fetch_paginated_data(url, params)
225
222
  temp_df.columns = [
@@ -6,6 +6,7 @@ Desc: 腾讯-股票-实时行情-成交明细
6
6
  成交明细-每个交易日 16:00 提供当日数据
7
7
  港股报价延时 15 分钟
8
8
  """
9
+
9
10
  import warnings
10
11
 
11
12
  import pandas as pd
@@ -36,17 +37,24 @@ def stock_zh_a_tick_tx_js(symbol: str = "sz000001") -> pd.DataFrame:
36
37
  r = requests.get(url, params=params)
37
38
  text_data = r.text
38
39
  temp_df = (
39
- pd.DataFrame(eval(text_data[text_data.find("["):])[1].split("|"))
40
+ pd.DataFrame(eval(text_data[text_data.find("[") :])[1].split("|"))
40
41
  .iloc[:, 0]
41
42
  .str.split("/", expand=True)
42
43
  )
43
44
  page += 1
44
45
  big_df = pd.concat([big_df, temp_df], ignore_index=True)
45
- except:
46
+ except: # noqa: E722
46
47
  break
47
48
  if not big_df.empty:
48
49
  big_df = big_df.iloc[:, 1:].copy()
49
- big_df.columns = ["成交时间", "成交价格", "价格变动", "成交量", "成交金额", "性质"]
50
+ big_df.columns = [
51
+ "成交时间",
52
+ "成交价格",
53
+ "价格变动",
54
+ "成交量",
55
+ "成交金额",
56
+ "性质",
57
+ ]
50
58
  big_df.reset_index(drop=True, inplace=True)
51
59
  property_map = {
52
60
  "S": "卖盘",
@@ -145,7 +145,6 @@ async def stock_board_concept_name_em_async() -> pd.DataFrame:
145
145
  "fid": "f3", # 按涨跌幅排序
146
146
  "fs": "m:90 t:3 f:!50",
147
147
  "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",
148
- "_": "1626075887768",
149
148
  }
150
149
 
151
150
  results = await fetch_all_pages_async(url, params)
@@ -212,7 +212,6 @@ async def stock_zh_a_spot_em_async() -> pd.DataFrame:
212
212
  "fs": "m:0 t:6,m:0 t:80,m:1 t:2,m:1 t:23,m:0 t:81 s:2048",
213
213
  "fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,"
214
214
  "f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152",
215
- "_": "1623833739532",
216
215
  }
217
216
 
218
217
  results = await fetch_all_pages_async(url, params)
@@ -4,6 +4,7 @@
4
4
  Date: 2019/12/30 21:02
5
5
  Desc:
6
6
  """
7
+
7
8
  stock_em_sy_js = """
8
9
  function getCode(num) {
9
10
  var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
@@ -31,7 +31,6 @@ def stock_account_statistics_em() -> pd.DataFrame:
31
31
  "pageNo": "1",
32
32
  "pageNum": "1",
33
33
  "pageNumber": "1",
34
- "_": "1640749656405",
35
34
  }
36
35
  r = requests.get(url, params=params)
37
36
  data_json = r.json()
@@ -5,6 +5,7 @@ Date: 2023/4/11 20:40
5
5
  Desc: 全部A股-等权重市净率、中位数市净率
6
6
  https://www.legulegu.com/stockdata/all-pb
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
@@ -26,7 +27,7 @@ def stock_a_all_pb() -> pd.DataFrame:
26
27
  r = requests.get(
27
28
  url,
28
29
  params=params,
29
- **get_cookie_csrf(url="https://legulegu.com/stockdata/all-pb")
30
+ **get_cookie_csrf(url="https://legulegu.com/stockdata/all-pb"),
30
31
  )
31
32
  data_json = r.json()
32
33
  temp_df = pd.DataFrame(data_json["data"])