akshare 1.16.29__py3-none-any.whl → 1.16.31__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
@@ -3038,9 +3038,11 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
3038
3038
  1.16.27 fix: fix futures_global_em interface
3039
3039
  1.16.28 fix: fix futures_global_hist_em interface
3040
3040
  1.16.29 fix: fix futures_global_hist_em interface
3041
+ 1.16.30 add: add forex_hist_em interface
3042
+ 1.16.31 add: add index_global_hist_em interface
3041
3043
  """
3042
3044
 
3043
- __version__ = "1.16.29"
3045
+ __version__ = "1.16.31"
3044
3046
  __author__ = "AKFamily"
3045
3047
 
3046
3048
  import sys
@@ -3062,6 +3064,21 @@ if sys.version_info < (3, 9):
3062
3064
 
3063
3065
  del sys
3064
3066
 
3067
+ """
3068
+ 新浪财经-行情中心-环球市场
3069
+ """
3070
+ from akshare.index.index_global_sina import index_global_hist_sina, index_global_name_table
3071
+
3072
+ """
3073
+ 东方财富网-行情中心-全球指数
3074
+ """
3075
+ from akshare.index.index_global_em import index_global_hist_em, index_global_spot_em
3076
+
3077
+ """
3078
+ 东方财富网-行情中心-外汇市场-所有汇率
3079
+ """
3080
+ from akshare.forex.forex_em import forex_hist_em, forex_spot_em
3081
+
3065
3082
  """
3066
3083
  东方财富网-行情中心-沪深港通
