akshare 1.16.17__py3-none-any.whl → 1.16.19__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
@@ -3026,9 +3026,11 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
3026
3026
  1.16.15 fix: fix stock_board_concept_name_em interface
3027
3027
  1.16.16 fix: fix stock_board_concept_spot_em interface
3028
3028
  1.16.17 fix: fix stock_research_report_em interface
3029
+ 1.16.18 fix: fix stock_board_concept_spot_em interface
3030
+ 1.16.19 fix: fix stock_profit_forecast_ths interface
3029
3031
  """
3030
3032
 
3031
- __version__ = "1.16.17"
3033
+ __version__ = "1.16.19"
3032
3034
  __author__ = "AKFamily"
3033
3035
 
3034
3036
  import sys
@@ -1,11 +1,12 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2025/2/26 17:00
4
+ Date: 2025/2/28 16:30
5
5
  Desc: 东方财富-沪深板块-概念板块
6
6
  https://quote.eastmoney.com/center/boardlist.html#concept_board
7
7
  """
8
8
 
9
+ import re
9
10
  from functools import lru_cache
10
11
 
11
12
  import pandas as pd
@@ -13,7 +14,7 @@ import requests
13
14
 
14
15
 
15
16
  @lru_cache()
16
- def stock_board_concept_name_em() -> pd.DataFrame:
17
+ def __stock_board_concept_name_em() -> pd.DataFrame:
17
18
  """
18
19
  东方财富网-行情中心-沪深京板块-概念板块-名称
19
20
  https://quote.eastmoney.com/center/boardlist.html#concept_board
@@ -97,11 +98,11 @@ def stock_board_concept_name_em() -> pd.DataFrame:
97
98
  return temp_df
98
99
 
99
100
 
100
- def stock_board_concept_spot_em() -> pd.DataFrame:
101
+ def stock_board_concept_name_em() -> pd.DataFrame:
101
102
  """
102
- 东方财富网-行情中心-沪深京板块-概念板块-实时行情
103
+ 东方财富网-行情中心-沪深京板块-概念板块-名称
103
104
  https://quote.eastmoney.com/center/boardlist.html#concept_board
104
- :return: 概念板块-实时行情
105
+ :return: 概念板块-名称
105
106
  :rtype: pandas.DataFrame
106
107
  """
107
108
  url = "https://79.push2.eastmoney.com/api/qt/clist/get"
@@ -181,6 +182,55 @@ def stock_board_concept_spot_em() -> pd.DataFrame:
181
182
  return temp_df
182
183
 
183
184
 
185
+ def stock_board_concept_spot_em(symbol: str = "可燃冰") -> pd.DataFrame:
186
+ """
187
+ 东方财富网-行情中心-沪深京板块-概念板块-实时行情
188
+ https://quote.eastmoney.com/bk/90.BK0818.html
189
+ :return: 概念板块-实时行情
190
+ :rtype: pandas.DataFrame
191
+ """
192
+ url = "https://91.push2.eastmoney.com/api/qt/stock/get"
193
+ field_map = {
194
+ "f43": "最新",
195
+ "f44": "最高",
196
+ "f45": "最低",
197
+ "f46": "开盘",
198
+ "f47": "成交量",
199
+ "f48": "成交额",
200
+ "f170": "涨跌幅",
201
+ "f171": "振幅",
202
+ "f168": "换手率",
203
+ "f169": "涨跌额",
204
+ }
205
+
206
+ if re.match(pattern=r"^BK\d+", string=symbol):
207
+ em_code = symbol
208
+ else:
209
+ industry_listing = __stock_board_concept_name_em()
210
+ em_code = industry_listing.query("板块名称 == @symbol")["板块代码"].values[0]
211
+ params = dict(
212
+ fields=",".join(field_map.keys()),
213
+ mpi="1000",
214
+ invt="2",
215
+ fltt="1",
216
+ secid=f"90.{em_code}",
217
+ ut="fa5fd1943c7b386f172d6893dbfba10b",
218
+ )
219
+ r = requests.get(url, params=params)
220
+ data_dict = r.json()
221
+ result = pd.DataFrame.from_dict(data_dict["data"], orient="index")
222
+ result.rename(field_map, inplace=True)
223
+ result.reset_index(inplace=True)
224
+ result.columns = ["item", "value"]
225
+ result["value"] = pd.to_numeric(result["value"], errors="coerce")
226
+
227
+ # 各项转换成正常单位. 除了成交量与成交额, 原始数据中已是正常单位(元)
228
+ result["value"] = result["value"] * 1e-2
229
+ result.iloc[4, 1] = result.iloc[4, 1] * 1e2
230
+ result.iloc[5, 1] = result.iloc[5, 1] * 1e2
231
+ return result
232
+
233
+
184
234
  def stock_board_concept_hist_em(
185
235
  symbol: str = "绿色电力",
186
236
  period: str = "daily",
@@ -209,7 +259,7 @@ def stock_board_concept_hist_em(
209
259
  "weekly": "102",
210
260
  "monthly": "103",
211
261
  }
212
- stock_board_concept_em_map = stock_board_concept_name_em()
262
+ stock_board_concept_em_map = __stock_board_concept_name_em()
213
263
  stock_board_code = stock_board_concept_em_map[
214
264
  stock_board_concept_em_map["板块名称"] == symbol
215
265
  ]["板块代码"].values[0]
@@ -285,7 +335,7 @@ def stock_board_concept_hist_min_em(
285
335
  :return: 分时历史行情
286
336
  :rtype: pandas.DataFrame
287
337
  """
