akshare 1.17.16__py3-none-any.whl → 1.17.18__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
@@ -3123,9 +3123,11 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
3123
3123
  1.17.14 fix: fix forex_spot_em interface
3124
3124
  1.17.15 fix: fix stock_comment_em interface
3125
3125
  1.17.16 fix: fix bond_zh_cov interface
3126
+ 1.17.17 fix: fix stock_hk_spot interface
3127
+ 1.17.18 fix: fix option_dce_daily interface
3126
3128
  """
3127
3129
 
3128
- __version__ = "1.17.16"
3130
+ __version__ = "1.17.18"
3129
3131
  __author__ = "AKFamily"
3130
3132
 
3131
3133
  import sys
akshare/futures/cons.py CHANGED
@@ -199,6 +199,7 @@ market_exchange_symbols = {
199
199
  "PG",
200
200
  "LH", # 20210108 生猪期货
201
201
  "LG", # 20241118 原木期货
202
+ "BZ", # 20250708 纯苯期货
202
203
  ],
203
204
  "czce": [
204
205
  "WH",
@@ -500,6 +501,7 @@ DCE_MAP = {
500
501
  "液化石油气": "PG",
501
502
  "生猪": "LH",
502
503
  "原木": "LG",
504
+ "纯苯": "BZ",
503
505
  }
504
506
 
505
507
 
@@ -678,11 +678,13 @@ def get_futures_daily(
678
678
  temp_df = pd.concat(df_list).reset_index(drop=True)
679
679
  temp_df = temp_df[~temp_df["symbol"].str.contains("efp")]
680
680
  return temp_df
681
+ else:
682
+ return pd.DataFrame()
681
683
 
682
684
 
683
685
  if __name__ == "__main__":
684
686
  get_futures_daily_df = get_futures_daily(
685
- start_date="20250102", end_date="20250102", market="DCE"
687
+ start_date="20250708", end_date="20250708", market="DCE"
686
688
  )
687
689
  print(get_futures_daily_df)
688
690
 
@@ -237,6 +237,10 @@ def futures_global_hist_em(symbol: str = "HG00Y") -> pd.DataFrame:
237
237
  temp_df["总量"] = pd.to_numeric(temp_df["总量"], errors="coerce")
238
238
  temp_df["涨幅"] = pd.to_numeric(temp_df["涨幅"], errors="coerce")
239
239
  temp_df["日增"] = pd.to_numeric(temp_df["日增"], errors="coerce")
240
+ # 日增修复为有符号32位整数值
241
+ unsigned_max, signed_max = (2 ** 32) - 1, (2 ** 31) - 1
242
+ mask = temp_df["日增"] > signed_max
243
+ temp_df.loc[mask, "日增"] = temp_df.loc[mask, "日增"] - (unsigned_max + 1)
240
244
  return temp_df
241
245
 
242
246
 
@@ -26,7 +26,6 @@ from akshare.option.cons import (
26
26
  get_calendar,
27
27
  convert_date,
28
28
  DCE_DAILY_OPTION_URL,
29
- SHFE_OPTION_URL,
30
29
  CZCE_DAILY_OPTION_URL_3,
31
30
  SHFE_HEADERS,
32
31
  )
@@ -157,6 +156,11 @@ def option_dce_daily(
157
156
  table_df[table_df["商品名称"] == "原木"],
158
157
  another_df[another_df.iloc[:, 0].str.contains("lg")],
159
158
  )
159
+ elif symbol == "纯苯期权":
160
+ result_one_df, result_two_df = (
161
+ table_df[table_df["商品名称"] == "纯苯"],
162
+ another_df[another_df.iloc[:, 0].str.contains("bz")],
163
+ )
160
164
  result_one_df.reset_index(inplace=True, drop=True)
161
165
  result_two_df.reset_index(inplace=True, drop=True)
162
166
  result_two_df.columns.name = None
@@ -630,7 +634,7 @@ if __name__ == "__main__":
630
634
  print(option_czce_daily_df)
631
635
 
632
636
  option_dce_daily_one, option_dce_daily_two = option_dce_daily(
633
- symbol="生猪期权", trade_date="20250327"
637
+ symbol="纯苯期权", trade_date="20250708"
634
638
  )
635
639
  print(option_dce_daily_one)
636
640
  print(option_dce_daily_two)
@@ -7,18 +7,15 @@ https://stock.finance.sina.com.cn/hkstock/quotes/00700.html
7
7
  """
8
8
 
9
9
  import pandas as pd
10
- import requests
11
10
  import py_mini_racer
11
+ import requests
12
12
 
13
13
  from akshare.stock.cons import (
14
14
  hk_js_decode,
15
- hk_sina_stock_dict_payload,
16
- hk_sina_stock_list_url,
17
15
  hk_sina_stock_hist_url,
18
16
  hk_sina_stock_hist_hfq_url,
19
17
  hk_sina_stock_hist_qfq_url,
20
18
  )