3067
3084
  """
File without changes
akshare/forex/cons.py ADDED
@@ -0,0 +1,192 @@
1
+ symbol_market_map = {
2
+ "EURCNYC": 120,
3
+ "JPYZAR": 119,
4
+ "NZDCNYC": 120,
5
+ "CNYRUBC": 120,
6
+ "AUDCNYC": 120,
7
+ "JPYGBP": 119,
8
+ "JPYSGD": 119,
9
+ "JPYCNH": 133,
10
+ "JPYAUD": 119,
11
+ "USDBRL": 119,
12
+ "JPYEUR": 119,
13
+ "JPYTRY": 119,
14
+ "JPYCAD": 119,
15
+ "CHFZAR": 119,
16
+ "JPYHKD": 119,
17
+ "SEKEUR": 119,
18
+ "JPYUSD": 119,
19
+ "GBPCNYC": 120,
20
+ "JPYNZD": 119,
21
+ "CHFGBP": 119,
22
+ "USDIDR": 119,
23
+ "CHFSGD": 119,
24
+ "USDPLN": 119,
25
+ "CHFCNH": 133,
26
+ "SEKUSD": 119,
27
+ "CHFAUD": 119,
28
+ "USDKRW": 119,
29
+ "EURPLN": 119,
30
+ "USDHUF": 119,
31
+ "CHFCAD": 119,
32
+ "USDTHB": 119,
33
+ "CHFEUR": 119,
34
+ "JPYCNYC": 120,
35
+ "EURHUF": 119,
36
+ "CHFHKD": 119,
37
+ "SGDCNYC": 120,
38
+ "CHFUSD": 119,
39
+ "USDINR": 119,
40
+ "USDCZK": 119,
41
+ "CHFNZD": 119,
42
+ "USDMXN": 119,
43
+ "GBPPLN": 119,
44
+ "USDZAR": 119,
45
+ "JPYCHF": 119,
46
+ "EURCZK": 119,
47
+ "EURZAR": 119,
48
+ "CADCNYC": 120,
49
+ "NOKEUR": 119,
50
+ "NZDGBP": 119,
51
+ "NOKUSD": 119,
52
+ "NZDSGD": 119,
53
+ "USDGBP": 119,
54
+ "HKDGBP": 119,
55
+ "NZDCNH": 133,
56
+ "NZDAUD": 119,
57
+ "HKDSGD": 119,
58
+ "CNYSARC": 120,
59
+ "USDSGD": 119,
60
+ "CNYAEDC": 120,
61
+ "EURGBP": 119,
62
+ "CADGBP": 119,
63
+ "USDCNH": 133,
64
+ "CNYTRYC": 120,
65
+ "CADSGD": 119,
66
+ "USDAUD": 119,
67
+ "GBPZAR": 119,
68
+ "EURSGD": 119,
69
+ "HKDCNH": 133,
70
+ "NZDCAD": 119,
71
+ "CADCNH": 133,
72
+ "HKDAUD": 119,
73
+ "NZDEUR": 119,
74
+ "EURCNH": 133,
75
+ "EURAUD": 119,
76
+ "NZDHKD": 119,
77
+ "CADAUD": 119,
78
+ "AUDGBP": 119,
79
+ "USDDKK": 119,
80
+ "HKDCAD": 119,
81
+ "USDCAD": 119,
82
+ "AUDSGD": 119,
83
+ "USDTRY": 119,
84
+ "EURTRY": 119,
85
+ "USDEUR": 119,
86
+ "NZDUSD": 119,
87
+ "SGDGBP": 119,
88
+ "USDHKD": 119,
89
+ "AUDCNH": 133,
90
+ "EURDKK": 119,
91
+ "USDARS": 119,
92
+ "USDSAR": 119,
93
+ "TRYUSD": 119,
94
+ "TRYEUR": 119,
95
+ "SARUSD": 119,
96
+ "INRUSD": 119,
97
+ "HUFUSD": 119,
98
+ "HUFEUR": 119,
99
+ "HKDUSD": 119,
100
+ "HKDEUR": 119,
101
+ "HKDCNYC": 120,
102
+ "EURCAD": 119,
103
+ "DKKUSD": 119,
104
+ "DKKEUR": 119,
105
+ "CNYMOPC": 120,
106
+ "CNHSGD": 133,
107
+ "CNHGBP": 133,
108
+ "CNHAUD": 133,
109
+ "CADEUR": 119,
110
+ "SGDCNH": 133,
111
+ "EURHKD": 119,
112
+ "CADHKD": 119,
113
+ "USDCNYC": 120,
114
+ "GBPSGD": 119,
115
+ "EURUSD": 119,
116
+ "SGDAUD": 119,
117
+ "HKDNZD": 119,
118
+ "USDNZD": 119,
119
+ "GBPCNH": 133,
120
+ "CADUSD": 119,
121
+ "AUDCAD": 119,
122
+ "CNYTHBC": 120,
123
+ "CNHEUR": 133,
124
+ "GBPAUD": 119,
125
+ "AUDEUR": 119,
126
+ "CADNZD": 119,
127
+ "EURNZD": 119,
128
+ "CNHCAD": 133,
129
+ "AUDHKD": 119,
130
+ "SGDCAD": 119,
131
+ "AUDUSD": 119,
132
+ "SGDEUR": 119,
133
+ "CNHHKD": 133,
134
+ "GBPCAD": 119,
135
+ "CNHUSD": 133,
136
+ "SGDHKD": 119,
137
+ "GBPEUR": 119,
138
+ "SGDUSD": 119,
139
+ "AUDNZD": 119,
140
+ "GBPHKD": 119,
141
+ "GBPUSD": 119,
142
+ "CNHNZD": 133,
143
+ "CHFCNYC": 120,
144
+ "SGDNZD": 119,
145
+ "ZARGBP": 119,
146
+ "USDNOK": 119,
147
+ "GBPNZD": 119,
148
+ "CZKEUR": 119,
149
+ "EURNOK": 119,
150
+ "CHFJPY": 119,
151
+ "NZDCHF": 119,
152
+ "PLNGBP": 119,
153
+ "HKDCHF": 119,
154
+ "ZARUSD": 119,
155
+ "USDCHF": 119,
156
+ "ZAREUR": 119,
157
+ "MXNUSD": 119,
158
+ "EURCHF": 119,
159
+ "CADCHF": 119,
160
+ "CZKUSD": 119,
161
+ "CNYKRWC": 120,
162
+ "CNHCHF": 133,
163
+ "AUDCHF": 119,
164
+ "PLNEUR": 119,
165
+ "CNYMXNC": 120,
166
+ "SGDCHF": 119,
167
+ "PLNUSD": 119,
168
+ "USDSEK": 119,
169
+ "GBPCHF": 119,
170
+ "EURSEK": 119,
171
+ "CNYMYRC": 120,
172
+ "NZDJPY": 119,
173
+ "ZARCHF": 119,
174
+ "USDJPY": 119,
175
+ "THBUSD": 119,
176
+ "HKDJPY": 119,
177
+ "EURJPY": 119,
178
+ "CADJPY": 119,
179
+ "AUDJPY": 119,
180
+ "TRYJPY": 119,
181
+ "CNHJPY": 133,
182
+ "SGDJPY": 119,
183
+ "GBPJPY": 119,
184
+ "CNYZARC": 120,
185
+ "ZARJPY": 119,
186
+ "USDRUB": 119,
187
+ "CNYDKKC": 120,
188
+ "CNYNOKC": 120,
189
+ "CNYHUFC": 120,
190
+ "CNYPLNC": 120,
191
+ "CNYSEKC": 120,
192
+ }
@@ -0,0 +1,154 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding:utf-8 -*-
3
+ """
4
+ Date: 2025/3/6 17:00
5
+ Desc: 东方财富网-行情中心-外汇市场-所有汇率
6
+ https://quote.eastmoney.com/center/gridlist.html#forex_all
7
+ """
8
+
9
+ import pandas as pd
10
+ import requests
11
+
12
+ from akshare.forex.cons import symbol_market_map
13
+
14
+
15
+ def forex_spot_em() -> pd.DataFrame:
16
+ """
17
+ 东方财富网-行情中心-外汇市场-所有汇率-实时行情数据
18
+ https://quote.eastmoney.com/center/gridlist.html#forex_all
19
+ :return: 实时行情数据
20
+ :rtype: pandas.DataFrame
21
+ """
22
+ url = "https://push2.eastmoney.com/api/qt/clist/get"
23
+ params = {
24
+ "np": "2",
25
+ "fltt": "1",
26
+ "invt": "2",
27
+ "fs": "m:119,m:120,m:133",
28
+ "fields": "f12,f13,f14,f1,f2,f4,f3,f152,f17,f18,f15,f16",
29
+ "fid": "f3",
30
+ "pn": "1",
31
+ "pz": "20000",
32
+ "po": "1",
33
+ "dect": "1",
34
+ "ut": "fa5fd1943c7b386f172d6893dbfba10b",
35
+ "wbp2u": "|0|0|0|web",
36
+ "_": "1741252811876",
37
+ }
38
+ r = requests.get(url, params=params)
39
+ data_json = r.json()
40
+ temp_df = pd.DataFrame(data_json["data"]["diff"]).T
41
+ temp_df.reset_index(inplace=True)
42
+ temp_df["index"] = temp_df["index"].astype(int) + 1
43
+ temp_df.rename(
44
+ columns={
45
+ "index": "序号",
46
+ "f12": "代码",
47
+ "f14": "名称",
48
+ "f17": "最新价",
49
+ "f4": "涨跌额",
50
+ "f3": "涨跌幅",
51
+ "f2": "今开",
52
+ "f15": "最高",
53
+ "f16": "最低",
54
+ "f18": "昨收",
55
+ },
56
+ inplace=True,
57
+ )
58
+ temp_df = temp_df[
59
+ [
60
+ "序号",
61
+ "代码",
62
+ "名称",
63
+ "最新价",
64
+ "涨跌额",
65
+ "涨跌幅",
66
+ "今开",
67
+ "最高",
68
+ "最低",
69
+ "昨收",
70
+ ]
71
+ ]
72
+ temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce") / 10000
73
+ temp_df["涨跌额"] = pd.to_numeric(temp_df["涨跌额"], errors="coerce") / 10000
74
+ temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce") / 100
75
+ temp_df["今开"] = pd.to_numeric(temp_df["今开"], errors="coerce") / 10000
76
+ temp_df["最高"] = pd.to_numeric(temp_df["最高"], errors="coerce") / 10000
77
+ temp_df["最低"] = pd.to_numeric(temp_df["最低"], errors="coerce") / 10000
78
+ temp_df["昨收"] = pd.to_numeric(temp_df["昨收"], errors="coerce") / 10000
79
+ return temp_df
80
+
81
+
82
+ def forex_hist_em(symbol: str = "USDCNH") -> pd.DataFrame:
83
+ """
84
+ 东方财富网-行情中心-外汇市场-所有汇率-历史行情数据
85
+ https://quote.eastmoney.com/cnyrate/EURCNYC.html
86
+ :param symbol: 品种代码;可以通过 ak.forex_spot_em() 来获取所有可获取历史行情数据的品种代码
87
+ :type symbol: str
88
+ :return: 历史行情数据
89
+ :rtype: pandas.DataFrame
90
+ """
91
+ url = "https://push2his.eastmoney.com/api/qt/stock/kline/get"
92
+ market_code = symbol_market_map[symbol]
93
+ params = {
94
+ "secid": f"{market_code}.{symbol}",
95
+ "klt": "101",
96
+ "fqt": "1",
97
+ "lmt": "50000",
98
+ "end": "20500000",
99
+ "iscca": "1",
100
+ "fields1": "f1,f2,f3,f4,f5,f6,f7,f8",
101
+ "fields2": "f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f62,f63,f64",
102
+ "ut": "f057cbcbce2a86e2866ab8877db1d059",
103
+ "forcect": 1,
104
+ }
105
+ r = requests.get(url, params=params)
106
+ data_json = r.json()
107
+ temp_df = pd.DataFrame([item.split(",") for item in data_json["data"]["klines"]])
108
+ temp_df["code"] = data_json["data"]["code"]
109
+ temp_df["name"] = data_json["data"]["name"]
110
+ temp_df.columns = [
111
+ "日期",
112
+ "今开",
113
+ "最新价",
114
+ "最高",
115
+ "最低",
116
+ "-",
117
+ "-",
118
+ "振幅",
119
+ "-",
120
+ "-",
121
+ "-",
122
+ "-",
123
+ "-",
124
+ "-",
125
+ "代码",
126
+ "名称",
127
+ ]
128
+ temp_df = temp_df[
129
+ [
130
+ "日期",
131
+ "代码",
132
+ "名称",
133
+ "今开",
134
+ "最新价",
135
+ "最高",
136
+ "最低",
137
+ "振幅",
138
+ ]
139
+ ]
140
+ temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
141
+ temp_df["今开"] = pd.to_numeric(temp_df["今开"], errors="coerce")
142
+ temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
143
+ temp_df["最高"] = pd.to_numeric(temp_df["最高"], errors="coerce")
144
+ temp_df["最低"] = pd.to_numeric(temp_df["最低"], errors="coerce")
145
+ temp_df["振幅"] = pd.to_numeric(temp_df["振幅"], errors="coerce")
146
+ return temp_df
147
+
148
+
149
+ if __name__ == "__main__":
150
+ forex_spot_em_df = forex_spot_em()
151
+ print(forex_spot_em_df)
152
+
153
+ forex_hist_em_df = forex_hist_em(symbol="USDCNH")
154
+ print(forex_hist_em_df)
akshare/index/cons.py CHANGED
@@ -4,9 +4,11 @@
4
4
  Date: 2021/5/27 20:19
5
5
  Desc: 指数配置文件
6
6
  """