288
- stock_board_concept_em_map = stock_board_concept_name_em()
338
+ stock_board_concept_em_map = __stock_board_concept_name_em()
289
339
  stock_board_code = stock_board_concept_em_map[
290
340
  stock_board_concept_em_map["板块名称"] == symbol
291
341
  ]["板块代码"].values[0]
@@ -391,7 +441,7 @@ def stock_board_concept_cons_em(symbol: str = "融资融券") -> pd.DataFrame:
391
441
  :return: 板块成份
392
442
  :rtype: pandas.DataFrame
393
443
  """
394
- stock_board_concept_em_map = stock_board_concept_name_em()
444
+ stock_board_concept_em_map = __stock_board_concept_name_em()
395
445
  stock_board_code = stock_board_concept_em_map[
396
446
  stock_board_concept_em_map["板块名称"] == symbol
397
447
  ]["板块代码"].values[0]
@@ -490,7 +540,7 @@ if __name__ == "__main__":
490
540
  stock_board_concept_em_df = stock_board_concept_name_em()
491
541
  print(stock_board_concept_em_df)
492
542
 
493
- stock_board_concept_spot_em_df = stock_board_concept_spot_em()
543
+ stock_board_concept_spot_em_df = stock_board_concept_spot_em(symbol="可燃冰")
494
544
  print(stock_board_concept_spot_em_df)
495
545
 
496
546
  stock_board_concept_hist_em_df = stock_board_concept_hist_em(
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2025/2/28 13:50
4
+ Date: 2025/2/28 16:30
5
5
  Desc: 东方财富-沪深板块-行业板块
6
6
  https://quote.eastmoney.com/center/boardlist.html#industry_board
7
7
  """
@@ -14,6 +14,107 @@ import requests
14
14
 
15
15
 
16
16
  @lru_cache()