21
- from akshare.utils import demjson
22
19
 
23
20
 
24
21
  def stock_hk_spot() -> pd.DataFrame:
@@ -28,42 +25,91 @@ def stock_hk_spot() -> pd.DataFrame:
28
25
  :return: 实时行情数据
29
26
  :rtype: pandas.DataFrame
30
27
  """
31
- res = requests.get(hk_sina_stock_list_url, params=hk_sina_stock_dict_payload)
32
- data_json = [
33
- demjson.decode(tt)
34
- for tt in [
35
- item + "}" for item in res.text[1:-1].split("},") if not item.endswith("}")
36
- ]
37
- ]
38
- data_df = pd.DataFrame(data_json)
39
- data_df = data_df[
40
- [
41
- "symbol",
42
- "name",
43
- "engname",
44
- "tradetype",
45
- "lasttrade",
46
- "prevclose",
47
- "open",
48
- "high",
49
- "low",
50
- "volume",
51
- "amount",
52
- "ticktime",
53
- "buy",
54
- "sell",
55
- "pricechange",
56
- "changepercent",
57
- ]
28
+ url = "https://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHKStockData"
29
+ params = {
30
+ "page": "1",
31
+ "num": "60",
32
+ "sort": "symbol",
33
+ "asc": "1",
34
+ "node": "qbgg_hk",
35
+ "_s_r_a": "init",
36
+ }
37
+ big_df = pd.DataFrame()
38
+ from akshare.utils.tqdm import get_tqdm
39
+ tqdm = get_tqdm()
40
+ for page in tqdm(range(1, 100), leave=False):
41
+ params["page"] = str(page)
42
+ r = requests.get(url, params=params)
43
+ data_json = r.json()
44
+ if not data_json:
45
+ break
46
+ temp_df = pd.DataFrame(data_json)
47
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
48
+
49
+
50
+ big_df.columns = [
51
+ "代码",
52
+ "中文名称",
53
+ "英文名称",
54
+ "交易类型",
55
+ "最新价",
56
+ "昨收",
57
+ "今开",
58
+ "最高",
59
+ "最低",
60
+ "成交量",
61
+ "-",
62
+ "成交额",
63
+ "日期时间",
64
+ "买一",
65
+ "卖一",
66
+ "-",
67
+ "-",
68
+ "-",
69
+ "-",
70
+ "-",
71
+ "涨跌额",
72
+ "涨跌幅",
73
+ "-",
74
+ "-",
58
75
  ]
59
- return data_df
76
+ big_df = big_df[[
77
+ "日期时间",
78
+ "代码",
79
+ "中文名称",
80
+ "英文名称",
81
+ "交易类型",
82
+ "最新价",
83
+ "涨跌额",
84
+ "涨跌幅",
85
+ "昨收",
86
+ "今开",
87
+ "最高",
88
+ "最低",
89
+ "成交量",
90
+ "成交额",
91
+ "买一",
92
+ "卖一",
93
+ ]]
94
+ big_df["最新价"] = pd.to_numeric(big_df["最新价"], errors="coerce")
95
+ big_df["涨跌额"] = pd.to_numeric(big_df["涨跌额"], errors="coerce")
96
+ big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"], errors="coerce")
97
+ big_df["昨收"] = pd.to_numeric(big_df["昨收"], errors="coerce")
98
+ big_df["今开"] = pd.to_numeric(big_df["今开"], errors="coerce")
99
+ big_df["最高"] = pd.to_numeric(big_df["最高"], errors="coerce")
100
+ big_df["最低"] = pd.to_numeric(big_df["最低"], errors="coerce")
101
+ big_df["成交量"] = pd.to_numeric(big_df["成交量"], errors="coerce")
102
+ big_df["成交额"] = pd.to_numeric(big_df["成交额"], errors="coerce")
103
+ big_df["买一"] = pd.to_numeric(big_df["买一"], errors="coerce")
104
+ big_df["卖一"] = pd.to_numeric(big_df["卖一"], errors="coerce")
105
+ return big_df
60
106
 
61
107
 
62
108
  def stock_hk_daily(symbol: str = "00981", adjust: str = "") -> pd.DataFrame:
63
109
  """
64
110
  新浪财经-港股-个股的历史行情数据
65
111
  https://stock.finance.sina.com.cn/hkstock/quotes/02912.html
66
- :param symbol: 可以使用 stock_hk_spot 获取
112
+ :param symbol: 可以使用 ak.stock_hk_spot() 获取
67
113
  :type symbol: str
68
114
  :param adjust: "": 返回未复权的数据 ; qfq: 返回前复权后的数据; qfq-factor: 返回前复权因子和调整;