7
+
7
8
  # weibo-user-agent
8
9
  index_weibo_headers = {
9
- "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1",
10
+ "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) "
11
+ "AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1",
10
12
  "Referer": "http://data.weibo.com/index/newindex",
11
13
  "Accept": "application/json",
12
14
  "Origin": "https://data.weibo.com",
@@ -24,7 +26,8 @@ sw_cons_headers = {
24
26
  "Host": "www.swsindex.com",
25
27
  "Origin": "http://www.swsindex.com",
26
28
  "Referer": "http://www.swsindex.com/idx0210.aspx?swindexcode=801010",
27
- 'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36",
29
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
30
+ "Chrome/78.0.3904.108 Safari/537.36",
28
31
  "X-AjaxPro-Method": "ReturnContent",
29
32
  }
30
33
 
@@ -36,7 +39,10 @@ sw_payload = {
36
39
  "tablename": "swzs",
37
40
  "key": "L1",
38
41
  "p": "1",
39
- "where": "L1 in('801010','801020','801030','801040','801050','801080','801110','801120','801130','801140','801150','801160','801170','801180','801200','801210','801230','801710','801720','801730','801740','801750','801760','801770','801780','801790','801880','801890','801950','801960','801970','801980')",
42
+ "where": "L1 in('801010','801020','801030','801040','801050','801080','801110','801120','801130',"
43
+ "'801140','801150','801160','801170','801180','801200','801210','801230','801710','801720',"
44
+ "'801730','801740','801750','801760','801770','801780','801790','801880','801890','801950',"
45
+ "'801960','801970','801980')",
40
46
  "orderby": "",
41
47
  "fieldlist": "L1,L2,L3,L4,L5,L6,L7,L8,L11",
42
48
  "pagecount": "28",
@@ -45,47 +51,145 @@ sw_payload = {
45
51
 
46
52
  # sw-headers
47
53
  sw_headers = {
48
- 'Accept': 'application/json, text/javascript, */*',
49
- 'Accept-Encoding': 'gzip, deflate',
50
- 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
51
- 'Cache-Control': 'no-cache',
52
- 'Content-Type': 'application/x-www-form-urlencoded',
53
- 'DNT': '1',
54
- 'Host': 'www.swsindex.com',
55
- 'Origin': 'http://www.swsindex.com',
56
- 'Pragma': 'no-cache',
57
- 'Referer': 'http://www.swsindex.com/idx0120.aspx?columnid=8832',
58
- 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36',
59
- 'X-Requested-With': 'XMLHttpRequest'
54
+ "Accept": "application/json, text/javascript, */*",
55
+ "Accept-Encoding": "gzip, deflate",
56
+ "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
57
+ "Cache-Control": "no-cache",
58
+ "Content-Type": "application/x-www-form-urlencoded",
59
+ "DNT": "1",
60
+ "Host": "www.swsindex.com",
61
+ "Origin": "http://www.swsindex.com",
62
+ "Pragma": "no-cache",
63
+ "Referer": "http://www.swsindex.com/idx0120.aspx?columnid=8832",
64
+ "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
65
+ "Chrome/74.0.3729.169 Safari/537.36",
66
+ "X-Requested-With": "XMLHttpRequest",
60
67
  }
61
68
 
62
69
  # zh-sina-a
63
- zh_sina_index_stock_url = "http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeDataSimple"
70
+ zh_sina_index_stock_url = (
71
+ "http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/"
72
+ "Market_Center.getHQNodeDataSimple"
73
+ )
64
74
  zh_sina_index_stock_payload = {
65
75
  "page": "1",
66
76
  "num": "80",
67
77
  "sort": "symbol",
68
78
  "asc": "1",
69
79
  "node": "hs_s",
70
- "_s_r_a": "page"
80
+ "_s_r_a": "page",
71
81
  }
72
- zh_sina_index_stock_count_url = "http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeStockCountSimple?node=hs_s"
73
- zh_sina_index_stock_hist_url = "https://finance.sina.com.cn/realstock/company/{}/hisdata/klc_kl.js"
82
+ zh_sina_index_stock_count_url = (
83
+ "http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/"
84
+ "Market_Center.getHQNodeStockCountSimple?node=hs_s"
85
+ )
86
+ zh_sina_index_stock_hist_url = (
87
+ "https://finance.sina.com.cn/realstock/company/{}/hisdata/klc_kl.js"
88
+ )
74
89
 
75
90
  # investing
76
91
  short_headers = {
77
- 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.91 Safari/537.36'
92
+ "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
93
+ "Chrome/61.0.3163.91 Safari/537.36"
78
94
  }
79
95
 
80
96
  long_headers = {
81
- 'accept': 'text/plain, */*; q=0.01',
97
+ "accept": "text/plain, */*; q=0.01",
82
98
  # 'accept-encoding': 'gzip, deflate, br',
83
- 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
99
+ "accept-language": "zh-CN,zh;q=0.9,en;q=0.8",
84
100
  # 'cache-control': 'no-cache',
85
- 'content-length': '267',
86
- 'content-type': 'application/x-www-form-urlencoded',
87
- 'origin': 'https://cn.investing.com',
88
- 'referer': 'https://cn.investing.com/commodities/brent-oil-historical-data',
89
- 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.91 Safari/537.36',
90
- 'x-requested-with': 'XMLHttpRequest',
101
+ "content-length": "267",
102
+ "content-type": "application/x-www-form-urlencoded",
103
+ "origin": "https://cn.investing.com",
104
+ "referer": "https://cn.investing.com/commodities/brent-oil-historical-data",
105
+ "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
106
+ "Chrome/61.0.3163.91 Safari/537.36",
107
+ "x-requested-with": "XMLHttpRequest",
108
+ }
109
+
110
+ index_global_sina_symbol_map = {
111
+ # 欧洲股市
112
+ "英国富时100指数": "UKX",
113
+ "德国DAX 30种股价指数": "DAX",
114
+ "俄罗斯MICEX指数": "INDEXCF",
115
+ "法CAC40指数": "CAC",
116
+ "瑞士股票指数": "SWI20",
117
+ "富时意大利MIB指数": "FTSEMIB",
118
+ "荷兰AEX综合指数": "AEX",
119
+ "西班牙IBEX指数": "IBEX",
120
+ "欧洲Stoxx50指数": "SX5E",
121
+ # 美洲股市
122
+ "加拿大S&P/TSX综合指数": "GSPTSE",
123
+ "墨西哥BOLSA指数": "MXX",
124
+ "巴西BOVESPA股票指数": "IBOV",
125
+ # 亚洲股市
126
+ "中国台湾加权指数": "TWJQ",
127
+ "日经225指数": "NKY",
128
+ "首尔综合指数": "KOSPI",
129
+ "印度尼西亚雅加达综合指数": "JCI",
130
+ "印度孟买SENSEX指数": "SENSEX",
131
+ # 澳洲股市
132
+ "澳大利亚标准普尔200指数": "AS51",
133
+ "新西兰NZSE 50指数": "NZ250",
134
+ # 非洲股市
135
+ "埃及CASE 30指数": "CASE",
136
+ }
137
+
138
+ index_global_em_symbol_map = {
139
+ "波罗的海BDI指数": {"code": "BDI", "market": "100"},
140
+ "葡萄牙PSI20": {"code": "PSI20", "market": "100"},
141
+ "菲律宾马尼拉": {"code": "PSI", "market": "100"},
142
+ "泰国SET": {"code": "SET", "market": "100"},
143
+ "俄罗斯RTS": {"code": "RTS", "market": "100"},
144
+ "巴基斯坦卡拉奇": {"code": "KSE100", "market": "100"},
145
+ "越南胡志明": {"code": "VNINDEX", "market": "100"},
146
+ "红筹指数": {"code": "HSCCI", "market": "124"},
147
+ "印尼雅加达综合": {"code": "JKSE", "market": "100"},
148
+ "希腊雅典ASE": {"code": "ASE", "market": "100"},
149
+ "墨西哥BOLSA": {"code": "MXX", "market": "100"},
150
+ "挪威OSEBX": {"code": "OSEBX", "market": "100"},
151
+ "巴西BOVESPA": {"code": "BVSP", "market": "100"},
152
+ "波兰WIG": {"code": "WIG", "market": "100"},
153
+ "印度孟买SENSEX": {"code": "SENSEX", "market": "100"},
154
+ "布拉格指数": {"code": "PX", "market": "100"},
155
+ "荷兰AEX": {"code": "AEX", "market": "100"},
156
+ "冰岛ICEX": {"code": "ICEXI", "market": "100"},
157
+ "斯里兰卡科伦坡": {"code": "CSEALL", "market": "100"},
158
+ "富时新加坡海峡时报": {"code": "STI", "market": "100"},
159
+ "富时意大利MIB": {"code": "MIB", "market": "100"},
160
+ "路透CRB商品指数": {"code": "CRB", "market": "100"},
161
+ "比利时BFX": {"code": "BFX", "market": "100"},
162
+ "富时AIM全股": {"code": "AXX", "market": "100"},
163
+ "新西兰50": {"code": "NZ50", "market": "100"},
164
+ "上证指数": {"code": "000001", "market": "1"},
165
+ "国企指数": {"code": "HSCEI", "market": "100"},
166
+ "沪深300": {"code": "000300", "market": "1"},
167
+ "英国富时100": {"code": "FTSE", "market": "100"},
168
+ "中小100": {"code": "399005", "market": "0"},
169
+ "瑞士SMI": {"code": "SSMI", "market": "100"},
170
+ "西班牙IBEX35": {"code": "IBEX", "market": "100"},
171
+ "瑞典OMXSPI": {"code": "OMXSPI", "market": "100"},
172
+ "爱尔兰综合": {"code": "ISEQ", "market": "100"},
173
+ "韩国KOSPI": {"code": "KS11", "market": "100"},
174
+ "深证成指": {"code": "399001", "market": "0"},
175
+ "韩国KOSPI200": {"code": "KOSPI200", "market": "100"},
176
+ "芬兰赫尔辛基": {"code": "HEX", "market": "100"},
177
+ "恒生指数": {"code": "HSI", "market": "100"},
178
+ "欧洲斯托克50": {"code": "SX5E", "market": "100"},
179
+ "美元指数": {"code": "UDI", "market": "100"},
180
+ "法国CAC40": {"code": "FCHI", "market": "100"},
181
+ "台湾加权": {"code": "TWII", "market": "100"},
182
+ "英国富时250": {"code": "MCX", "market": "100"},
183
+ "富时马来西亚KLCI": {"code": "KLSE", "market": "100"},
184
+ "OMX哥本哈根20": {"code": "OMXC20", "market": "100"},
185
+ "道琼斯": {"code": "DJIA", "market": "100"},
186
+ "奥地利ATX": {"code": "ATX", "market": "100"},
187
+ "加拿大S&P/TSX": {"code": "TSX", "market": "100"},
188
+ "德国DAX30": {"code": "GDAXI", "market": "100"},
189
+ "创业板指": {"code": "399006", "market": "0"},
190
+ "澳大利亚普通股": {"code": "AORD", "market": "100"},
191
+ "标普500": {"code": "SPX", "market": "100"},
192
+ "澳大利亚标普200": {"code": "AS51", "market": "100"},
193
+ "日经225": {"code": "N225", "market": "100"},
194
+ "纳斯达克": {"code": "NDX", "market": "100"},
91
195
  }
@@ -0,0 +1,169 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding:utf-8 -*-
3
+ """
4
+ Date: 2025/3/7 17:00
5
+ Desc: 东方财富网-行情中心-全球指数
6
+ https://quote.eastmoney.com/center/gridlist.html#global_qtzs
7
+ """
8
+
9
+ import pandas as pd
10
+ import requests
11
+
12
+ from akshare.index.cons import index_global_em_symbol_map
13
+
14
+
15
+ def index_global_spot_em() -> pd.DataFrame:
16
+ """
17
+ 东方财富网-行情中心-全球指数-实时行情数据
18
+ https://quote.eastmoney.com/center/gridlist.html#global_qtzs
19
+ :return: 实时行情数据
20
+ :rtype: pandas.DataFrame
21
+ """
22
+ url = "https://push2.eastmoney.com/api/qt/clist/get"
23
+ params = {
24
+ "np": "2",
25
+ "fltt": "1",
26
+ "invt": "2",
27
+ "fs": "i:1.000001,i:0.399001,i:0.399005,i:0.399006,i:1.000300,i:100.HSI,i:100.HSCEI,i:124.HSCCI,"
28
+ "i:100.TWII,i:100.N225,i:100.KOSPI200,i:100.KS11,i:100.STI,i:100.SENSEX,i:100.KLSE,i:100.SET,"
29
+ "i:100.PSI,i:100.KSE100,i:100.VNINDEX,i:100.JKSE,i:100.CSEALL,i:100.SX5E,i:100.FTSE,i:100.MCX,"
30
+ "i:100.AXX,i:100.FCHI,i:100.GDAXI,i:100.RTS,i:100.IBEX,i:100.PSI20,i:100.OMXC20,i:100.BFX,"
31
+ "i:100.AEX,i:100.WIG,i:100.OMXSPI,i:100.SSMI,i:100.HEX,i:100.OSEBX,i:100.ATX,i:100.MIB,"
32
+ "i:100.ASE,i:100.ICEXI,i:100.PX,i:100.ISEQ,i:100.DJIA,i:100.SPX,i:100.NDX,i:100.TSX,"
33
+ "i:100.BVSP,i:100.MXX,i:100.AS51,i:100.AORD,i:100.NZ50,i:100.UDI,i:100.BDI,i:100.CRB",
34
+ "fields": "f12,f13,f14,f292,f1,f2,f4,f3,f152,f17,f18,f15,f16,f7,f124",
35
+ "fid": "f3",
36
+ "pn": "1",
37
+ "pz": "200",
38
+ "po": "1",
39
+ "dect": "1",
40
+ "ut": "fa5fd1943c7b386f172d6893dbfba10b",
41
+ "wbp2u": "|0|0|0|web",
42
+ "_": "1741340608118",
43
+ }
44
+ r = requests.get(url=url, params=params)
45
+ data_json = r.json()
46
+ temp_df = pd.DataFrame(data_json["data"]["diff"]).T
47
+ temp_df.reset_index(inplace=True)
48
+ temp_df["index"] = temp_df["index"].astype(int) + 1
49
+ temp_df.rename(
50
+ columns={
51
+ "index": "序号",
52
+ "f12": "代码",
53
+ "f14": "名称",
54
+ "f17": "最新价",
55
+ "f4": "涨跌额",
56
+ "f3": "涨跌幅",
57
+ "f2": "开盘价",
58
+ "f15": "最高价",
59
+ "f16": "最低价",
60
+ "f18": "昨收价",
61
+ "f7": "振幅",
62
+ "f124": "最新行情时间",
63
+ },
64
+ inplace=True,
65
+ )
66
+ temp_df = temp_df[
67
+ [
68
+ "序号",
69
+ "代码",
70
+ "名称",
71
+ "最新价",
72
+ "涨跌额",
73
+ "涨跌幅",
74
+ "开盘价",
75
+ "最高价",
76
+ "最低价",
77
+ "昨收价",
78
+ "振幅",
79
+ "最新行情时间",
80
+ ]
81
+ ]
82
+ temp_df["最新行情时间"] = pd.to_datetime(
83
+ temp_df["最新行情时间"], unit="s", utc=True, errors="coerce"
84
+ ).dt.tz_convert("Asia/Shanghai")
85
+ temp_df["最新行情时间"] = temp_df["最新行情时间"].dt.strftime("%Y-%m-%d %H:%M:%S")
86
+ temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce") / 100
87
+ temp_df["涨跌额"] = pd.to_numeric(temp_df["涨跌额"], errors="coerce") / 100
88
+ temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce") / 100
89
+ temp_df["开盘价"] = pd.to_numeric(temp_df["开盘价"], errors="coerce") / 100
90
+ temp_df["最高价"] = pd.to_numeric(temp_df["最高价"], errors="coerce") / 100
91
+ temp_df["最低价"] = pd.to_numeric(temp_df["最低价"], errors="coerce") / 100
92
+ temp_df["昨收价"] = pd.to_numeric(temp_df["昨收价"], errors="coerce") / 100
93
+ temp_df["振幅"] = pd.to_numeric(temp_df["振幅"], errors="coerce") / 100
94
+ return temp_df
95
+
96
+
97
+ def index_global_hist_em(symbol: str = "美元指数") -> pd.DataFrame:
98
+ """
99
+ 东方财富网-行情中心-全球指数-历史行情数据
100
+ https://quote.eastmoney.com/gb/zsUDI.html
101
+ :param symbol: 指数名称;可以通过 ak.index_global_spot_em() 获取
102
+ :type symbol: str
103
+ :return: 历史行情数据
104
+ :rtype: pandas.DataFrame
105
+ """
106
+ url = "https://push2his.eastmoney.com/api/qt/stock/kline/get"
107
+ params = {
108
+ "secid": f"{index_global_em_symbol_map[symbol]['market']}.{index_global_em_symbol_map[symbol]['code']}",
109
+ "klt": "101",
110
+ "fqt": "1",
111
+ "lmt": "50000",
112
+ "end": "20500000",
113
+ "iscca": "1",
114
+ "fields1": "f1,f2,f3,f4,f5,f6,f7,f8",
115
+ "fields2": "f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f62,f63,f64",
116
+ "ut": "f057cbcbce2a86e2866ab8877db1d059",
117
+ "forcect": "1",
118
+ }
119
+ r = requests.get(url=url, params=params)
120
+ data_json = r.json()
121
+
122
+ temp_df = pd.DataFrame([item.split(",") for item in data_json["data"]["klines"]])
123
+ temp_df["code"] = data_json["data"]["code"]
124
+ temp_df["name"] = data_json["data"]["name"]
125
+ temp_df.columns = [
126
+ "日期",
127
+ "今开",
128
+ "最新价",
129
+ "最高",
130
+ "最低",
131
+ "-",
132
+ "-",
133
+ "振幅",
134
+ "-",
135
+ "-",
136
+ "-",
137
+ "-",
138
+ "-",
139
+ "-",
140
+ "代码",
141
+ "名称",
142
+ ]
143
+ temp_df = temp_df[
144
+ [
145
+ "日期",
146
+ "代码",
147
+ "名称",
148
+ "今开",
149
+ "最新价",
150
+ "最高",
151
+ "最低",
152
+ "振幅",
153
+ ]
154
+ ]
155
+ temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
156
+ temp_df["今开"] = pd.to_numeric(temp_df["今开"], errors="coerce")
157
+ temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
158
+ temp_df["最高"] = pd.to_numeric(temp_df["最高"], errors="coerce")
159
+ temp_df["最低"] = pd.to_numeric(temp_df["最低"], errors="coerce")
160
+ temp_df["振幅"] = pd.to_numeric(temp_df["振幅"], errors="coerce")
161
+ return temp_df
162
+
163
+
164
+ if __name__ == "__main__":
165
+ index_global_spot_em_df = index_global_spot_em()
166
+ print(index_global_spot_em_df)
167
+
168
+ index_global_hist_em_df = index_global_hist_em(symbol="美元指数")
169
+ print(index_global_hist_em_df)
@@ -0,0 +1,82 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding:utf-8 -*-
3
+ """
4
+ Date: 2025/3/7 17:00
5
+ Desc: 新浪财经-行情中心-环球市场
6
+ https://finance.sina.com.cn/stock/globalindex/quotes/UKX
7
+ """
8
+
9
+ import pandas as pd
10
+ import requests
11
+
12
+ from akshare.index.cons import index_global_sina_symbol_map
13
+
14
+
15
+ def index_global_name_table() -> pd.DataFrame:
16
+ """
17
+ 新浪财经-行情中心-环球市场-名称代码映射表
18
+ https://finance.sina.com.cn/stock/globalindex/quotes/UKX
19
+ :return: 名称代码映射表
20
+ :rtype: pandas.DataFrame
21
+ """
22
+ temp_df = pd.DataFrame.from_dict(
23
+ index_global_sina_symbol_map, orient="index", columns=["代码"]
24
+ )
25
+ temp_df.index.name = "指数名称"
26
+ temp_df.reset_index(inplace=True)
27
+ return temp_df
28
+
29
+
30
+ def index_global_hist_sina(symbol: str = "OMX") -> pd.DataFrame:
31
+ """
32
+ 新浪财经-行情中心-环球市场-历史行情
33
+ https://finance.sina.com.cn/stock/globalindex/quotes/UKX
34
+ :param symbol: 指数名称;可以通过 ak.index_global_name_table() 获取
35
+ :type symbol: str
36
+ :return: 环球市场历史行情
37
+ :rtype: pandas.DataFrame
38
+ """
39
+ url = "https://gi.finance.sina.com.cn/hq/daily"
40
+ params = {
41
+ "symbol": index_global_sina_symbol_map[symbol],
42
+ "num": "10000",
43
+ }
44
+ r = requests.get(url=url, params=params)
45
+ data_json = r.json()
46
+ temp_df = pd.DataFrame(data_json["result"]["data"])
47
+ temp_df.rename(
48
+ columns={
49
+ "d": "date",
50
+ "o": "open",
51
+ "h": "high",
52
+ "l": "low",
53
+ "c": "close",
54
+ "v": "volume",
55
+ },
56
+ inplace=True,
57
+ )
58
+ temp_df = temp_df[
59
+ [
60
+ "date",
61
+ "open",
62
+ "high",
63
+ "low",
64
+ "close",
65
+ "volume",
66
+ ]
67
+ ]
68
+ temp_df["date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
69
+ temp_df["open"] = pd.to_numeric(temp_df["open"], errors="coerce")
70
+ temp_df["high"] = pd.to_numeric(temp_df["high"], errors="coerce")
71
+ temp_df["low"] = pd.to_numeric(temp_df["low"], errors="coerce")
72
+ temp_df["close"] = pd.to_numeric(temp_df["close"], errors="coerce")
73
+ temp_df["volume"] = pd.to_numeric(temp_df["volume"], errors="coerce")
74
+ return temp_df
75
+
76
+
77
+ if __name__ == "__main__":
78
+ index_global_name_table_df = index_global_name_table()
79
+ print(index_global_name_table_df)
80
+
81
+ index_global_hist_sina_df = index_global_hist_sina(symbol="瑞士股票指数")
82
+ print(index_global_hist_sina_df)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: akshare
3
- Version: 1.16.29
3
+ Version: 1.16.31
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
@@ -51,18 +51,15 @@ Dynamic: requires-python
51
51
  Dynamic: summary
52
52
 
53
53
  **欢迎加入专注于财经数据和量化投资的知识社区,获取《AKShare-财经数据宝典》,其汇集了财经数据的使用经验和指南,还独家分享了
54
- 众多国内外财经数据源的使用和注意事项,请点击[了解更多](https://akshare.akfamily.xyz/learn.html)**
54
+ 众多国内外财经数据源的使用和注意事项,请点击[了解更多](https://akshare.akfamily.xyz/learn.html)**。
55
55
 
56
56
  **量化投研视频课程:《PyBroker-入门及实战》已经上架!《PyBroker-进阶及实战》正在更新!**
57
57
 
58
58
  **更多视频教程已经发布:《AKShare-初阶-使用教学》、《AKShare-初阶-实战应用》、《AKShare-源码解析》、《开源项目巡礼》**,
59
59
  详情请关注【数据科学实战】公众号,查看更多课程信息!
60
60
 
61
- **AKQuant 量化教程请访问:[利用 PyBroker 进行量化投资](https://akquant.akfamily.xyz/)**
62
-
63
- **本次发布 [AKTools](https://github.com/akfamily/aktools) 作为 AKShare 的 HTTP API 版本,
64
- 突破 Python 语言的限制,欢迎各位小伙伴试用并提出更好的意见或建议!
65
- 点击 [AKTools](https://github.com/akfamily/aktools) 查看使用指南。另外提供 [awesome-data](https://github.com/akfamily/awesome-data) 方便各位小伙伴查询各种数据源。**
61
+ **广告推广**:期魔方是一款非常专业本地化期货量化终端,无需部署或搭建环境,可直接调用及时和历史数据做回测实盘,
62
+ 支持开箱即用的机器学习训练,策略投研、回测均免费,详情请[访问期魔方官网](https://qmfquant.com)。
66
63
 
67
64
  ![AKShare Logo](https://github.com/akfamily/akshare/blob/main/assets/images/akshare_logo.jpg)
68
65
 
@@ -1,4 +1,4 @@
1
- akshare/__init__.py,sha256=0nKkoBzlF340MgMYFgSBYV8fmLvgWMDXYhA6G_cKozY,189642
1
+ akshare/__init__.py,sha256=kVNyCNLstjadfqiy_rNRHeFtJaIkD-mKEq48yHPI27k,190135
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
@@ -75,6 +75,9 @@ akshare/event/cons.py,sha256=y9Go4OC7H-M4R03uEWcV_llvA91_4r-avtzWyphuSks,12390
75
75
  akshare/event/migration.py,sha256=2lR3D_XHRlOKiarBSbjQVEIm3Spj5hbZIwDOvcyKsEU,3760
76
76
  akshare/file_fold/__init__.py,sha256=RMTf1bT5EOE3ttWpn3hGu1LtUmsVxDoa0W7W0gXHOy8,81
77
77
  akshare/file_fold/calendar.json,sha256=t25_O-jatjQOzR6KmSQdPhZMY85yV_hr9_wq26u7jWo,119773
78
+ akshare/forex/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
+ akshare/forex/cons.py,sha256=62e0ogTbuanOtrw79swGCuygsabJsUqvWdsEwQFJMJA,3659
80
+ akshare/forex/forex_em.py,sha256=XBOg6DTpMMl-0IVqWjJa-hUG3Jz6ZeDEbUjd5SbS1vY,4785
78
81
  akshare/fortune/__init__.py,sha256=4OCuVKMykUB3Ubm8WogA814U5EGLdrexmfTAOcBnYM4,82
79
82
  akshare/fortune/fortune_500.py,sha256=QqF3dLdDiCcSoDxsyEgJf8CHu72Ppsu7u0EajbXr6mg,3197
80
83
  akshare/fortune/fortune_bloomberg.py,sha256=i5HqnICYXKmwy3rOvMLDzJPDJA_am8imKsXzNlLLU6g,3673
@@ -151,13 +154,15 @@ akshare/fx/fx_quote_baidu.py,sha256=wEffLm-b5QiFsuE9KAsNPUsqDZ-JMQmfwOO9wOlex8E,
151
154
  akshare/hf/__init__.py,sha256=UefLnc-fLMPvh05YWo43n3058k7txmCEafhuz3hpsjg,82
152
155
  akshare/hf/hf_sp500.py,sha256=Ak8y_14CQtjeMCsuIP5JV4Od_RSAGEGriSg0PbcBmKQ,1206
153
156
  akshare/index/__init__.py,sha256=RMTf1bT5EOE3ttWpn3hGu1LtUmsVxDoa0W7W0gXHOy8,81
154
- akshare/index/cons.py,sha256=lo-NRP5x8XuNeiZEXBUc0Dy-Dbo29-uU8h6OYZVvfvg,3551
157
+ akshare/index/cons.py,sha256=sstxvhtdG3m2inIhE2geZZnHqNLXrK6GuhcqfI_zE6Q,7789
155
158
  akshare/index/index_cflp.py,sha256=iPn_0kePK74eScwC7rj0IhC-3w-kGQWtWlwsW-J0nbs,4422
156
159
  akshare/index/index_cni.py,sha256=qravLXiETWlegIMV_EIUTDbGQfdC2zsj4LykWzC8Lko,8563
157
160
  akshare/index/index_cons.py,sha256=exCYkXauu3u_liWS5Y0W89F19eSwt6gJmlBciM86txQ,7616
158
161
  akshare/index/index_cx.py,sha256=aAmsIKkswKFNOhAsW0QOhp-q6q1aFOSBtqcDaZhIh6A,16775
159
162
  akshare/index/index_drewry.py,sha256=BM7V6P8K4QUFQArsdaWRu5qJUZaCoyNz97_b8dmLeCw,2937
160
163
  akshare/index/index_eri.py,sha256=7X0KNDBntEkE_qSb2jb6IBv-S8PsevLFdxGT8nKT3W0,2111
164
+ akshare/index/index_global_em.py,sha256=bNSwv_zYyXn3eRQ4BU7IKXu7ENhSszH3RBv2F8yYePs,5992
165
+ akshare/index/index_global_sina.py,sha256=fFJeW-u6Jo1iiuRMVaGJaUZBUA6wUT0L0u6KT3vkJ4I,2494
161
166
  akshare/index/index_hog.py,sha256=kb867BVagt70_ycZMn22ks5Z9jlVbMiuTsvq5ygjeig,1657
162
167
  akshare/index/index_kq_fz.py,sha256=Y-cbxWLpRyGcFcMSDxZZQXdAuD85IuQH5xC2rhtGbRc,3395
163
168
  akshare/index/index_kq_ss.py,sha256=m4hAMNnzHk8JNAnKjkYYVeyG4zUC5zR5i0-u-OxmaGU,3333
@@ -383,8 +388,8 @@ akshare/utils/token_process.py,sha256=K4rGXjh_tgugbRcyOK2h2x0jP3PT65IIK7nxhUKhOe
383
388
  akshare/utils/tqdm.py,sha256=MuPNwcswkOGjwWQOMWXi9ZvQ_RmW4obCWRj2i7HM7FE,847
384
389
  tests/__init__.py,sha256=gNzhlO0UPjFq6Ieb38kaVIODXv4cTDByrdohAZnDYt4,82
385
390
  tests/test_func.py,sha256=j1MGYbZI2if2j_LY1S4FLsf4qfq4NwVqD5wmRlv5Log,832
386
- akshare-1.16.29.dist-info/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
387
- akshare-1.16.29.dist-info/METADATA,sha256=RWyZ6eGQqJw6yAxLc7GyPWNLJYW6pjHFfbwRxsfjupE,13847
388
- akshare-1.16.29.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
389
- akshare-1.16.29.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
390
- akshare-1.16.29.dist-info/RECORD,,
391
+ akshare-1.16.31.dist-info/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
392
+ akshare-1.16.31.dist-info/METADATA,sha256=ZH8UN0jlkrmpO-Wbb5LAsG7vR5njmPAT8K56ZEeo-gE,13653
393
+ akshare-1.16.31.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
394
+ akshare-1.16.31.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
395
+ akshare-1.16.31.dist-info/RECORD,,