17
+ def __stock_board_industry_name_em() -> pd.DataFrame:
18
+ """
19
+ 东方财富网-沪深板块-行业板块-名称
20
+ https://quote.eastmoney.com/center/boardlist.html#industry_board
21
+ :return: 行业板块-名称
22
+ :rtype: pandas.DataFrame
23
+ """
24
+ url = "https://17.push2.eastmoney.com/api/qt/clist/get"
25
+ params = {
26
+ "pn": "1",
27
+ "pz": "50000",
28
+ "po": "1",
29
+ "np": "2",
30
+ "ut": "bd1d9ddb04089700cf9c27f6f7426281",
31
+ "fltt": "2",
32
+ "invt": "2",
33
+ "fid": "f3",
34
+ "fs": "m:90 t:2 f:!50",
35
+ "fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,"
36
+ "f23,f24,f25,f26,f22,f33,f11,f62,f128,f136,f115,f152,f124,f107,f104,f105,"
37
+ "f140,f141,f207,f208,f209,f222",
38
+ "_": "1626075887768",
39
+ }
40
+ r = requests.get(url, params=params)
41
+ data_json = r.json()
42
+ temp_df = pd.DataFrame(data_json["data"]["diff"]).T
43
+ temp_df.reset_index(inplace=True)
44
+ temp_df["index"] = temp_df.index + 1
45
+ temp_df.columns = [
46
+ "排名",
47
+ "-",
48
+ "最新价",
49
+ "涨跌幅",
50
+ "涨跌额",
51
+ "-",
52
+ "_",
53
+ "-",
54
+ "换手率",
55
+ "-",
56
+ "-",
57
+ "-",
58
+ "板块代码",
59
+ "-",
60
+ "板块名称",
61
+ "-",
62
+ "-",
63
+ "-",
64
+ "-",
65
+ "总市值",
66
+ "-",
67
+ "-",
68
+ "-",
69
+ "-",
70
+ "-",
71
+ "-",
72
+ "-",
73
+ "-",
74
+ "上涨家数",
75
+ "下跌家数",
76
+ "-",
77
+ "-",
78
+ "-",
79
+ "领涨股票",
80
+ "-",
81
+ "-",
82
+ "领涨股票-涨跌幅",
83
+ "-",
84
+ "-",
85
+ "-",
86
+ "-",
87
+ "-",
88
+ ]
89
+ temp_df = temp_df[
90
+ [
91
+ "排名",
92
+ "板块名称",
93
+ "板块代码",
94
+ "最新价",
95
+ "涨跌额",
96
+ "涨跌幅",
97
+ "总市值",
98
+ "换手率",
99
+ "上涨家数",
100
+ "下跌家数",
101
+ "领涨股票",
102
+ "领涨股票-涨跌幅",
103
+ ]
104
+ ]
105
+ temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
106
+ temp_df["涨跌额"] = pd.to_numeric(temp_df["涨跌额"], errors="coerce")
107
+ temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce")
108
+ temp_df["总市值"] = pd.to_numeric(temp_df["总市值"], errors="coerce")
109
+ temp_df["换手率"] = pd.to_numeric(temp_df["换手率"], errors="coerce")
110
+ temp_df["上涨家数"] = pd.to_numeric(temp_df["上涨家数"], errors="coerce")
111
+ temp_df["下跌家数"] = pd.to_numeric(temp_df["下跌家数"], errors="coerce")
112
+ temp_df["领涨股票-涨跌幅"] = pd.to_numeric(
113
+ temp_df["领涨股票-涨跌幅"], errors="coerce"
114
+ )
115
+ return temp_df
116
+
117
+
17
118
  def stock_board_industry_name_em() -> pd.DataFrame:
18
119
  """
19
120
  东方财富网-沪深板块-行业板块-名称
@@ -141,9 +242,8 @@ def stock_board_industry_spot_em(symbol: str = "小金属") -> pd.DataFrame:
141
242
  if re.match(pattern=r"^BK\d+", string=symbol):
142
243
  em_code = symbol
143
244
  else:
144
- industry_listing = stock_board_industry_name_em()
245
+ industry_listing = __stock_board_industry_name_em()
145
246
  em_code = industry_listing.query("板块名称 == @symbol")["板块代码"].values[0]
146
-
147
247
  params = dict(
148
248
  fields=",".join(field_map.keys()),
149
249
  mpi="1000",
@@ -195,7 +295,7 @@ def stock_board_industry_hist_em(
195
295
  "周k": "102",
196
296
  "月k": "103",
197
297
  }
198
- stock_board_concept_em_map = stock_board_industry_name_em()
298
+ stock_board_concept_em_map = __stock_board_industry_name_em()
199
299
  stock_board_code = stock_board_concept_em_map[
200
300
  stock_board_concept_em_map["板块名称"] == symbol
201
301
  ]["板块代码"].values[0]
@@ -271,7 +371,7 @@ def stock_board_industry_hist_min_em(
271
371
  :return: 分时历史行情
272
372
  :rtype: pandas.DataFrame
273
373
  """
274
- stock_board_concept_em_map = stock_board_industry_name_em()
374
+ stock_board_concept_em_map = __stock_board_industry_name_em()
275
375
  stock_board_code = stock_board_concept_em_map[
276
376
  stock_board_concept_em_map["板块名称"] == symbol
277
377
  ]["板块代码"].values[0]
@@ -380,11 +480,11 @@ def stock_board_industry_cons_em(symbol: str = "小金属") -> pd.DataFrame:
380
480
  :return: 板块成份
381
481
  :rtype: pandas.DataFrame
