akshare 1.16.10__py3-none-any.whl → 1.16.12__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 CHANGED
@@ -3019,9 +3019,11 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
3019
3019
  1.16.8 fix: fix option_czce_daily interface
3020
3020
  1.16.9 fix: fix stock_sse_deal_daily interface
3021
3021
  1.16.10 fix: fix option_risk_analysis_em interface
3022
+ 1.16.11 fix: fix stock_intraday_em interface
3023
+ 1.16.12 fix: fix bond_zh_hs_cov_daily interface
3022
3024
  """
3023
3025
 
3024
- __version__ = "1.16.10"
3026
+ __version__ = "1.16.12"
3025
3027
  __author__ = "AKFamily"
3026
3028
 
3027
3029
  import sys
@@ -1,12 +1,11 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2025/2/17 12:50
4
+ Date: 2025/2/24 18:50
5
5
  Desc: 新浪财经-债券-沪深可转债-实时行情数据和历史行情数据
6
6
  https://vip.stock.finance.sina.com.cn/mkt/#hskzz_z
7
7
  """
8
8
 
9
- import math
10
9
  import datetime
11
10
  import re
12
11
 
@@ -96,9 +95,9 @@ def _code_id_map() -> dict:
96
95
  url = "https://80.push2.eastmoney.com/api/qt/clist/get"
97
96
  params = {
98
97
  "pn": "1",
99
- "pz": "200",
98
+ "pz": "50000",
100
99
  "po": "1",
101
- "np": "1",
100
+ "np": "2",
102
101
  "ut": "bd1d9ddb04089700cf9c27f6f7426281",
103
102
  "fltt": "2",
104
103
  "invt": "2",
@@ -109,28 +108,15 @@ def _code_id_map() -> dict:
109
108
  }
110
109
  r = requests.get(url, params=params)
111
110
  data_json = r.json()
112
- total_page = math.ceil(data_json["data"]["total"] / 200)
113
- temp_list = []
114
- tqdm = get_tqdm()
115
- for page in tqdm(range(1, total_page + 1), leave=False):
116
- params.update(
117
- {
118
- "pn": page,
119
- }
120
- )
121
- r = requests.get(url, params=params, timeout=15)
122
- data_json = r.json()
123
- inner_temp_df = pd.DataFrame(data_json["data"]["diff"])
124
- temp_list.append(inner_temp_df)
125
- temp_df = pd.concat(temp_list, ignore_index=True)
111
+ temp_df = pd.DataFrame(data_json["data"]["diff"]).T
126
112
  temp_df["market_id"] = 1
127
113
  temp_df.columns = ["sh_code", "sh_id"]
128
114
  code_id_dict = dict(zip(temp_df["sh_code"], temp_df["sh_id"]))
129
115
  params = {
130
116
  "pn": "1",
131
- "pz": "200",
117
+ "pz": "50000",
132
118
  "po": "1",
133
- "np": "1",
119
+ "np": "2",
134
120
  "ut": "bd1d9ddb04089700cf9c27f6f7426281",
135
121
  "fltt": "2",
136
122
  "invt": "2",
@@ -141,20 +127,7 @@ def _code_id_map() -> dict:
141
127
  }
142
128
  r = requests.get(url, params=params)
143
129
  data_json = r.json()
144
- total_page = math.ceil(data_json["data"]["total"] / 200)
145
- temp_list = []
146
- tqdm = get_tqdm()
147
- for page in tqdm(range(1, total_page + 1), leave=False):
148
- params.update(
149
- {
150
- "pn": page,
151
- }
152
- )
153
- r = requests.get(url, params=params, timeout=15)
154
- data_json = r.json()
155
- inner_temp_df = pd.DataFrame(data_json["data"]["diff"])
156
- temp_list.append(inner_temp_df)
157
- temp_df_sz = pd.concat(temp_list, ignore_index=True)
130
+ temp_df_sz = pd.DataFrame(data_json["data"]["diff"]).T
158
131
  temp_df_sz["sz_id"] = 0
159
132
  code_id_dict.update(dict(zip(temp_df_sz["f12"], temp_df_sz["sz_id"])))
160
133
  return code_id_dict
@@ -505,9 +478,9 @@ def bond_cov_comparison() -> pd.DataFrame:
505
478
  url = "https://16.push2.eastmoney.com/api/qt/clist/get"
506
479
  params = {
507
480
  "pn": "1",
508
- "pz": "200",
481
+ "pz": "50000",
509
482
  "po": "1",
510
- "np": "1",
483
+ "np": "2",
511
484
  "ut": "bd1d9ddb04089700cf9c27f6f7426281",
512
485
  "fltt": "2",
513
486
  "invt": "2",
@@ -519,21 +492,8 @@ def bond_cov_comparison() -> pd.DataFrame:
519
492
  }
520
493
  r = requests.get(url, params=params)
521
494
  text_data = r.text
522
- data_json = demjson.decode(text_data)
523
- total_page = math.ceil(data_json["data"]["total"] / 200)
524
- temp_list = []
525
- tqdm = get_tqdm()
526
- for page in tqdm(range(1, total_page + 1), leave=False):
527
- params.update(
528
- {
529
- "pn": page,
530
- }
531
- )
532
- r = requests.get(url, params=params, timeout=15)
533
- data_json = r.json()
534
- inner_temp_df = pd.DataFrame(data_json["data"]["diff"])
535
- temp_list.append(inner_temp_df)
536
- temp_df = pd.concat(temp_list, ignore_index=True)
495
+ json_data = demjson.decode(text_data)
496
+ temp_df = pd.DataFrame(json_data["data"]["diff"]).T
537
497
  temp_df.reset_index(inplace=True)
538
498
  temp_df["index"] = range(1, len(temp_df) + 1)
