akshare 1.17.15__py3-none-any.whl → 1.17.17__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
@@ -3122,9 +3122,11 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
3122
3122
  1.17.13 fix: fix futures_shfe_warehouse_receipt interface
3123
3123
  1.17.14 fix: fix forex_spot_em interface
3124
3124
  1.17.15 fix: fix stock_comment_em interface
3125
+ 1.17.16 fix: fix bond_zh_cov interface
3126
+ 1.17.17 fix: fix stock_hk_spot interface
3125
3127
  """
3126
3128
 
3127
- __version__ = "1.17.15"
3129
+ __version__ = "1.17.17"
3128
3130
  __author__ = "AKFamily"
3129
3131
 
3130
3132
  import sys
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2025/2/24 18:50
4
+ Date: 2025/7/4 15:00
5
5
  Desc: 新浪财经-债券-沪深可转债-实时行情数据和历史行情数据
6
6
  https://vip.stock.finance.sina.com.cn/mkt/#hskzz_z
7
7
  """
@@ -10,8 +10,8 @@ import datetime
10
10
  import re
11
11
 
12
12
  import pandas as pd
13
- import requests
14
13
  import py_mini_racer
14
+ import requests
15
15
 
16
16
  from akshare.bond.cons import (
17
17
  zh_sina_bond_hs_cov_count_url,
@@ -21,8 +21,8 @@ from akshare.bond.cons import (
21
21
  )
22
22
  from akshare.stock.cons import hk_js_decode
23
23
  from akshare.utils import demjson
24
- from akshare.utils.tqdm import get_tqdm
25
24
  from akshare.utils.func import fetch_paginated_data
25
+ from akshare.utils.tqdm import get_tqdm
26
26
 
27
27
 
28
28
  def _get_zh_bond_hs_cov_page_count() -> int:
@@ -322,10 +322,10 @@ def bond_zh_cov() -> pd.DataFrame:
322
322
  "reportName": "RPT_BOND_CB_LIST",
323
323
  "columns": "ALL",
324
324
  "quoteColumns": "f2~01~CONVERT_STOCK_CODE~CONVERT_STOCK_PRICE,"
325
- "f235~10~SECURITY_CODE~TRANSFER_PRICE,f236~10~SECURITY_CODE~TRANSFER_VALUE,"
326
- "f2~10~SECURITY_CODE~CURRENT_BOND_PRICE,f237~10~SECURITY_CODE~TRANSFER_PREMIUM_RATIO,"
327
- "f239~10~SECURITY_CODE~RESALE_TRIG_PRICE,f240~10~SECURITY_CODE~REDEEM_TRIG_PRICE,"
328
- "f23~01~CONVERT_STOCK_CODE~PBV_RATIO",
325
+ "f235~10~SECURITY_CODE~TRANSFER_PRICE,f236~10~SECURITY_CODE~TRANSFER_VALUE,"
326
+ "f2~10~SECURITY_CODE~CURRENT_BOND_PRICE,f237~10~SECURITY_CODE~TRANSFER_PREMIUM_RATIO,"
327
+ "f239~10~SECURITY_CODE~RESALE_TRIG_PRICE,f240~10~SECURITY_CODE~REDEEM_TRIG_PRICE,"
328
+ "f23~01~CONVERT_STOCK_CODE~PBV_RATIO",
329
329
  "source": "WEB",
330
330
  "client": "WEB",
331
331
  }
@@ -413,6 +413,7 @@ def bond_zh_cov() -> pd.DataFrame:
413
413
  "_",
414
414
  "_",
415
415
  "_",
416
+ "_",
416
417
  ]