382
482
  """
383
- stock_board_concept_em_map = stock_board_industry_name_em()
483
+ stock_board_concept_em_map = __stock_board_industry_name_em()
384
484
  stock_board_code = stock_board_concept_em_map[
385
485
  stock_board_concept_em_map["板块名称"] == symbol
386
486
  ]["板块代码"].values[0]
387
- url = "http://29.push2.eastmoney.com/api/qt/clist/get"
487
+ url = "https://29.push2.eastmoney.com/api/qt/clist/get"
388
488
  params = {
389
489
  "pn": "1",
390
490
  "pz": "50000",
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/8/28 15:00
4
+ Date: 2025/3/1 15:00
5
5
  Desc: 同花顺-盈利预测
6
6
  https://basic.10jqka.com.cn/new/600519/worth.html
7
7
  """
@@ -30,44 +30,86 @@ def stock_profit_forecast_ths(
30
30
  url = f"https://basic.10jqka.com.cn/new/{symbol}/worth.html"
31
31
  r = requests.get(url, headers=headers)
32
32
  r.encoding = "gbk"
33
- if indicator == "预测年报每股收益":
34
- temp_df = pd.read_html(StringIO(r.text))[0]
35
- temp_df["年度"] = temp_df["年度"].astype(str)
36
- return temp_df
37
- if indicator == "预测年报净利润":
38
- temp_df = pd.read_html(StringIO(r.text))[1]
39
- temp_df["年度"] = temp_df["年度"].astype(str)
40
- return temp_df
41
- if indicator == "业绩预测详表-机构":
42
- temp_df = pd.read_html(StringIO(r.text))[2]
43
- columns_list = []
44
- for item in temp_df.columns:
45
- columns_list.append(item[1])
46
- columns_list[2] = "预测年报每股收益" + columns_list[2]
47
- columns_list[3] = "预测年报每股收益" + columns_list[3]
48
- columns_list[4] = "预测年报每股收益" + columns_list[4]
49
- columns_list[5] = "预测年报净利润" + columns_list[5]
50
- columns_list[6] = "预测年报净利润" + columns_list[6]
51
- columns_list[7] = "预测年报净利润" + columns_list[7]
52
- temp_df.columns = columns_list
53
- temp_df["报告日期"] = pd.to_datetime(temp_df["报告日期"]).dt.date
54
- return temp_df
55
- if indicator == "业绩预测详表-详细指标预测":
56
- temp_df = pd.read_html(StringIO(r.text))[3]
57
- temp_df.columns = [
58
- item.replace("(", "-").replace(")", "") for item in temp_df.columns
59
- ]
60
- return temp_df
33
+ if "本年度暂无机构做出业绩预测" in r.text:
34
+ # 处理 `本年度暂无机构做出业绩预测` 的情况
35
+ if indicator == "预测年报每股收益":
36
+ return pd.DataFrame()
37
+ elif indicator == "预测年报净利润":
38
+ return pd.DataFrame()
39
+ elif indicator == "业绩预测详表-机构":
40
+ temp_df = pd.read_html(StringIO(r.text))[0]
41
+ columns_list = []
42
+ for item in temp_df.columns:
43
+ columns_list.append(item[1])
44
+ columns_list[2] = "预测年报每股收益" + columns_list[2]
45
+ columns_list[3] = "预测年报每股收益" + columns_list[3]
46
+ columns_list[4] = "预测年报每股收益" + columns_list[4]
47
+ columns_list[5] = "预测年报净利润" + columns_list[5]
48
+ columns_list[6] = "预测年报净利润" + columns_list[6]
49
+ columns_list[7] = "预测年报净利润" + columns_list[7]
50
+ temp_df.columns = columns_list
51
+ temp_df["报告日期"] = pd.to_datetime(
52
+ temp_df["报告日期"], errors="coerce"
53
+ ).dt.date
54
+ return temp_df
55
+ elif indicator == "业绩预测详表-详细指标预测":
56
+ temp_df = pd.read_html(StringIO(r.text))[1]
57
+ temp_df.columns = [
58
+ item.replace("(", "-").replace(")", "") for item in temp_df.columns
59
+ ]
60
+ return temp_df
61
+ else:
62
+ return pd.DataFrame()
63
+ else:
64
+ if indicator == "预测年报每股收益":
65
+ temp_df = pd.read_html(StringIO(r.text))[0]
66
+ temp_df["年度"] = temp_df["年度"].astype(str)
67
+ return temp_df
68
+ elif indicator == "预测年报净利润":
69
+ temp_df = pd.read_html(StringIO(r.text))[1]
70
+ temp_df["年度"] = temp_df["年度"].astype(str)
71
+ return temp_df
72
+ elif indicator == "业绩预测详表-机构":
73
+ temp_df = pd.read_html(StringIO(r.text))[2]
74
+ columns_list = []
75
+ for item in temp_df.columns:
76
+ columns_list.append(item[1])
77
+ columns_list[2] = "预测年报每股收益" + columns_list[2]
78
+ columns_list[3] = "预测年报每股收益" + columns_list[3]
79
+ columns_list[4] = "预测年报每股收益" + columns_list[4]
80
+ columns_list[5] = "预测年报净利润" + columns_list[5]
81
+ columns_list[6] = "预测年报净利润" + columns_list[6]
82
+ columns_list[7] = "预测年报净利润" + columns_list[7]
83
+ temp_df.columns = columns_list
84
+ temp_df["报告日期"] = pd.to_datetime(temp_df["报告日期"]).dt.date
85
+ return temp_df
86
+ elif indicator == "业绩预测详表-详细指标预测":
87
+ temp_df = pd.read_html(StringIO(r.text))[3]
88
+ temp_df.columns = [
89
+ item.replace("(", "-").replace(")", "") for item in temp_df.columns
90
+ ]
91
+ return temp_df
92
+ else:
93
+ return pd.DataFrame()
61
94
 
62
95
 
63
96
  if __name__ == "__main__":
64
- for _item in [
65
- "预测年报每股收益",
66
- "预测年报净利润",
67
- "业绩预测详表-机构",
68
- "业绩预测详表-详细指标预测",
69
- ]:
70
- stock_profit_forecast_ths_df = stock_profit_forecast_ths(
71
- symbol="600519", indicator=_item
72
- )
73
- print(stock_profit_forecast_ths_df)
97
+ stock_profit_forecast_ths_df = stock_profit_forecast_ths(
98
+ symbol="600519", indicator="预测年报每股收益"
99
+ )
100
+ print(stock_profit_forecast_ths_df)
101
+
102
+ stock_profit_forecast_ths_df = stock_profit_forecast_ths(
103
+ symbol="600519", indicator="预测年报净利润"
104
+ )
105
+ print(stock_profit_forecast_ths_df)
106
+
107
+ stock_profit_forecast_ths_df = stock_profit_forecast_ths(
108
+ symbol="600519", indicator="业绩预测详表-机构"
109
+ )
110
+ print(stock_profit_forecast_ths_df)
111
+
112
+ stock_profit_forecast_ths_df = stock_profit_forecast_ths(
113
+ symbol="600519", indicator="业绩预测详表-详细指标预测"
114
+ )
115
+ print(stock_profit_forecast_ths_df)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: akshare
3
- Version: 1.16.17
3
+ Version: 1.16.19
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
@@ -50,7 +50,8 @@ Dynamic: requires-dist
50
50
  Dynamic: requires-python
51
51
  Dynamic: summary
52
52
 
53
- **欢迎加入专注于财经数据和量化投资的知识社区,获取《AKShare-财经数据宝典》,请点击[了解更多](https://akshare.akfamily.xyz/learn.html)**
53
+ **欢迎加入专注于财经数据和量化投资的知识社区,获取《AKShare-财经数据宝典》,其汇集了财经数据的使用经验和指南,还独家分享了
54
+ 众多国内外财经数据源的使用和注意事项,请点击[了解更多](https://akshare.akfamily.xyz/learn.html)**
54
55
 
55
56
  **量化投研视频课程:《PyBroker-入门及实战》已经上架!《PyBroker-进阶及实战》正在更新!**
56
57
 
@@ -1,4 +1,4 @@
1
- akshare/__init__.py,sha256=KsY1zAUGptt-oMvjF_MJ2IjXMB8q-oU3Iycjed0k8nc,188649
1
+ akshare/__init__.py,sha256=RyTyFqcqJnmNAIYwc10cb_7jsD9FjI4I5SPmUDQU8No,188757
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
@@ -231,8 +231,8 @@ akshare/stock/__init__.py,sha256=jSa9260d6aNZajaW68chI2mpPkDSXLOgi3eXrqo4MQ8,82
231
231
  akshare/stock/cons.py,sha256=0oyUW5Pu-iQ3qgh-TFemM_O5f1fAwVe-PsI4Qa8EYpQ,42956
232
232
  akshare/stock/stock_allotment_cninfo.py,sha256=OVjVdWp2XVRNbJvVgtgVVoBmPBJgBB4RyIIgA_9QHM8,6066
233
233
  akshare/stock/stock_ask_bid_em.py,sha256=nXQhYIpU4k7GUc7nthWC29zVS9GhYb9ppQTLD0gycF4,3438
234
- akshare/stock/stock_board_concept_em.py,sha256=Inmp1_t3HYUZtESPEiWI8sppPagGUHuvh8v3DMl7cgM,16736
235
- akshare/stock/stock_board_industry_em.py,sha256=X5hxRc2GqJzAIAaiO9rq8olQOxpZs-xbfjvIJbPD9LE,16246
234
+ akshare/stock/stock_board_concept_em.py,sha256=JAyXNCuDf-IdkklRSz7D3rUwTwRM4aoLJgliQeivpSo,18431
235
+ akshare/stock/stock_board_industry_em.py,sha256=aaMU78BLVxSTQ4Z55212DsfQDBerKD2OX3as1J9-w1s,19041
236
236
  akshare/stock/stock_cg_equity_mortgage.py,sha256=Pui5aWKKPwGuKjF_GNpejDzsMGNPrxiaJviLz3x2e9I,3426
237
237
  akshare/stock/stock_cg_guarantee.py,sha256=ts7qcQhhyN1PHB7Q4XlMn38HhfVvubOvky9RZfmUP94,3844
238
238
  akshare/stock/stock_cg_lawsuit.py,sha256=6Y92pPw0JgyrInteqHuU07G1jwmdX2wjaDtrJN8y6Hg,4129
@@ -364,7 +364,7 @@ akshare/stock_fundamental/stock_mda_ym.py,sha256=BXJJ-39I7GzJ7y_8k_pqUjvUrg1bSla
364
364
  akshare/stock_fundamental/stock_notice.py,sha256=tGxGz1Usr3qQzgs1Y71imDPkqJz5ooismz3BiaBwQR0,3928
365
365
  akshare/stock_fundamental/stock_profit_forecast_em.py,sha256=_ZlWkyz-FswlICbjk_YiHjRwrlLftm_piQIPFkZMrjE,5701
366
366
  akshare/stock_fundamental/stock_profit_forecast_hk_etnet.py,sha256=dQaqxi0wXOidIuAxjUzZy_gdy16HEi20I3jEdpNM3qc,5179
367
- akshare/stock_fundamental/stock_profit_forecast_ths.py,sha256=ZTShEB5w1y5j6TsHzWT8QR8oatbBTdE1H0IIxPLHn9s,2656
367
+ akshare/stock_fundamental/stock_profit_forecast_ths.py,sha256=8fzPGyBcxWSvoa7UZke9bDn7P0neSKrkjHAehVgLHJM,4682
368
368
  akshare/stock_fundamental/stock_recommend.py,sha256=44l1uLofwO-nsDB4oAYWpHQA7_qhXLOo1BurjUvmXzY,4501
369
369
  akshare/stock_fundamental/stock_register_em.py,sha256=QxQh7kddjXLainVVugvOCYG8nDyOv31I8npQmXw3Ccs,15643
370
370
  akshare/stock_fundamental/stock_restricted_em.py,sha256=e5G3oiZBf9d_a8quX5nLzn3RggeF4yX3j-h3nAZBRmA,13378
@@ -381,8 +381,8 @@ akshare/utils/token_process.py,sha256=K4rGXjh_tgugbRcyOK2h2x0jP3PT65IIK7nxhUKhOe
381
381
  akshare/utils/tqdm.py,sha256=MuPNwcswkOGjwWQOMWXi9ZvQ_RmW4obCWRj2i7HM7FE,847
382
382
  tests/__init__.py,sha256=gNzhlO0UPjFq6Ieb38kaVIODXv4cTDByrdohAZnDYt4,82
383
383
  tests/test_func.py,sha256=j1MGYbZI2if2j_LY1S4FLsf4qfq4NwVqD5wmRlv5Log,832
384
- akshare-1.16.17.dist-info/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
385
- akshare-1.16.17.dist-info/METADATA,sha256=7tyC_cht4WkdRRm9UYWTeAHPZzBQfuq9FM6Mu2dhBDg,13720
386
- akshare-1.16.17.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
387
- akshare-1.16.17.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
388
- akshare-1.16.17.dist-info/RECORD,,
384
+ akshare-1.16.19.dist-info/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
385
+ akshare-1.16.19.dist-info/METADATA,sha256=TeABNu4wzkETOdjWdj6uxV9Om9EfG8HZHUqM2aBaiPE,13847
386
+ akshare-1.16.19.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
387
+ akshare-1.16.19.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
388
+ akshare-1.16.19.dist-info/RECORD,,