539
499
  temp_df.columns = [
@@ -673,6 +633,8 @@ def bond_zh_cov_info(
673
633
  data_json = r.json()
674
634
  temp_df = pd.DataFrame.from_dict(data_json["result"]["data"])
675
635
  return temp_df
636
+ else:
637
+ return pd.DataFrame()
676
638
 
677
639
 
678
640
  def bond_zh_cov_value_analysis(symbol: str = "113527") -> pd.DataFrame:
@@ -1,18 +1,15 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2025/2/16 18:10
4
+ Date: 2025/2/24 18:20
5
5
  Desc: 东方财富网-指数行情数据
6
6
  """
7
7
 
8
- import math
9
8
  from functools import lru_cache
10
9
 
11
10
  import pandas as pd
12
11
  import requests
13
12
 
14
- from akshare.utils.tqdm import get_tqdm
15
-
16
13
 
17
14
  @lru_cache()
18
15
  def index_code_id_map_em() -> dict:
@@ -25,105 +22,69 @@ def index_code_id_map_em() -> dict:
25
22
  url = "https://80.push2.eastmoney.com/api/qt/clist/get"
26
23
  params = {
27
24
  "pn": "1",
28
- "pz": "200",
25
+ "pz": "50000",
29
26
  "po": "1",
30
- "np": "1",
27
+ "np": "2",
31
28
  "ut": "bd1d9ddb04089700cf9c27f6f7426281",
32
29
  "fltt": "2",
33
30
  "invt": "2",
34
- "fid": "f12",
31
+ "fid": "f3",
35
32
  "fs": "m:1 t:2,m:1 t:23",
36
33
  "fields": "f12",
37
34
  "_": "1623833739532",
38
35
  }
39
36
  r = requests.get(url, params=params)
40
37
  data_json = r.json()
41
- total_page = math.ceil(data_json["data"]["total"] / 200)
42
- temp_list = []
43
- tqdm = get_tqdm()
44
- for page in tqdm(range(1, total_page + 1), leave=False):
45
- params.update(
46
- {
47
- "pn": page,
48
- }
49
- )
50
- r = requests.get(url, params=params, timeout=15)
51
- data_json = r.json()
52
- inner_temp_df = pd.DataFrame(data_json["data"]["diff"])
53
- temp_list.append(inner_temp_df)
54
- temp_df = pd.concat(temp_list, ignore_index=True)
38
+ if not data_json["data"]["diff"]:
39
+ return dict()
40
+ temp_df = pd.DataFrame(data_json["data"]["diff"]).T
55
41
  temp_df["market_id"] = 1
56
42
  temp_df.columns = ["sh_code", "sh_id"]
57
43
  code_id_dict = dict(zip(temp_df["sh_code"], temp_df["sh_id"]))
58
44
  params = {
59
45
  "pn": "1",
60
- "pz": "200",
46
+ "pz": "10000",
61
47
  "po": "1",
62
- "np": "1",
48
+ "np": "2",
63
49
  "ut": "bd1d9ddb04089700cf9c27f6f7426281",
64
50
  "fltt": "2",
65
51
  "invt": "2",
66
- "fid": "f12",
52
+ "fid": "f3",
67
53
  "fs": "m:0 t:6,m:0 t:80",
68
54
  "fields": "f12",
69
55
  "_": "1623833739532",
70
56
  }
71
57
  r = requests.get(url, params=params)
72
58
  data_json = r.json()
73
- total_page = math.ceil(data_json["data"]["total"] / 200)
74
- temp_list = []
75
- tqdm = get_tqdm()
76
- for page in tqdm(range(1, total_page + 1), leave=False):
77
- params.update(
78
- {
79
- "pn": page,
80
- }
81
- )
82
- r = requests.get(url, params=params, timeout=15)
83
- data_json = r.json()
84
- inner_temp_df = pd.DataFrame(data_json["data"]["diff"])
85
- temp_list.append(inner_temp_df)
86
- temp_df_sz = pd.concat(temp_list, ignore_index=True)
59
+ if not data_json["data"]["diff"]:
60
+ return dict()
61
+ temp_df_sz = pd.DataFrame(data_json["data"]["diff"]).T
87
62
  temp_df_sz["sz_id"] = 0
88
63
  code_id_dict.update(dict(zip(temp_df_sz["f12"], temp_df_sz["sz_id"])))
89
-
90
64
  params = {
91
65
  "pn": "1",
92
- "pz": "200",
66
+ "pz": "10000",
93
67
  "po": "1",
94
- "np": "1",
68
+ "np": "2",
95
69
  "ut": "bd1d9ddb04089700cf9c27f6f7426281",
96
70
  "fltt": "2",
97
71
  "invt": "2",
98
- "fid": "f12",
72
+ "fid": "f3",
99
73
  "fs": "m:0 t:81 s:2048",
100
74
  "fields": "f12",
101
75
  "_": "1623833739532",
102
76
  }
103
77
  r = requests.get(url, params=params)
104
78
  data_json = r.json()
105
- total_page = math.ceil(data_json["data"]["total"] / 200)
106
- temp_list = []
107
- tqdm = get_tqdm()
108
- for page in tqdm(range(1, total_page + 1), leave=False):
109
- params.update(
110
- {
111
- "pn": page,
112
- }
113
- )
114
- r = requests.get(url, params=params, timeout=15)
115
- data_json = r.json()
116
- inner_temp_df = pd.DataFrame(data_json["data"]["diff"])
117
- temp_list.append(inner_temp_df)
118
- temp_df_sz = pd.concat(temp_list, ignore_index=True)
79
+ if not data_json["data"]["diff"]:
80
+ return dict()
81
+ temp_df_sz = pd.DataFrame(data_json["data"]["diff"]).T
119
82
  temp_df_sz["bj_id"] = 0
120
83
  code_id_dict.update(dict(zip(temp_df_sz["f12"], temp_df_sz["bj_id"])))
121
84
  code_id_dict = {
122
85
  key: value - 1 if value == 1 else value + 1
123
86
  for key, value in code_id_dict.items()
124
87
  }
125
- # 单独增加品种
126
- code_id_dict.update({"932000": 2})
127
88
  return code_id_dict
128
89
 
129
90
 
@@ -364,7 +325,7 @@ def index_zh_a_hist_min_em(
364
325
  temp_df["时间"] = pd.to_datetime(temp_df["时间"]).astype(str)
365
326
  return temp_df
366
327
  else:
367
- url = "http://push2his.eastmoney.com/api/qt/stock/kline/get"
328
+ url = "https://push2his.eastmoney.com/api/qt/stock/kline/get"
368
329
  try:
369
330
  params = {
370
331
  "secid": f"{code_id_dict[symbol]}.{symbol}",
@@ -478,8 +439,8 @@ if __name__ == "__main__":
478
439
 
479
440
  index_zh_a_hist_min_em_df = index_zh_a_hist_min_em(
480
441
  symbol="000001",
481
- period="5",
482
- start_date="2025-02-14 09:30:00",
483
- end_date="2025-02-14 19:00:00",
442
+ period="1",
443
+ start_date="2025-02-24 09:30:00",
444
+ end_date="2025-02-24 19:00:00",
484
445
  )
485
446
  print(index_zh_a_hist_min_em_df)
@@ -1,11 +1,12 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/1/3 17:00
4
+ Date: 2025/2/24 18: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
8
8
  """
9
+
9
10
  import pandas as pd
10
11
  import requests
11
12
 
@@ -17,12 +18,12 @@ def reits_realtime_em() -> pd.DataFrame:
17
18
  :return: 沪深 REITs-实时行情
18
19
  :rtype: pandas.DataFrame
19
20
  """
20
- url = "http://95.push2.eastmoney.com/api/qt/clist/get"
21
+ url = "https://95.push2.eastmoney.com/api/qt/clist/get"
21
22
  params = {
22
23
  "pn": "1",
23
- "pz": "500",
24
+ "pz": "50000",
24
25
  "po": "1",
25
- "np": "1",
26
+ "np": "2",
26
27
  "ut": "bd1d9ddb04089700cf9c27f6f7426281",
27
28
  "fltt": "2",
28
29
  "invt": "2",
@@ -33,7 +34,7 @@ def reits_realtime_em() -> pd.DataFrame:
33
34
  }
34
35
  r = requests.get(url, params=params)
35
36
  data_json = r.json()
36
- temp_df = pd.DataFrame(data_json["data"]["diff"])
37
+ temp_df = pd.DataFrame(data_json["data"]["diff"]).T
37
38
  temp_df.reset_index(inplace=True)
38
39
  temp_df["index"] = range(1, len(temp_df) + 1)
39
40
  temp_df.rename(
@@ -69,15 +70,15 @@ def reits_realtime_em() -> pd.DataFrame:
69
70
  "昨收",
70
71
  ]
71
72
  ]
72
- temp_df['最新价'] = pd.to_numeric(temp_df['最新价'], errors="coerce")
73
- temp_df['涨跌额'] = pd.to_numeric(temp_df['涨跌额'], errors="coerce")
74
- temp_df['涨跌幅'] = pd.to_numeric(temp_df['涨跌幅'], errors="coerce")
75
- temp_df['成交量'] = pd.to_numeric(temp_df['成交量'], errors="coerce")
76
- temp_df['成交额'] = pd.to_numeric(temp_df['成交额'], errors="coerce")
77
- temp_df['开盘价'] = pd.to_numeric(temp_df['开盘价'], errors="coerce")
78
- temp_df['最高价'] = pd.to_numeric(temp_df['最高价'], errors="coerce")
79
- temp_df['最低价'] = pd.to_numeric(temp_df['最低价'], errors="coerce")
80
- temp_df['昨收'] = pd.to_numeric(temp_df['昨收'], errors="coerce")
73
+ temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
74
+ temp_df["涨跌额"] = pd.to_numeric(temp_df["涨跌额"], errors="coerce")
75
+ temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce")
76
+ temp_df["成交量"] = pd.to_numeric(temp_df["成交量"], errors="coerce")
77
+ temp_df["成交额"] = pd.to_numeric(temp_df["成交额"], errors="coerce")
78
+ temp_df["开盘价"] = pd.to_numeric(temp_df["开盘价"], errors="coerce")
79
+ temp_df["最高价"] = pd.to_numeric(temp_df["最高价"], errors="coerce")
80
+ temp_df["最低价"] = pd.to_numeric(temp_df["最低价"], errors="coerce")
81
+ temp_df["昨收"] = pd.to_numeric(temp_df["昨收"], errors="coerce")
81
82
  return temp_df
82
83
 
83
84
 
@@ -636,7 +636,7 @@ def _get_stock_sector_fund_flow_summary_code() -> dict:
636
636
  }
637
637
  params = {
638
638
  "pn": "1",
639
- "pz": "5000",
639
+ "pz": "50000",
640
640
  "po": "1",
641
641
  "np": "2",
642
642
  "ut": "b2884a393a59ad64002292a3e90d46a5",
@@ -675,9 +675,9 @@ def stock_sector_fund_flow_summary(
675
675
  params = {
676
676
  "fid": "f62",
677
677
  "po": "1",
678
- "pz": "500",
678
+ "pz": "5000",
679
679
  "pn": "1",
680
- "np": "1",
680
+ "np": "2",
681
681
  "fltt": "2",
682
682
  "invt": "2",
683
683
  "fs": f"b:{code_name_map[symbol]}",
@@ -685,9 +685,9 @@ def stock_sector_fund_flow_summary(
685
685
  }
686
686
  r = requests.get(url, params=params)
687
687
  data_json = r.json()
688
- temp_df = pd.DataFrame(data_json["data"]["diff"])
688
+ temp_df = pd.DataFrame(data_json["data"]["diff"]).T
689
689
  temp_df.reset_index(inplace=True)
690
- temp_df["index"] = temp_df["index"] + 1
690
+ temp_df["index"] = temp_df["index"].astype(int) + 1
691
691
  temp_df.rename(
692
692
  columns={
693
693
  "index": "序号",
@@ -764,9 +764,9 @@ def stock_sector_fund_flow_summary(
764
764
  params = {
765
765
  "fid": "f164",
766
766
  "po": "1",
767
- "pz": "500",
767
+ "pz": "50000",
768
768
  "pn": "1",
769
- "np": "1",
769
+ "np": "2",
770
770
  "fltt": "2",
771
771
  "invt": "2",
772
772
  "fs": f"b:{code_name_map[symbol]}",
@@ -774,9 +774,9 @@ def stock_sector_fund_flow_summary(
774
774
  }
775
775
  r = requests.get(url, params=params)
776
776
  data_json = r.json()
777
- temp_df = pd.DataFrame(data_json["data"]["diff"])
777
+ temp_df = pd.DataFrame(data_json["data"]["diff"]).T
778
778
  temp_df.reset_index(inplace=True)
779
- temp_df["index"] = temp_df["index"] + 1
779
+ temp_df["index"] = temp_df["index"].astype(int) + 1
780
780
  temp_df.rename(
781
781
  columns={
782
782
  "index": "序号",
@@ -853,9 +853,9 @@ def stock_sector_fund_flow_summary(
853
853
  params = {
854
854
  "fid": "f174",
855
855
  "po": "1",
856
- "pz": "500",
856
+ "pz": "50000",
857
857
  "pn": "1",
858
- "np": "1",
858
+ "np": "2",
859
859
  "fltt": "2",
860
860
  "invt": "2",
861
861
  "fs": f"b:{code_name_map[symbol]}",
@@ -863,9 +863,9 @@ def stock_sector_fund_flow_summary(
863
863
  }
864
864
  r = requests.get(url, params=params)
865
865
  data_json = r.json()
866
- temp_df = pd.DataFrame(data_json["data"]["diff"])
866
+ temp_df = pd.DataFrame(data_json["data"]["diff"]).T
867
867
  temp_df.reset_index(inplace=True)
868
- temp_df["index"] = temp_df["index"] + 1
868
+ temp_df["index"] = temp_df["index"].astype(int) + 1
869
869
  temp_df.rename(
870
870
  columns={
871
871
  "index": "序号",
@@ -942,7 +942,7 @@ def stock_sector_fund_flow_summary(
942
942
  return pd.DataFrame()
943
943
 
944
944
 
945
- def stock_sector_fund_flow_hist(symbol: str = "电源设备") -> pd.DataFrame:
945
+ def stock_sector_fund_flow_hist(symbol: str = "汽车服务") -> pd.DataFrame:
946
946
  """
947
947
  东方财富网-数据中心-资金流向-行业资金流-行业历史资金流
948
948
  https://data.eastmoney.com/bkzj/BK1034.html
@@ -1045,7 +1045,7 @@ def _get_stock_concept_fund_flow_summary_code() -> dict:
1045
1045
  }
1046
1046
  params = {
1047
1047
  "pn": "1",
1048
- "pz": "5000",
1048
+ "pz": "50000",
1049
1049
  "po": "1",
1050
1050
  "np": "2",
1051
1051
  "fields": "f12,f13,f14,f62",
@@ -1061,7 +1061,7 @@ def _get_stock_concept_fund_flow_summary_code() -> dict:
1061
1061
  return name_code_map
1062
1062
 
1063
1063
 
1064
- def stock_concept_fund_flow_hist(symbol: str = "锂电池") -> pd.DataFrame:
1064
+ def stock_concept_fund_flow_hist(symbol: str = "数据要素") -> pd.DataFrame:
1065
1065
  """
1066
1066
  东方财富网-数据中心-资金流向-概念资金流-概念历史资金流
1067
1067
  https://data.eastmoney.com/bkzj/BK0574.html
@@ -1302,10 +1302,10 @@ if __name__ == "__main__":
1302
1302
  )
1303
1303
  print(stock_sector_fund_flow_summary_df)
1304
1304
 
1305
- stock_sector_fund_flow_hist_df = stock_sector_fund_flow_hist(symbol="电源设备")
1305
+ stock_sector_fund_flow_hist_df = stock_sector_fund_flow_hist(symbol="汽车服务")
1306
1306
  print(stock_sector_fund_flow_hist_df)
1307
1307
 
1308
- stock_concept_fund_flow_hist_df = stock_concept_fund_flow_hist(symbol="电源设备")
1308
+ stock_concept_fund_flow_hist_df = stock_concept_fund_flow_hist(symbol="数据要素")
1309
1309
  print(stock_concept_fund_flow_hist_df)
1310
1310
 
1311
1311
  stock_main_fund_flow_df = stock_main_fund_flow(symbol="全部股票")
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/7/26 18:30
4
+ Date: 2025/2/24 18:30
5
5
  Desc: 东方财富网-行情中心-港股市场-知名港股
6
6
  https://quote.eastmoney.com/center/gridlist.html#hk_wellknown
7
7
  """
@@ -20,9 +20,9 @@ def stock_hk_famous_spot_em() -> pd.DataFrame:
20
20
  url = "https://69.push2.eastmoney.com/api/qt/clist/get"
21
21
  params = {
22
22
  "pn": "1",
23
- "pz": "2000",
23
+ "pz": "50000",
24
24
  "po": "1",
25
- "np": "1",
25
+ "np": "2",
26
26
  "ut": "bd1d9ddb04089700cf9c27f6f7426281",
27
27
  "fltt": "2",
28
28
  "invt": "2",
@@ -36,7 +36,7 @@ def stock_hk_famous_spot_em() -> pd.DataFrame:
36
36
  }
37
37
  r = requests.get(url, params=params)
38
38
  data_json = r.json()
39
- temp_df = pd.DataFrame(data_json["data"]["diff"])
39
+ temp_df = pd.DataFrame(data_json["data"]["diff"]).T
40
40
  temp_df.columns = [
41
41
  "_",
42
42
  "最新价",
@@ -1,20 +1,17 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2025/2/17 14:00
4
+ Date: 2025/2/24 18:00
5
5
  Desc: 东财财富-日内分时数据
6
6
  https://quote.eastmoney.com/f1.html?newcode=0.000001
7
7
  """
8
8
 
9
9
  import json
10
- import math
11
10
  from functools import lru_cache
12
11
 
13
12
  import pandas as pd
14
13
  import requests
15
14
 
16
- from akshare.utils.tqdm import get_tqdm
17
-
18
15
 
19
16
  @lru_cache()
20
17
  def __code_id_map_em() -> dict:
@@ -24,16 +21,16 @@ def __code_id_map_em() -> dict:
24
21
  :return: 股票和市场代码
25
22
  :rtype: dict
26
23
  """
27
- url = "http://80.push2.eastmoney.com/api/qt/clist/get"
24
+ url = "https://80.push2.eastmoney.com/api/qt/clist/get"
28
25
  params = {
29
26
  "pn": "1",
30
- "pz": "200",
27
+ "pz": "50000",
31
28
  "po": "1",
32
- "np": "1",
29
+ "np": "2",
33
30
  "ut": "bd1d9ddb04089700cf9c27f6f7426281",
34
31
  "fltt": "2",
35
32
  "invt": "2",
36
- "fid": "f12",
33
+ "fid": "f3",
37
34
  "fs": "m:1 t:2,m:1 t:23",
38
35
  "fields": "f12",
39
36
  "_": "1623833739532",
@@ -42,32 +39,19 @@ def __code_id_map_em() -> dict:
42
39
  data_json = r.json()
43
40
  if not data_json["data"]["diff"]:
44
41
  return dict()
45
- total_page = math.ceil(data_json["data"]["total"] / 200)
46
- temp_list = []
47
- tqdm = get_tqdm()
48
- for page in tqdm(range(1, total_page + 1), leave=False):
49
- params.update(
50
- {
51
- "pn": page,
52
- }
53
- )
54
- r = requests.get(url, params=params, timeout=15)
55
- data_json = r.json()
56
- inner_temp_df = pd.DataFrame(data_json["data"]["diff"])
57
- temp_list.append(inner_temp_df)
58
- temp_df = pd.concat(temp_list, ignore_index=True)
42
+ temp_df = pd.DataFrame(data_json["data"]["diff"]).T
59
43
  temp_df["market_id"] = 1
60
44
  temp_df.columns = ["sh_code", "sh_id"]
61
45
  code_id_dict = dict(zip(temp_df["sh_code"], temp_df["sh_id"]))
62
46
  params = {
63
47
  "pn": "1",
64
- "pz": "200",
48
+ "pz": "50000",
65
49
  "po": "1",
66
- "np": "1",
50
+ "np": "2",
67
51
  "ut": "bd1d9ddb04089700cf9c27f6f7426281",
68
52
  "fltt": "2",
69
53
  "invt": "2",
70
- "fid": "f12",
54
+ "fid": "f3",
71
55
  "fs": "m:0 t:6,m:0 t:80",
72
56
  "fields": "f12",
73
57
  "_": "1623833739532",
@@ -76,31 +60,18 @@ def __code_id_map_em() -> dict:
76
60
  data_json = r.json()
77
61
  if not data_json["data"]["diff"]:
78
62
  return dict()
79
- total_page = math.ceil(data_json["data"]["total"] / 200)
80
- temp_list = []
81
- tqdm = get_tqdm()
82
- for page in tqdm(range(1, total_page + 1), leave=False):
83
- params.update(
84
- {
85
- "pn": page,
86
- }
87
- )
88
- r = requests.get(url, params=params, timeout=15)
89
- data_json = r.json()
90
- inner_temp_df = pd.DataFrame(data_json["data"]["diff"])
91
- temp_list.append(inner_temp_df)
92
- temp_df_sz = pd.concat(temp_list, ignore_index=True)
63
+ temp_df_sz = pd.DataFrame(data_json["data"]["diff"]).T
93
64
  temp_df_sz["sz_id"] = 0
94
65
  code_id_dict.update(dict(zip(temp_df_sz["f12"], temp_df_sz["sz_id"])))
95
66
  params = {
96
67
  "pn": "1",
97
- "pz": "200",
68
+ "pz": "50000",
98
69
  "po": "1",
99
- "np": "1",
70
+ "np": "2",
100
71
  "ut": "bd1d9ddb04089700cf9c27f6f7426281",
101
72
  "fltt": "2",
102
73
  "invt": "2",
103
- "fid": "f12",
74
+ "fid": "f3",
104
75
  "fs": "m:0 t:81 s:2048",
105
76
  "fields": "f12",
106
77
  "_": "1623833739532",
@@ -109,20 +80,7 @@ def __code_id_map_em() -> dict:
109
80
  data_json = r.json()
110
81
  if not data_json["data"]["diff"]:
111
82
  return dict()
112
- total_page = math.ceil(data_json["data"]["total"] / 200)
113
- temp_list = []
114
- tqdm = get_tqdm()
115
- for page in tqdm(range(1, total_page + 1), leave=False):
116
- params.update(
117
- {
118
- "pn": page,
119
- }
120
- )
121
- r = requests.get(url, params=params, timeout=15)
122
- data_json = r.json()
123
- inner_temp_df = pd.DataFrame(data_json["data"]["diff"])
124
- temp_list.append(inner_temp_df)
125
- temp_df_sz = pd.concat(temp_list, ignore_index=True)
83
+ temp_df_sz = pd.DataFrame(data_json["data"]["diff"]).T
126
84
  temp_df_sz["bj_id"] = 0
127
85
  code_id_dict.update(dict(zip(temp_df_sz["f12"], temp_df_sz["bj_id"])))
128
86
  return code_id_dict
@@ -163,7 +121,9 @@ def stock_intraday_em(symbol: str = "000001") -> pd.DataFrame:
163
121
  "secid": f"{code_id_map_em_dict[symbol]}.{symbol}",
164
122
  "wbp2u": "|0|0|0|web",
165
123
  }
124
+
166
125
  big_df = pd.DataFrame() # 创建一个空的 DataFrame
126
+
167
127
  for event in __event_stream(url, params):
168
128
  # 从每个事件的数据行中删除 "data: ",然后解析 JSON
169
129
  event_json = json.loads(event.replace("data: ", ""))
@@ -1,10 +1,11 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2021/6/2 16:33
4
+ Date: 2025/2/24 18:33
5
5
  Desc: 两网及退市
6
6
  https://quote.eastmoney.com/center/gridlist.html#staq_net_board
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
@@ -16,12 +17,12 @@ def stock_staq_net_stop() -> pd.DataFrame:
16
17
  :return: 两网及退市
17
18
  :rtype: pandas.DataFrame
18
19
  """
19
- url = "http://5.push2.eastmoney.com/api/qt/clist/get"
20
+ url = "https://5.push2.eastmoney.com/api/qt/clist/get"
20
21
  params = {
21
22
  "pn": "1",
22
- "pz": "2000",
23
+ "pz": "50000",
23
24
  "po": "1",
24
- "np": "1",
25
+ "np": "2",
25
26
  "ut": "bd1d9ddb04089700cf9c27f6f7426281",
26
27
  "fltt": "2",
27
28
  "invt": "2",
@@ -32,7 +33,7 @@ def stock_staq_net_stop() -> pd.DataFrame:
32
33
  }
33
34
  r = requests.get(url, params=params)
34
35
  data_json = r.json()
35
- temp_df = pd.DataFrame(data_json["data"]["diff"])
36
+ temp_df = pd.DataFrame(data_json["data"]["diff"]).T
36
37
  temp_df.reset_index(inplace=True)
37
38
  temp_df["index"] = temp_df.index + 1
38
39
  temp_df.columns = ["序号", "代码", "名称"]
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/7/24 13:30
4
+ Date: 2025/2/24 18:30
5
5
  Desc: 东方财富网-行情中心-美股市场-知名美股
6
6
  https://quote.eastmoney.com/center/gridlist.html#us_wellknown
7
7
  """
@@ -30,9 +30,9 @@ def stock_us_famous_spot_em(symbol: str = "科技类") -> pd.DataFrame:
30
30
  url = "https://69.push2.eastmoney.com/api/qt/clist/get"
31
31
  params = {
32
32
  "pn": "1",
33
- "pz": "2000",
33
+ "pz": "50000",
34
34
  "po": "1",
35
- "np": "1",
35
+ "np": "2",
36
36
  "ut": "bd1d9ddb04089700cf9c27f6f7426281",
37
37
  "fltt": "2",
38
38
  "invt": "2",
@@ -44,7 +44,7 @@ def stock_us_famous_spot_em(symbol: str = "科技类") -> pd.DataFrame:
44
44
  }
45
45
  r = requests.get(url, params=params)
46
46
  data_json = r.json()
47
- temp_df = pd.DataFrame(data_json["data"]["diff"])
47
+ temp_df = pd.DataFrame(data_json["data"]["diff"]).T
48
48
  temp_df.columns = [
49
49
  "_",
50
50
  "最新价",
@@ -482,7 +482,7 @@ def stock_new_a_spot_em() -> pd.DataFrame:
482
482
  "pn": "1",
483
483
  "pz": "50000",
484
484
  "po": "1",
485
- "np": "1",
485
+ "np": "2",
486
486
  "ut": "bd1d9ddb04089700cf9c27f6f7426281",
487
487
  "fltt": "2",
488
488
  "invt": "2",
@@ -497,7 +497,7 @@ def stock_new_a_spot_em() -> pd.DataFrame:
497
497
  data_json = r.json()
498
498
  if not data_json["data"]["diff"]:
499
499
  return pd.DataFrame()
500
- temp_df = pd.DataFrame(data_json["data"]["diff"])
500
+ temp_df = pd.DataFrame(data_json["data"]["diff"]).T
501
501
  temp_df.columns = [
502
502
  "_",
503
503
  "最新价",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: akshare
3
- Version: 1.16.10
3
+ Version: 1.16.12
4
4
  Summary: AKShare is an elegant and simple financial data interface library for Python, built for human beings!
5
5
  Home-page: https://github.com/akfamily/akshare
6
6
  Author: AKFamily
@@ -1,4 +1,4 @@
1
- akshare/__init__.py,sha256=GnoafSM2cc42DZ931gdHom1GoGpZWs1LX-bEvD8w1A0,188030
1
+ akshare/__init__.py,sha256=y1ICmG9b6wRbWBFgtOpzo5zqzineoLFjo_cj-bDWMyw,188123
2
2
  akshare/datasets.py,sha256=rKuRNZrqi6IMsZ9nyvO3Rx02js0tH3zMLjz8HQNAoPQ,963
3
3
  akshare/exceptions.py,sha256=WEJjIhSmJ_xXNW6grwV4nufE_cfmmyuhmueVGiN1VAg,878
4
4
  akshare/request.py,sha256=HtFFf9MhfEibR-ETWe-1Tts6ELU4VKSqA-ghaXjegQM,4252
@@ -30,7 +30,7 @@ akshare/bond/bond_info_cm.py,sha256=VBu9UM9tUcGDRV07pndU9yttLDF_Nk3b0vU0n65qpHs,
30
30
  akshare/bond/bond_issue_cninfo.py,sha256=tPoZhF-_sIX9ztCKB0K0-Z4Kd9b-389bP3_CdFK7Wb0,21672
31
31
  akshare/bond/bond_nafmii.py,sha256=cekcobyXKMG1zDuM8wHWOn__SuWELxYmUwfGVmLRP40,2155
32
32
  akshare/bond/bond_summary.py,sha256=ECwCRcs5YMIro4I1Yayf6SZ8nz1Hr97RhmKT6aGaQDg,3581
33
- akshare/bond/bond_zh_cov.py,sha256=bdTEi-uS4WfvHW59fPn2AJGtrnsqRiKdH3eRKqjHtNM,25085
33
+ akshare/bond/bond_zh_cov.py,sha256=b5TPHCgqdblMPFR8lxUNLwvLWHn90q--IF2GlmCCTTU,23799
34
34
  akshare/bond/bond_zh_sina.py,sha256=msj7upgqaCTzC_MxzhUm7hVKtzHeWRUjlcjvZn2zlbw,4654
35
35
  akshare/bond/cons.py,sha256=SGqjMqRYwJlEb8UczxdcrtcD7I2SAVULXARGEedEQfE,1792
36
36
  akshare/cal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -173,7 +173,7 @@ akshare/index/index_sugar.py,sha256=B_Nj9Q6JP-Y_d7myZ0C79izTxxrbuZIp1Vv_CilVMOc,
173
173
  akshare/index/index_sw.py,sha256=hETMmFszQb7JDY8UHjLK8szfwkr7Ui_6QcseOoEfxaI,10456
174
174
  akshare/index/index_yw.py,sha256=6FF38kooLQulnMTqAd1__TNWip4XC1VA72k3T049xYc,4319
175
175
  akshare/index/index_zh_a_scope.py,sha256=4Ej2Gnqtd66EBiI67sQZKhblcIJXdD5CoMIJYD_KwYU,1367
176
- akshare/index/index_zh_em.py,sha256=GVInuhgb1MpANo7rz96c1Cj_MHOY7Z7lYjgP1VaZtrg,17616
176
+ akshare/index/index_zh_em.py,sha256=5UseU40Mk-XO3vyTbrq6GHiLdG4_-c5iZXHVdCNw4o0,16362
177
177
  akshare/interest_rate/__init__.py,sha256=O6dl1roEQUWwtXgRpa6wOABUU7MH0YmFDrkfhBpYOX4,81
178
178
  akshare/interest_rate/interbank_rate_em.py,sha256=iKvmWxM4bpl9JgHNvavq0yhzMRq69BPEON1cGcWJrf4,4549
179
179
  akshare/movie/__init__.py,sha256=YzijIIzvGpcc9hORC6qJSEK6vkjH5c4Docb5tQq2iHs,82
@@ -220,7 +220,7 @@ akshare/qhkc_web/qhkc_tool.py,sha256=pkazsrQQ-pAQgERzHxXWHnEI1iZvo-dGO089c4LGHT8
220
220
  akshare/rate/__init__.py,sha256=gXRhfZhrFm7iIQMmkNkl-ZQUyim2wHyZLVllHQlwO1Q,83
221
221
  akshare/rate/repo_rate.py,sha256=BvTBSQrIwNurGErFwmNW9WjfCbOayJl8dNhs6eqUgE4,4243
222
222
  akshare/reits/__init__.py,sha256=0MO0aWWC8jQBth2IPl3W63vZKvuDb1OJqIpHE-sCQVU,82
223
- akshare/reits/reits_basic.py,sha256=gxQeP8_K7SYjBT9zkKuVRRi8B4SPOHNqVdXe_UvTWTY,2730
223
+ akshare/reits/reits_basic.py,sha256=jTOvS1uS_Yxx8RihXcxOr8BiZZtOFi9SG4Ixanfla2A,2737
224
224
  akshare/sport/__init__.py,sha256=aMsxmuOMZFkcI8tGmQanhPyPwyBpdeApAWyCtDRKMeg,81
225
225
  akshare/sport/sport_olympic.py,sha256=CB1cvLpz2BWuadfonhHuQ17Qxt9X_3ks0Zc5Bff2w9k,818
226
226
  akshare/spot/__init__.py,sha256=VGuha94pXYoezmMs3F3Q_ofaN8RZIrkJ2NtVv8hWCjY,83
@@ -238,10 +238,10 @@ akshare/stock/stock_cg_guarantee.py,sha256=ts7qcQhhyN1PHB7Q4XlMn38HhfVvubOvky9RZ
238
238
  akshare/stock/stock_cg_lawsuit.py,sha256=6Y92pPw0JgyrInteqHuU07G1jwmdX2wjaDtrJN8y6Hg,4129
239
239
  akshare/stock/stock_dividend_cninfo.py,sha256=_vipLQu94qBDoPkaIWZKRFA0mFfgroUMnn5EdLcjAc4,3195
240
240
  akshare/stock/stock_dzjy_em.py,sha256=QMo2w-_I9UnmCr1IXk_InFeW5ok_GpRE9HdWFDUdGyM,22556
241
- akshare/stock/stock_fund_em.py,sha256=ZtDX_llsN4Wxm6IcoGMLV0Xoy0n6CIuDpXVps5OBQS8,48920
241
+ akshare/stock/stock_fund_em.py,sha256=xGbMhFGOaxN7zhDlxcHWjo2WRZ95pu9dsvBSb2tDBYc,48972
242
242
  akshare/stock/stock_fund_hold.py,sha256=iFEmRFber7MF6aPi0QOJxpvYjO7I26KouUvC-xTQdCk,6056
243
243
  akshare/stock/stock_gsrl_em.py,sha256=oy5vO681ZPTEehZgz10T8jgIQ8dNm_E7MXGr1PGoHqI,1951
244
- akshare/stock/stock_hk_famous.py,sha256=g-p1cdRibei9fw2HEMPyarLP-wT4bFwIK7Mxi77jH9E,3015
244
+ akshare/stock/stock_hk_famous.py,sha256=uF1iUkrwvMMxvxE3-O7byxQ-oS0SjlMBwOEraTBA41s,3018
245
245
  akshare/stock/stock_hk_fhpx_ths.py,sha256=68soKJIOMoAGuCvJIMZBVU-2wL_umtv67SuqVzl2C14,2191
246
246
  akshare/stock/stock_hk_hot_rank_em.py,sha256=IhLGahWXfYPQRrCoB1Ph7DRbs_39BcrmXpIgXgEkttg,4746
247
247
  akshare/stock/stock_hk_sina.py,sha256=7tD7P4lo6U40s-jkS9E128voZgYx75vbxmG3M0LyqNg,9589
@@ -257,7 +257,7 @@ akshare/stock/stock_industry_pe_cninfo.py,sha256=0OjjsFGG90zJRZEBqaCsjKSpSAgrp3P
257
257
  akshare/stock/stock_industry_sw.py,sha256=C0FjDg976EA0EksRS3sChbmJOZmOPEOzKCrHVs2YqTg,1441
258
258
  akshare/stock/stock_info.py,sha256=AqzLzsTlYTSExBtyrZZBjI-D-VROj9e7Sq37WKHJ7XQ,16314
259
259
  akshare/stock/stock_info_em.py,sha256=F-K8ZzWW70KTzShP82semh8RKklUEot2zxuzNDum20I,2615
260
- akshare/stock/stock_intraday_em.py,sha256=cm0qKVeCOqmjqd3WxqwjMCoa1uMA2zb98f6HX9_pIPQ,5905
260
+ akshare/stock/stock_intraday_em.py,sha256=s3gAzG0-6gYj407WePpoNXVyKUZB-siOOw1xZbBYIF4,4538
261
261
  akshare/stock/stock_intraday_sina.py,sha256=7LzXRwjdPo-BHwvs8244-MFiGriPUCFBJqRW-r9iVB4,2359
262
262
  akshare/stock/stock_ipo_summary_cninfo.py,sha256=Ma-54GsOOhRWxilLH-Qmm0VVbpJQGf2XWKaJ8NBSgAY,3847
263
263
  akshare/stock/stock_new_cninfo.py,sha256=EOuZowDLQSSHyPAwXcuPXbQkqhbz2nRBZsM7o2ZWILE,5725
@@ -267,9 +267,9 @@ akshare/stock/stock_rank_forecast.py,sha256=5U0fa4tzhqKrw5kDRahUCFSrbrEx_aRtlqZq
267
267
  akshare/stock/stock_repurchase_em.py,sha256=XVAUD_yd48wqxbMbfU0Ne2SNFOSG9NBklUhf3pl6cKc,5000
268
268
  akshare/stock/stock_share_changes_cninfo.py,sha256=siy4PiZgYuNQn5jUUg2G7CyZ_yvuXNi3MVUDFhe5npY,4923
269
269
  akshare/stock/stock_share_hold.py,sha256=sKiWH69n8_MQohi0qZ3Br-WQRq9I7S0USrb-tMVinb0,11028
270
- akshare/stock/stock_stop.py,sha256=8HyazJAFj-s12ujUtrxO8VPXyA5bF9-3eNEj0qzGwMg,1185
270
+ akshare/stock/stock_stop.py,sha256=hK6U02jyVyRe2BPmzxBDw1kujy7XgUo_Ky_rjewtBaE,1191
271
271
  akshare/stock/stock_summary.py,sha256=rtJImzACxpGRqYGe9-yNTzsSZDlsG1Uns18sDIgunZY,11204
272
- akshare/stock/stock_us_famous.py,sha256=enx_-EzEJWAhrMVQZaN83ETY_YEWO2xEStRm6z3upO0,3655
272
+ akshare/stock/stock_us_famous.py,sha256=C0JjmaLi1D4fFtTmPSYOnIvetW2mSbRCalwHjZnv638,3658
273
273
  akshare/stock/stock_us_js.py,sha256=wwZpRvVHqjxwd0cb2O5vtRW8Zw90Kdl5O4XNwoevN64,2502
274
274
  akshare/stock/stock_us_pink.py,sha256=BX7-tG4Zs0k2vSYGxHH0Yob-moD6AAu2a-ytZpxgIRQ,3065
275
275
  akshare/stock/stock_us_sina.py,sha256=D4fhJgpmvnlVoeSV2wQQ7H6lig8h6vaJp71o88dZhDg,8200
@@ -311,7 +311,7 @@ akshare/stock_feature/stock_gdhs.py,sha256=Z6ZMy1A03BqMu9TghcIu2Sd_wwEtpIH7qawHu
311
311
  akshare/stock_feature/stock_gdzjc_em.py,sha256=SHJH5iS3_NhvjTqRXF0vPooZl0s_ASeyZmNCC50ZYqs,4426
312
312
  akshare/stock_feature/stock_gpzy_em.py,sha256=FgyjVgdoxrtMM7WwxdQJxK0mYGJklIHaT9KmMCFmEPM,17869
313
313
  akshare/stock_feature/stock_gxl_lg.py,sha256=I8TpDEpFzadZSSyZisyIk6163mJlRxup91dmlBH4t4U,2641
314
- akshare/stock_feature/stock_hist_em.py,sha256=izbhwdVCUp672hvHBSNpP4eXdFd1NDlJkUW-Z42KBDo,69295
314
+ akshare/stock_feature/stock_hist_em.py,sha256=uxkhxn3O-JdvR29T7jhSkpgsPJkHHZsnUerG0bgg90w,69297
315
315
  akshare/stock_feature/stock_hist_tx.py,sha256=WpLsbkG2didSx7lYNkSbTWNTrLhUKbcopfD18WO2Rlc,3397
316
316
  akshare/stock_feature/stock_hk_valuation_baidu.py,sha256=_sErx4UhNsSXJgXyPfrL0aPxkW53Mg1zH9gEKoziaCA,1968
317
317
  akshare/stock_feature/stock_hot_xq.py,sha256=NmoH4x-0hiDztj-YwzMFVIyOICQ2wUUBbhjt91q-tq4,9112
@@ -380,8 +380,8 @@ akshare/utils/token_process.py,sha256=K4rGXjh_tgugbRcyOK2h2x0jP3PT65IIK7nxhUKhOe
380
380
  akshare/utils/tqdm.py,sha256=MuPNwcswkOGjwWQOMWXi9ZvQ_RmW4obCWRj2i7HM7FE,847
381
381
  tests/__init__.py,sha256=gNzhlO0UPjFq6Ieb38kaVIODXv4cTDByrdohAZnDYt4,82
382
382
  tests/test_func.py,sha256=j1MGYbZI2if2j_LY1S4FLsf4qfq4NwVqD5wmRlv5Log,832
383
- akshare-1.16.10.dist-info/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
384
- akshare-1.16.10.dist-info/METADATA,sha256=RNN700E4_9n33dSVXHfX6Upk4psd4Dbq2nYwi-jLTSQ,13679
385
- akshare-1.16.10.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
386
- akshare-1.16.10.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
387
- akshare-1.16.10.dist-info/RECORD,,
383
+ akshare-1.16.12.dist-info/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
384
+ akshare-1.16.12.dist-info/METADATA,sha256=s2Fmo8W02JesolTUUjuxsWv4aAJ9jTl7VeCgA97y_MM,13679
385
+ akshare-1.16.12.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
386
+ akshare-1.16.12.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
387
+ akshare-1.16.12.dist-info/RECORD,,