69
115
  :type adjust: str
@@ -234,6 +280,8 @@ def stock_hk_daily(symbol: str = "00981", adjust: str = "") -> pd.DataFrame:
234
280
  qfq_factor_df.reset_index(inplace=True)
235
281
  qfq_factor_df["date"] = pd.to_datetime(qfq_factor_df["date"]).dt.date
236
282
  return qfq_factor_df
283
+ else:
284
+ return pd.DataFrame()
237
285
 
238
286
 
239
287
  if __name__ == "__main__":
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: akshare
3
- Version: 1.17.16
3
+ Version: 1.17.18
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=V-thIqpk-zg-VY-iHewSGFF128lWKK1jDMe1FO3SsL0,195098
1
+ akshare/__init__.py,sha256=L6RgV2_3vy6RfY8OTMZdJx8bPCVguGKaoKXPMzameQw,195183
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
@@ -107,16 +107,16 @@ akshare/fund/fund_scale_em.py,sha256=Fl4ru-j1h99-aEcWZAW6Rd-lvslQ456R0RPdIYPoogE
107
107
  akshare/fund/fund_scale_sina.py,sha256=A0qIzWBQdE3IGS9-cxO9_FNpuH-BAG5HhPk5KzTFTFc,8167
108
108
  akshare/fund/fund_xq.py,sha256=AxMZB-940bNY7-BatVLZiseHNxiWA17hQzTfuxGibPU,11306
109
109
  akshare/futures/__init__.py,sha256=RMTf1bT5EOE3ttWpn3hGu1LtUmsVxDoa0W7W0gXHOy8,81
110
- akshare/futures/cons.py,sha256=Jk8yZNHtz1KNpKuyASys90Lru2qcj1Ii5JyQLLAI0YY,17832
110
+ akshare/futures/cons.py,sha256=uq7Yeb8v5YuMeDtCcvMoDenD89J2FHhHBWWFj4usqes,17891
111
111
  akshare/futures/cot.py,sha256=5D1BP7H_KGzPPP7fzUtPiRZrMuL2gnxfq3ba0HaeJxo,58633
112
112
  akshare/futures/futures_basis.py,sha256=LOM7_gM1ahwOO7q7o9leEe5FaA-kShbO5x8kWVWI3zE,15691
113
113
  akshare/futures/futures_comex_em.py,sha256=NPwOCD6lZUDL4wlGxvbmmJIFkQlW427ERO0vTux13WU,3172
114
114
  akshare/futures/futures_comm_ctp.py,sha256=IyVRCUvhLTFzmcUVvlIaYZ1e38ll7AF8ExhgtXKuzrI,1003
115
115
  akshare/futures/futures_comm_qihuo.py,sha256=uQfabZ63qME8sTaxUbIUVQBVi8yTaPPDhD7voR9PEx0,10504
116
116
  akshare/futures/futures_contract_detail.py,sha256=Glm1x72WBwF4G-f_ZYzHsbNhlQ6Ti1HeF0Rzhx-pfFg,1190
117
- akshare/futures/futures_daily_bar.py,sha256=_T5sX-DJ_msfhYa7y49KP9y2gitPFnVmVl7Wrvr61TQ,25317
117
+ akshare/futures/futures_daily_bar.py,sha256=FpAKaV1t1-AVnaXb3EheyJbK1NtW1GHDf94dSZuXoK0,25357
118
118
  akshare/futures/futures_foreign.py,sha256=2cbMA-eug_jriDFwKZWmA_TbPW2GQAjscpZHBrs287E,2131
119
- akshare/futures/futures_hf_em.py,sha256=eCksGjWRRWXUT61ulzc2UifjTQzC8BNOKqKq7JB20oU,7965
119
+ akshare/futures/futures_hf_em.py,sha256=juiJauO7T6YTHXIS--ZDW-Idk73KMOrXgRBi1xEiBqA,8195
120
120
  akshare/futures/futures_hist_em.py,sha256=Q8I20qRjp2ujiJMCCNBvTHXmrIth22p2k6KpvbkC3dk,6472
121
121
  akshare/futures/futures_hq_sina.py,sha256=HZBAve1yxp1fnwgEy_2CqVoniTXRkt8KI3REt0N0TiY,9575
122
122
  akshare/futures/futures_index_ccidx.py,sha256=_kgWioCOpFNn8WUcL5qKHGb3rUHzrbrx2AszprKpBh4,4460
@@ -196,7 +196,7 @@ akshare/nlp/nlp_interface.py,sha256=PyZjT3PkuTbloop-JwLwZ2kNi22zdO-r_pRUWQ5SmgM,
196
196
  akshare/option/__init__.py,sha256=RMTf1bT5EOE3ttWpn3hGu1LtUmsVxDoa0W7W0gXHOy8,81
