akshare 1.15.33__py3-none-any.whl → 1.15.34__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.

Potentially problematic release.


This version of akshare might be problematic. Click here for more details.

akshare/__init__.py CHANGED
@@ -2943,9 +2943,10 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
2943
2943
  1.15.31 fix: fix stock_zt_pool_strong_em interface
2944
2944
  1.15.32 fix: fix stock_info_global_cls interface
2945
2945
  1.15.33 add: add stock_value_em interface
2946
+ 1.15.34 fix: fix fund_open_fund_rank_em interface
2946
2947
  """
2947
2948
 
2948
- __version__ = "1.15.33"
2949
+ __version__ = "1.15.34"
2949
2950
  __author__ = "AKFamily"
2950
2951
 
2951
2952
  import sys
@@ -4345,14 +4346,6 @@ from akshare.fund.fund_rank_em import (
4345
4346
  fund_lcx_rank_em,
4346
4347
  )
4347
4348
 
4348
- """
4349
- 英为财情-加密货币
4350
- """
4351
- from akshare.crypto.crypto_hist_investing import (
4352
- crypto_hist,
4353
- crypto_name_url_table,
4354
- )
4355
-
4356
4349
  """
4357
4350
  电影票房
4358
4351
  """
@@ -65,7 +65,7 @@ def fund_open_fund_rank_em(symbol: str = "全部") -> pd.DataFrame:
65
65
  "qdii": "",
66
66
  "tabSubtype": ",,,,,",
67
67
  "pi": "1",
68
- "pn": "20000",
68
+ "pn": "30000",
69
69
  "dx": "1",
70
70
  "v": "0.1591891419018292",
71
71
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: akshare
3
- Version: 1.15.33
3
+ Version: 1.15.34
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=pa7AeCnWk1L16gHKMXYJ1OEDPLK0TWq5rsx3ddiuXkE,184478
1
+ akshare/__init__.py,sha256=TIvsy-58dhzMEmUrg3Fiip7I8pzQehul6K5Ruq6Ho9M,184396
2
2
  akshare/datasets.py,sha256=-qdwaQjgBlftX84uM74KJqCYJYkQ50PV416_neA4uls,995
3
3
  akshare/exceptions.py,sha256=WEJjIhSmJ_xXNW6grwV4nufE_cfmmyuhmueVGiN1VAg,878
4
4
  akshare/request.py,sha256=HtFFf9MhfEibR-ETWe-1Tts6ELU4VKSqA-ghaXjegQM,4252
@@ -40,7 +40,6 @@ akshare/cost/__init__.py,sha256=x1R9hH6E0M7C86XhHFzbPiipUWz9IknuhVZrk4gZus4,82
40
40
  akshare/cost/cost_living.py,sha256=_yoGEW4jBfpjhgMxCXvMtBbrCx2PEuOngV3laEoEOvk,2078
41
41
  akshare/crypto/__init__.py,sha256=lbmNMPPLGkW9AgGL4ZnCwoQvPjOFPDNUz6P3arSkNI0,83
42
42
  akshare/crypto/crypto_bitcoin_cme.py,sha256=IO4dxPj-kwtJXo9F_h5tH64__yeDQXs2cavCkgxxp1I,2436
43
- akshare/crypto/crypto_hist_investing.py,sha256=tIeEkFur-u-E2_-R4I_Zy0s_VFnR03CCl4GpgJkLYJw,9748
44
43
  akshare/crypto/crypto_hold.py,sha256=029V9l8FI4Ewyq2Zg9HTLYX33BdF9nz4EUxtltKtKV8,2405
45
44
  akshare/currency/__init__.py,sha256=d8yOOiPqY7_A0AuIpCI71-qxxwyUyCaax5jhE54CeMo,80
46
45
  akshare/currency/currency.py,sha256=NwtfLAWVRoMb8BQ-E92XobydGTOcV_D5zKAZmf3rT6Q,6397
@@ -97,7 +96,7 @@ akshare/fund/fund_lof_em.py,sha256=eWpIlHzUYbscyxvz8awiDERxd7gTucHcGcrBPTCCFno,1
97
96
  akshare/fund/fund_manager.py,sha256=yhpXp_WKradzSc0dMfGKJibNCksts2L2Bg_gvUU4_VQ,2801
98
97
  akshare/fund/fund_portfolio_em.py,sha256=8kk7a8hA22ANfnlnK1j4f5qXepfkgJOiEMpuazP2Xlk,10785
99
98
  akshare/fund/fund_position_lg.py,sha256=dxwGvfc8SXlRziWBWHIcaqOOltsKlxHgHL0Cxr7cCeM,3857
100
- akshare/fund/fund_rank_em.py,sha256=FZX5YxoGAaRWlqKJDp1CLWORjxzvHMFCnoKp2yx-K4k,17874
99
+ akshare/fund/fund_rank_em.py,sha256=e39e11YoctRRYX46mzoOCZQGSA6ZtImoEsuY3ElNjG4,17874
101
100
  akshare/fund/fund_rating.py,sha256=oBZTOBaiC9RMfTK2XGKIMY58sPxc7M6GlMJ3_M3i0lQ,11680
102
101
  akshare/fund/fund_report_cninfo.py,sha256=rhztaa3J48VdnCEXFAl8wMg-P7MI2iQa0HculkvL8CI,8785
103
102
  akshare/fund/fund_scale_em.py,sha256=8XLZpz9DzsAnJCo1moBmzf3u7mfZNZHsb3cPKJ-gCJM,4237
@@ -384,8 +383,8 @@ akshare/utils/token_process.py,sha256=K4rGXjh_tgugbRcyOK2h2x0jP3PT65IIK7nxhUKhOe
384
383
  akshare/utils/tqdm.py,sha256=MuPNwcswkOGjwWQOMWXi9ZvQ_RmW4obCWRj2i7HM7FE,847
385
384
  tests/__init__.py,sha256=gNzhlO0UPjFq6Ieb38kaVIODXv4cTDByrdohAZnDYt4,82
386
385
  tests/test_func.py,sha256=j1MGYbZI2if2j_LY1S4FLsf4qfq4NwVqD5wmRlv5Log,832
387
- akshare-1.15.33.dist-info/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
388
- akshare-1.15.33.dist-info/METADATA,sha256=dDxWhp8PlIq1yuCO0qIq27bfRPmgzpgbIGKcLr7ntSM,13423
389
- akshare-1.15.33.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
390
- akshare-1.15.33.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
391
- akshare-1.15.33.dist-info/RECORD,,
386
+ akshare-1.15.34.dist-info/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
387
+ akshare-1.15.34.dist-info/METADATA,sha256=l0ykGsvmO36Z0SFp4KJzemkml4Vk40I0A7fYrYTwXbc,13423
388
+ akshare-1.15.34.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
389
+ akshare-1.15.34.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
390
+ akshare-1.15.34.dist-info/RECORD,,
@@ -1,249 +0,0 @@
1
- #!/usr/bin/env python
2
- # -*- coding:utf-8 -*-
3
- """
4
- Date: 2022/5/11 17:52
5
- Desc: 加密货币
6
- https://cn.investing.com/crypto/currencies
7
- 高频数据
8
- https://bitcoincharts.com/about/markets-api/
9
- """
10
- import math
11
-
12
- import pandas as pd
13
- import requests
14
- from tqdm import tqdm
15
-
16
- from akshare.datasets import get_crypto_info_csv
17
-
18
-
19
- def crypto_name_url_table(symbol: str = "web") -> pd.DataFrame:
20
- """
21
- 加密货币名称、代码和 ID,每次更新较慢
22
- https://cn.investing.com/crypto/ethereum/historical-data
23
- :param symbol: choice of {"web", "local"}; web 表示从网页获取最新,local 表示利用本地本文件
24
- :type symbol: str
25
- :return: 加密货币名称、代码和 ID
26
- :rtype: pandas.DataFrame
27
- """
28
- if symbol == "web":
29
- headers = {
30
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36",
31
- "X-Requested-With": "XMLHttpRequest",
32
- }
33
- url = "https://cn.investing.com/crypto/Service/LoadCryptoCurrencies"
34
- payload = {
35
- 'draw': '14',
36
- 'columns[0][data]': 'currencies_order',
37
- 'columns[0][name]': 'currencies_order',
38
- 'columns[0][searchable]': 'true',
39
- 'columns[0][orderable]': 'true',
40
- 'columns[0][search][value]': '',
41
- 'columns[0][search][regex]': 'false',
42
- 'columns[1][data]': 'function',
43
- 'columns[1][name]': 'crypto_id',
44
- 'columns[1][searchable]': 'true',
45
- 'columns[1][orderable]': 'false',
46
- 'columns[1][search][value]': '',
47
- 'columns[1][search][regex]': 'false',
48
- 'columns[2][data]': 'function',
49
- 'columns[2][name]': 'name',
50
- 'columns[2][searchable]': 'true',
51
- 'columns[2][orderable]': 'true',
52
- 'columns[2][search][value]': '',
53
- 'columns[2][search][regex]': 'false',
54
- 'columns[3][data]': 'symbol',
55
- 'columns[3][name]': 'symbol',
56
- 'columns[3][searchable]': 'true',
57
- 'columns[3][orderable]': 'true',
58
- 'columns[3][search][value]': '',
59
- 'columns[3][search][regex]': 'false',
60
- 'columns[4][data]': 'function',
61
- 'columns[4][name]': 'price_usd',
62
- 'columns[4][searchable]': 'true',
63
- 'columns[4][orderable]': 'true',
64
- 'columns[4][search][value]': '',
65
- 'columns[4][search][regex]': 'false',
66
- 'columns[5][data]': 'market_cap_formatted',
67
- 'columns[5][name]': 'market_cap_usd',
68
- 'columns[5][searchable]': 'true',
69
- 'columns[5][orderable]': 'true',
70
- 'columns[5][search][value]': '',
71
- 'columns[5][search][regex]': 'false',
72
- 'columns[6][data]': '24h_volume_formatted',
73
- 'columns[6][name]': '24h_volume_usd',
74
- 'columns[6][searchable]': 'true',
75
- 'columns[6][orderable]': 'true',
76
- 'columns[6][search][value]': '',
77
- 'columns[6][search][regex]': 'false',
78
- 'columns[7][data]': 'total_volume',
79
- 'columns[7][name]': 'total_volume',
80
- 'columns[7][searchable]': 'true',
81
- 'columns[7][orderable]': 'true',
82
- 'columns[7][search][value]': '',
83
- 'columns[7][search][regex]': 'false',
84
- 'columns[8][data]': 'change_percent_formatted',
85
- 'columns[8][name]': 'change_percent',
86
- 'columns[8][searchable]': 'true',
87
- 'columns[8][orderable]': 'true',
88
- 'columns[8][search][value]': '',
89
- 'columns[8][search][regex]': 'false',
90
- 'columns[9][data]': 'percent_change_7d_formatted',
91
- 'columns[9][name]': 'percent_change_7d',
92
- 'columns[9][searchable]': 'true',
93
- 'columns[9][orderable]': 'true',
94
- 'columns[9][search][value]': '',
95
- 'columns[9][search][regex]': 'false',
96
- 'order[0][column]': 'currencies_order',
97
- 'order[0][dir]': 'asc',
98
- 'start': '0',
99
- 'length': '100',
100
- 'search[value]': '',
101
- 'search[regex]': 'false',
102
- 'currencyId': '12',
103
- }
104
- r = requests.post(url, data=payload, headers=headers)
105
- data_json = r.json()
106
- total_page = math.ceil(int(data_json['recordsTotal']) / 100)
107
- big_df = pd.DataFrame()
108
- for page in tqdm(range(1, total_page+1), leave=False):
109
- payload.update({
110
- "start": (page-1)*100,
111
- 'length': 100
112
- })
113
- r = requests.post(url, data=payload, headers=headers)
114
- data_json = r.json()
115
- temp_df = pd.DataFrame(data_json['data'])
116
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
117
- big_df = big_df[[
118
- 'symbol',
119
- 'name',
120
- 'name_trans',
121
- 'sml_id',
122
- 'related_pair_ID',
123
- ]]
124
- return big_df
125
- else:
126
- get_crypto_info_csv_path = get_crypto_info_csv()
127
- name_url_df = pd.read_csv(get_crypto_info_csv_path)
128
- return name_url_df
129
-
130
-
131
- def crypto_hist(
132
- symbol: str = "BTC",
133
- period: str = "每日",
134
- start_date: str = "20191020",
135
- end_date: str = "20201020",
136
- ):
137
- """
138
- 加密货币历史数据
139
- https://cn.investing.com/crypto/ethereum/historical-data
140
- :param symbol: 货币名称
141
- :type symbol: str
142
- :param period: choice of {"每日", "每周", "每月"}
143
- :type period: str
144
- :param start_date: '20151020', 注意格式
145
- :type start_date: str
146
- :param end_date: '20201020', 注意格式
147
- :type end_date: str
148
- :return: 加密货币历史数据获取
149
- :rtype: pandas.DataFrame
150
- """
151
- import warnings
152
- warnings.filterwarnings('ignore')
153
- headers = {
154
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36",
155
- "X-Requested-With": "XMLHttpRequest",
156
- }
157
- period_map = {"每日": "Daily", "每周": "Weekly", "每月": "Monthly"}
158
- start_date = "/".join([start_date[:4], start_date[4:6], start_date[6:]])
159
- end_date = "/".join([end_date[:4], end_date[4:6], end_date[6:]])
160
- name_url_df = crypto_name_url_table(symbol='local')
161
- curr_id = name_url_df[name_url_df["symbol"] == symbol]["related_pair_ID"].values[0]
162
- sml_id = name_url_df[name_url_df["symbol"] == symbol]["sml_id"].values[0]
163
- url = "https://cn.investing.com/instruments/HistoricalDataAjax"
164
- payload = {
165
- "curr_id": curr_id,
166
- "smlID": sml_id,
167
- "header": "null",
168
- "st_date": start_date,
169
- "end_date": end_date,
170
- "interval_sec": period_map[period],
171
- "sort_col": "date",
172
- "sort_ord": "DESC",
173
- "action": "historical_data",
174
- }
175
- r = requests.post(url, data=payload, headers=headers)
176
-
177
- temp_df = pd.read_html(r.text)[0]
178
- df_data = temp_df.copy()
179
- if period == "每月":
180
- df_data.index = pd.to_datetime(df_data["日期"], format="%Y年%m月")
181
- else:
182
- df_data.index = pd.to_datetime(df_data["日期"], format="%Y年%m月%d日")
183
- if any(df_data["交易量"].astype(str).str.contains("-")):
184
- df_data["交易量"][df_data["交易量"].str.contains("-")] = df_data["交易量"][
185
- df_data["交易量"].str.contains("-")
186
- ].replace("-", 0)
187
- if any(df_data["交易量"].astype(str).str.contains("B")):
188
- df_data["交易量"][df_data["交易量"].str.contains("B").fillna(False)] = (
189
- df_data["交易量"][df_data["交易量"].str.contains("B").fillna(False)]
190
- .str.replace("B", "")
191
- .str.replace(",", "")
192
- .astype(float)
193
- * 1000000000
194
- )
195
- if any(df_data["交易量"].astype(str).str.contains("M")):
196
- df_data["交易量"][df_data["交易量"].str.contains("M").fillna(False)] = (
197
- df_data["交易量"][df_data["交易量"].str.contains("M").fillna(False)]
198
- .str.replace("M", "")
199
- .str.replace(",", "")
200
- .astype(float)
201
- * 1000000
202
- )
203
- if any(df_data["交易量"].astype(str).str.contains("K")):
204
- df_data["交易量"][df_data["交易量"].str.contains("K").fillna(False)] = (
205
- df_data["交易量"][df_data["交易量"].str.contains("K").fillna(False)]
206
- .str.replace("K", "")
207
- .str.replace(",", "")
208
- .astype(float)
209
- * 1000
210
- )
211
- df_data["交易量"] = df_data["交易量"].astype(float)
212
- df_data["涨跌幅"] = pd.DataFrame(
213
- round(
214
- df_data["涨跌幅"].str.replace(",", "").str.replace("%", "").astype(float)
215
- / 100,
216
- 6,
217
- )
218
- )
219
- del df_data["日期"]
220
- df_data.reset_index(inplace=True)
221
- df_data = df_data[[
222
- "日期",
223
- "收盘",
224
- "开盘",
225
- "高",
226
- "低",
227
- "交易量",
228
- "涨跌幅",
229
- ]]
230
- df_data['日期'] = pd.to_datetime(df_data['日期']).dt.date
231
- df_data['收盘'] = pd.to_numeric(df_data['收盘'])
232
- df_data['开盘'] = pd.to_numeric(df_data['开盘'])
233
- df_data['高'] = pd.to_numeric(df_data['高'])
234
- df_data['低'] = pd.to_numeric(df_data['低'])
235
- df_data['交易量'] = pd.to_numeric(df_data['交易量'])
236
- df_data['涨跌幅'] = pd.to_numeric(df_data['涨跌幅'])
237
- df_data.sort_values('日期', inplace=True)
238
- df_data.reset_index(inplace=True, drop=True)
239
- return df_data
240
-
241
-
242
- if __name__ == "__main__":
243
- crypto_name_url_table_df = crypto_name_url_table(symbol="local")
244
- print(crypto_name_url_table_df)
245
-
246
- crypto_hist_df = crypto_hist(
247
- symbol="BTC", period="每日", start_date="20201020", end_date="20220511"
248
- )
249
- print(crypto_hist_df)