417
418
  big_df = big_df[
418
419
  [
@@ -480,7 +481,7 @@ def bond_cov_comparison() -> pd.DataFrame:
480
481
  "fid": "f243",
481
482
  "fs": "b:MK0354",
482
483
  "fields": "f1,f152,f2,f3,f12,f13,f14,f227,f228,f229,f230,f231,f232,f233,f234,"
483
- "f235,f236,f237,f238,f239,f240,f241,f242,f26,f243",
484
+ "f235,f236,f237,f238,f239,f240,f241,f242,f26,f243",
484
485
  }
485
486
  temp_df = fetch_paginated_data(url, params)
486
487
  temp_df.columns = [
@@ -562,9 +563,9 @@ def bond_zh_cov_info(
562
563
  "reportName": "RPT_BOND_CB_LIST",
563
564
  "columns": "ALL",
564
565
  "quoteColumns": "f2~01~CONVERT_STOCK_CODE~CONVERT_STOCK_PRICE,f235~10~SECURITY_CODE~TRANSFER_PRICE,"
565
- "f236~10~SECURITY_CODE~TRANSFER_VALUE,f2~10~SECURITY_CODE~CURRENT_BOND_PRICE,"
566
- "f237~10~SECURITY_CODE~TRANSFER_PREMIUM_RATIO,f239~10~SECURITY_CODE~RESALE_TRIG_PRICE,"
567
- "f240~10~SECURITY_CODE~REDEEM_TRIG_PRICE,f23~01~CONVERT_STOCK_CODE~PBV_RATIO",
566
+ "f236~10~SECURITY_CODE~TRANSFER_VALUE,f2~10~SECURITY_CODE~CURRENT_BOND_PRICE,"
567
+ "f237~10~SECURITY_CODE~TRANSFER_PREMIUM_RATIO,f239~10~SECURITY_CODE~RESALE_TRIG_PRICE,"
568
+ "f240~10~SECURITY_CODE~REDEEM_TRIG_PRICE,f23~01~CONVERT_STOCK_CODE~PBV_RATIO",
568
569
  "quoteType": "0",
569
570
  "source": "WEB",
570
571
  "client": "WEB",
@@ -575,9 +576,9 @@ def bond_zh_cov_info(
575
576
  {
576
577
  "reportName": indicator_map[indicator],
577
578
  "quoteColumns": "f2~01~CONVERT_STOCK_CODE~CONVERT_STOCK_PRICE,f235~10~SECURITY_CODE~TRANSFER_PRICE,"
578
- "f236~10~SECURITY_CODE~TRANSFER_VALUE,f2~10~SECURITY_CODE~CURRENT_BOND_PRICE,"
579
- "f237~10~SECURITY_CODE~TRANSFER_PREMIUM_RATIO,f239~10~SECURITY_CODE~RESALE_TRIG_PRICE,"
580
- "f240~10~SECURITY_CODE~REDEEM_TRIG_PRICE,f23~01~CONVERT_STOCK_CODE~PBV_RATIO",
579
+ "f236~10~SECURITY_CODE~TRANSFER_VALUE,f2~10~SECURITY_CODE~CURRENT_BOND_PRICE,"
580
+ "f237~10~SECURITY_CODE~TRANSFER_PREMIUM_RATIO,f239~10~SECURITY_CODE~RESALE_TRIG_PRICE,"
581
+ "f240~10~SECURITY_CODE~REDEEM_TRIG_PRICE,f23~01~CONVERT_STOCK_CODE~PBV_RATIO",
581
582
  }
582
583
  )
583
584
  r = requests.get(url, params=params)
@@ -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
 
@@ -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.15
3
+ Version: 1.17.17
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=ktLW1vauMdFDROqEWHGhU7HQuC7K0niIzyKch8rh-m0,195059
1
+ akshare/__init__.py,sha256=mFf1ewyE4w8JgrUaDbWD5Zy5VIDJFwHMYZpBnEYgQnk,195139
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
@@ -31,7 +31,7 @@ akshare/bond/bond_info_cm.py,sha256=VBu9UM9tUcGDRV07pndU9yttLDF_Nk3b0vU0n65qpHs,
31
31
  akshare/bond/bond_issue_cninfo.py,sha256=tPoZhF-_sIX9ztCKB0K0-Z4Kd9b-389bP3_CdFK7Wb0,21672
32
32
  akshare/bond/bond_nafmii.py,sha256=cekcobyXKMG1zDuM8wHWOn__SuWELxYmUwfGVmLRP40,2155
33
33
  akshare/bond/bond_summary.py,sha256=_Z2OVjE3UpfxN2GhQ2FoE9eHCjQFENz0DStyJQcYkH4,3584
34
- akshare/bond/bond_zh_cov.py,sha256=1qnagbRao4DJcbXK8aT6T3sNcPcIxjyaAbwn9dIBuQo,23330
34
+ akshare/bond/bond_zh_cov.py,sha256=yrL4R4H7rV824ri0qO-Cis36ADJwvEtBODTV_vcliv4,23512
35
35
  akshare/bond/bond_zh_sina.py,sha256=msj7upgqaCTzC_MxzhUm7hVKtzHeWRUjlcjvZn2zlbw,4654
36
36
  akshare/bond/cons.py,sha256=w5XTyOS4FdwrYFTtxwvtZr59teM29-OgzLqRDXT0H2s,1805
37
37
  akshare/cal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -116,7 +116,7 @@ akshare/futures/futures_comm_qihuo.py,sha256=uQfabZ63qME8sTaxUbIUVQBVi8yTaPPDhD7
116
116
  akshare/futures/futures_contract_detail.py,sha256=Glm1x72WBwF4G-f_ZYzHsbNhlQ6Ti1HeF0Rzhx-pfFg,1190
117
117
  akshare/futures/futures_daily_bar.py,sha256=_T5sX-DJ_msfhYa7y49KP9y2gitPFnVmVl7Wrvr61TQ,25317
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
@@ -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.15.dist-info/licenses/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
395
+ akshare-1.17.17.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.15.dist-info/METADATA,sha256=xdhW5cNJGgFWgJa_0pCEyvq3YBHjsoh16QfjJxDyuOo,11902
399
- akshare-1.17.15.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
400
- akshare-1.17.15.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
401
- akshare-1.17.15.dist-info/RECORD,,
398
+ akshare-1.17.17.dist-info/METADATA,sha256=gcxxCkXok3AMjAwci916eshTjgKsa_5Gdcv0REPRxXI,11902
399
+ akshare-1.17.17.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
400
+ akshare-1.17.17.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
401
+ akshare-1.17.17.dist-info/RECORD,,