197
197
  akshare/option/cons.py,sha256=zTRZ62RFwOcAKfmso-7nZJtT3a8Dt1nQbNnEjSqgjpI,4811
198
198
  akshare/option/option_comm_qihuo.py,sha256=kjbdp-94KJJJi1ex5U03abtlgviqwP0Aahb6FwddPkk,3128
199
- akshare/option/option_commodity.py,sha256=vzdsSLGNPAz4k6U4Ieby7CZoVWIPaGWC5wM-wW3IkhE,27376
199
+ akshare/option/option_commodity.py,sha256=ds1maTiJ7ZR4q5h8tkDXj116k-sA5x5GRST7Lg-AmeM,27567
200
200
  akshare/option/option_commodity_sina.py,sha256=NN2qywfGZphKlHiEuwU7_3aNXTEKaXH0UrU8xLIQ5XQ,7731
201
201
  akshare/option/option_czce.py,sha256=TxmLZn6hxjZa8TyEpwhZazL2m5XbympRHaRjJw1q7lk,2509
202
202
  akshare/option/option_daily_stats_sse_szse.py,sha256=Igqi2IPX_1UT2qgIsPDJtSZ660TjvHy9twn_q7Vrodw,4932
@@ -249,7 +249,7 @@ akshare/stock/stock_gsrl_em.py,sha256=LF88NFHrW4tjUwT3CloZxomnfuI49h7uCmR_Rpgdy_
249
249
  akshare/stock/stock_hk_famous.py,sha256=Kij-j0RF2EwrBONY-VXgrzHz8YHdjZe07ToYo0DpjFE,2988
250
250
  akshare/stock/stock_hk_fhpx_ths.py,sha256=aMKVjhg7nEeXKbVPsq7BkdTe2hpo1JhRHuWxPuLlVoQ,2192
251
251
  akshare/stock/stock_hk_hot_rank_em.py,sha256=OXdm03AW_4M7VuWciauq_tl0FOkb1Yli4Fbnuz4kp4U,4747
252
- akshare/stock/stock_hk_sina.py,sha256=7tD7P4lo6U40s-jkS9E128voZgYx75vbxmG3M0LyqNg,9589
252
+ akshare/stock/stock_hk_sina.py,sha256=qvFljrbxq9NEMeEUxbF6WY-lCsvflVTypTIjOISXzWU,11160
253
253
  akshare/stock/stock_hold_control_cninfo.py,sha256=J1CGX1tZ22UJdOWAkED19o7vdE10Hke91cEbiN1RIYQ,10038
254
254
  akshare/stock/stock_hold_control_em.py,sha256=pPd_nXUqSN8FHxFbG1JAl5iiRpYyOqVoeqYgBgjpHtQ,7289
255
255
  akshare/stock/stock_hold_num_cninfo.py,sha256=JY9LcZMhhTiCHfQJv4pwMrLrpUxTKGLE4oRD6pvflsU,3706
@@ -392,10 +392,10 @@ akshare/utils/func.py,sha256=4cwmXFztU86yJNONJ40KJLvsIEQHBbct4iMm3zT2v30,2315
392
392
  akshare/utils/multi_decrypt.py,sha256=aWoL2iEPeuXHJg8-n7OtMKixLnIhfzepACgxfrfmQB4,1657
393
393
  akshare/utils/token_process.py,sha256=nGtgnZGRprXJkhLXH8mcUH4TgIFwzsTOb0EaEPa0Euo,667
394
394
  akshare/utils/tqdm.py,sha256=MuPNwcswkOGjwWQOMWXi9ZvQ_RmW4obCWRj2i7HM7FE,847
395
- akshare-1.17.16.dist-info/licenses/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
395
+ akshare-1.17.18.dist-info/licenses/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
396
396
  tests/__init__.py,sha256=gNzhlO0UPjFq6Ieb38kaVIODXv4cTDByrdohAZnDYt4,82
397
397
  tests/test_func.py,sha256=j1MGYbZI2if2j_LY1S4FLsf4qfq4NwVqD5wmRlv5Log,832
398
- akshare-1.17.16.dist-info/METADATA,sha256=XgmORd-i4HvPpL3E3yxi3PNZ7ZKgjZfsMRTHnzdeFck,11902
399
- akshare-1.17.16.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
400
- akshare-1.17.16.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
401
- akshare-1.17.16.dist-info/RECORD,,
398
+ akshare-1.17.18.dist-info/METADATA,sha256=PT0Pcx7iEdzMX0dRReCHKcens4K-rcNS-yXs-eoa_kw,11902
399
+ akshare-1.17.18.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
400
+ akshare-1.17.18.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
401
+ akshare-1.17.18.dist-info/RECORD,,