akshare 1.16.98__py3-none-any.whl → 1.17.1__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
@@ -3106,9 +3106,11 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
3106
3106
  1.16.96 fix: fix stock_individual_spot_xq interface
3107
3107
  1.16.97 fix: fix fund_open_fund_info_em interface
3108
3108
  1.16.98 fix: fix fund_open_fund_info_em interface
3109
+ 1.16.99 fix: fix stock_info_sz_delist interface
3110
+ 1.17.1 fix: fix stock_gdfx_holding_detail_em interface
3109
3111
  """
3110
3112
 
3111
- __version__ = "1.16.98"
3113
+ __version__ = "1.17.1"
3112
3114
  __author__ = "AKFamily"
3113
3115
 
3114
3116
  import sys
@@ -3130,6 +3132,11 @@ if sys.version_info < (3, 9):
3130
3132
 
3131
3133
  del sys
3132
3134
 
3135
+ """
3136
+ 期权保证金
3137
+ """
3138
+ from akshare.option.option_margin import option_margin, option_margin_symbol
3139
+
3133
3140
  """
3134
3141
  东方财富-港股-证券资料
3135
3142
  """
@@ -658,6 +658,7 @@ def bond_zh_cov_value_analysis(symbol: str = "113527") -> pd.DataFrame:
658
658
  "-",
659
659
  "-",
660
660
  "-",
661
+ "-",
661
662
  ]
662
663
  temp_df = temp_df[
663
664
  [
@@ -0,0 +1,62 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding:utf-8 -*-
3
+ """
4
+ Date: 2025/6/16 18:00
5
+ Desc: 唯爱期货-期权保证金
6
+ https://www.iweiai.com/qihuo/yuanyou
7
+ """
8
+ import requests
9
+ import pandas as pd
10
+ from io import StringIO
11
+
12
+ from bs4 import BeautifulSoup
13
+ from functools import lru_cache
14
+
15
+
16
+ @lru_cache()
17
+ def option_margin_symbol() -> pd.DataFrame:
18
+ """
19
+ 获取商品期权品种代码和名称
20
+ :return: 商品期权品种代码和名称
21
+ :rtype: pandas.DataFrame
22
+ """
23
+ url = "https://www.iweiai.com/qiquan/yuanyou"
24
+ r = requests.get(url)
25
+ soup = BeautifulSoup(r.content, features="lxml")
26
+ symbol_text = [item.get_text() for item in soup.find_all("a") if "qiquan" in item['href']]
27
+ symbol_url = [item['href'] for item in soup.find_all("a") if "qiquan" in item['href']]
28
+ symbol_df = pd.DataFrame([symbol_text, symbol_url]).T
29
+ symbol_df.columns = ["symbol", "url"]
30
+ return symbol_df
31
+
32
+
33
+ def option_margin(symbol: str = "原油期权") -> pd.DataFrame:
34
+ """
35
+ 获取商品期权保证金
36
+ :param symbol: 商品期权品种名称, 如 "原油期权",可以通过 ak.option_margin_symbol() 获取所有商品期权品种代码和名称
37
+ :type symbol: str
38
+ :return: 商品期权保证金
39
+ :rtype: pandas.DataFrame
40
+ """
41
+ option_margin_symbol_df = option_margin_symbol()
42
+ url = option_margin_symbol_df[option_margin_symbol_df['symbol'] == symbol]['url'].values[0]
43
+ r = requests.get(url)
44
+ soup = BeautifulSoup(r.content, features="lxml")
45
+ updated_time = soup.find_all("small")[0].get_text().strip("最近更新:")
46
+ temp_df = pd.read_html(StringIO(r.text))[0]
47
+ temp_df['更新时间'] = updated_time
48
+
49
+ temp_df['结算价'] = pd.to_numeric(temp_df['结算价'], errors='coerce')
50
+ temp_df['交易乘数'] = pd.to_numeric(temp_df['交易乘数'], errors='coerce')
51
+ temp_df['买方权利金'] = pd.to_numeric(temp_df['买方权利金'], errors='coerce')
52
+ temp_df['卖方保证金'] = pd.to_numeric(temp_df['卖方保证金'], errors='coerce')
53
+ temp_df['开仓手续费'] = pd.to_numeric(temp_df['开仓手续费'], errors='coerce')
54
+ temp_df['平今手续费'] = pd.to_numeric(temp_df['平今手续费'], errors='coerce')
55
+ temp_df['平昨手续费'] = pd.to_numeric(temp_df['平昨手续费'], errors='coerce')
56
+ temp_df['手续费(开+平今)'] = pd.to_numeric(temp_df['手续费(开+平今)'], errors='coerce')
57
+ return temp_df
58
+
59
+
60
+ if __name__ == '__main__':
61
+ option_margin_df = option_margin(symbol="原油期权")
62
+ print(option_margin_df)
akshare/stock/cons.py CHANGED
@@ -5,7 +5,7 @@ Date: 2025/5/31 15:00
5
5
  Desc: 股票配置文件
6
6
  """
7
7
 
8
- xq_a_token = "1761314ec4bc6cbe0dec68e68a1d6903623a1853"
8
+ xq_a_token = "b7259d09435458cc3f1a963479abb270a1a016ce"
9
9
 
10
10
  # zh-sina-kcb
11
11
  zh_sina_kcb_stock_url = ("http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/"
@@ -17,39 +17,50 @@ def stock_hot_search_baidu(
17
17
  """
18
18
  百度股市通-热搜股票
19
19
  https://gushitong.baidu.com/expressnews
20
+ https://gushitong.baidu.com/
20
21
  :param symbol: choice of {"全部", "A股", "港股", "美股"}
21
22
  :type symbol: str
22
23
  :param date: 日期
23
24
  :type date: str
24
25
  :param time: time="今日";choice of {"今日", "1小时"}
25
26
  :type time: str
26
- :return: 股东人数及持股集中度
27
+ :return: 热搜股票
27
28
  :rtype: pandas.DataFrame
28
29
  """
29
30
  hour_str = datetime.now().hour
30
31
  symbol_map = {
31
- "全部": "all",
32
+ "全市场": "all",
32
33
  "A股": "ab",
33
34
  "港股": "hk",
34
35
  "美股": "us",
35
36
  }
36
- url = "https://finance.pae.baidu.com/vapi/v1/hotrank"
37
+ url = "https://finance.pae.baidu.com/selfselect/listsugrecomm"
38
+ headers = {
39
+ "Accept": "*/*",
40
+ "Accept-Encoding": "gzip, deflate, br",
41
+ "User-Agent": "PostmanRuntime-ApipostRuntime/1.1.0",
42
+ "Connection": "keep-alive",
43
+ "Cookie": "BAIDUID=27174CD808467DD509B95DF001F5D236%3AFG%3D1;BAIDUID=39D7691FB31E844E631F9FA97F6DC18E%3AFG%3D1",
44
+ "Cache-Control": "no-cache",
45
+ "Host": "finance.pae.baidu.com"
46
+ }
37
47
  params = {
38
48
  "tn": "wisexmlnew",
39
49
  "dsp": "iphone",
40
- "product": "stock",
50
+ "product": "search",
51
+ "style": "tablelist",
52
+ "market": symbol_map[symbol],
53
+ "type": "hour",
41
54
  "day": date,
42
55
  "hour": hour_str,
43
56
  "pn": "0",
44
- "rn": "1000",
45
- "market": symbol_map[symbol],
46
- "type": "day" if time == "今日" else "hour",
57
+ "rn": "12",
47
58
  "finClientType": "pc",
48
59
  }
49
- r = requests.get(url, params=params)
60
+ r = requests.get(url, params=params, headers=headers)
50
61
  data_json = r.json()
51
62
  temp_df = pd.DataFrame(
52
- data_json["Result"]["body"], columns=data_json["Result"]["header"]
63
+ data_json["Result"]['list']["body"], columns=data_json["Result"]['list']["header"]
53
64
  )
54
65
  temp_df["现价"] = pd.to_numeric(temp_df["现价"], errors="coerce")
55
66
  temp_df["排名变化"] = pd.to_numeric(temp_df["排名变化"], errors="coerce")
@@ -58,6 +69,6 @@ def stock_hot_search_baidu(
58
69
 
59
70
  if __name__ == "__main__":
60
71
  stock_hot_search_baidu_df = stock_hot_search_baidu(
61
- symbol="A股", date="20240929", time="今日"
72
+ symbol="A股", date="20250610", time="今日"
62
73
  )
63
74
  print(stock_hot_search_baidu_df)
@@ -348,7 +348,7 @@ def stock_info_sh_delist(symbol: str = "全部") -> pd.DataFrame:
348
348
  return temp_df
349
349
 
350
350
 
351
- def stock_info_sz_delist(symbol: str = "暂停上市公司") -> pd.DataFrame:
351
+ def stock_info_sz_delist(symbol: str = "终止上市公司") -> pd.DataFrame:
352
352
  """
353
353
  深证证券交易所-暂停上市公司-终止上市公司
354
354
  https://www.szse.cn/market/stock/suspend/index.html
@@ -601,11 +601,14 @@ def stock_gdfx_holding_detail_em(
601
601
  :return: 十大股东
602
602
  :rtype: pandas.DataFrame
603
603
  """
604
+ import warnings
605
+
606
+ warnings.filterwarnings(action="ignore", category=FutureWarning)
604
607
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
605
608
  params = {
606
609
  "sortColumns": "NOTICE_DATE,SECURITY_CODE,RANK",
607
610
  "sortTypes": "-1,1,1",
608
- "pageSize": "500",
611
+ "pageSize": "50",
609
612
  "pageNumber": "1",
610
613
  "reportName": "RPT_DMSK_HOLDERS",
611
614
  "columns": "ALL",
@@ -623,7 +626,7 @@ def stock_gdfx_holding_detail_em(
623
626
  r = requests.get(url, params=params)
624
627
  data_json = r.json()
625
628
  temp_df = pd.DataFrame(data_json["result"]["data"])
626
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
629
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
627
630
 
628
631
  big_df.reset_index(inplace=True)
629
632
  big_df["index"] = big_df.index + 1
@@ -1038,7 +1041,7 @@ if __name__ == "__main__":
1038
1041
  )
1039
1042
  print(stock_gdfx_free_holding_detail_em_df)
1040
1043
 
1041
- stock_gdfx_holding_detail_em_df = stock_gdfx_holding_detail_em(date="20210930")
1044
+ stock_gdfx_holding_detail_em_df = stock_gdfx_holding_detail_em(date="20230331")
1042
1045
  print(stock_gdfx_holding_detail_em_df)
1043
1046
 
1044
1047
  stock_gdfx_free_holding_analyse_em_df = stock_gdfx_free_holding_analyse_em(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: akshare
3
- Version: 1.16.98
3
+ Version: 1.17.1
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=ESP6asFJacXWtHDnLfAxC10cA9xMkRK1pmEt2QnkbAk,194226
1
+ akshare/__init__.py,sha256=kg71kAvMY1ghFS2WPTFqY69dpKTSC3stwYwvY8sD8ns,194430
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=9LLy7xSQJ0Q4qAi6PmcbvFJKgvbI8GvVTx4SFs7THd8,23317
34
+ akshare/bond/bond_zh_cov.py,sha256=1qnagbRao4DJcbXK8aT6T3sNcPcIxjyaAbwn9dIBuQo,23330
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
@@ -204,6 +204,7 @@ akshare/option/option_em.py,sha256=9Vm5tDk-i8a0ybzWwa13sUBbWPp5HskYzBlfcs-rF7g,5
204
204
  akshare/option/option_finance.py,sha256=7rnEeHo-7Sddrs36Q4c99CXL_9m8IJzw9S1Aqh3Bw90,12568
205
205
  akshare/option/option_finance_sina.py,sha256=Pzsrl_NKN99nWPSAirq7ushGwSfd738ISVYeCHxMZXE,37843
206
206
  akshare/option/option_lhb_em.py,sha256=6uH1CaRMp4xoIYz-ruEvSi4s1z4gLflSJ4Iw_wPMDdY,9060
207
+ akshare/option/option_margin.py,sha256=VSieQJcXF--kmylJAaZBpFknAqUL4C4Gvi185SQi7bs,2520
207
208
  akshare/option/option_premium_analysis_em.py,sha256=E0_RVSnEcUBlicHv1GdWG5gJYzCgqx6uTXY81y4LY5c,2543
208
209
  akshare/option/option_risk_analysis_em.py,sha256=OcmZ42Ewg9XCJkNDt8uLjtF9akmKsEdoF9Zu97Hz4eE,2587
209
210
  akshare/option/option_risk_indicator_sse.py,sha256=8fny4tQtdCNhNF68xm48ZaK8ceep1aamgNx3ZQeBUrk,2454
@@ -232,7 +233,7 @@ akshare/spot/spot_hog_soozhu.py,sha256=IEt7zrDs0ptAKgMA7QRIk45jcMLcA_LGq6Y3lKLFT
232
233
  akshare/spot/spot_price_qh.py,sha256=rRv09vR8K0U_x6x8AiLgGluxytIXkLatFNVkFbIh8eQ,3756
233
234
  akshare/spot/spot_sge.py,sha256=fXy6I9GchX2rfdPDD2wSN8K-hcDdS3ABzLDLdH-9t4Y,8696
234
235
  akshare/stock/__init__.py,sha256=jSa9260d6aNZajaW68chI2mpPkDSXLOgi3eXrqo4MQ8,82
235
- akshare/stock/cons.py,sha256=ndexqo-xRxoFaduY-sRn_eX69gzgypOub_1HWuGQiKo,43667
236
+ akshare/stock/cons.py,sha256=Z1TmTRiY0DIgDxCeDWSRQnIEYDsswtWtzhIcwl-gCBA,43667
236
237
  akshare/stock/stock_allotment_cninfo.py,sha256=OVjVdWp2XVRNbJvVgtgVVoBmPBJgBB4RyIIgA_9QHM8,6066
237
238
  akshare/stock/stock_ask_bid_em.py,sha256=bo7VNkp1PmK4Z-GPZuVn_I-IAdzeW8cs3W_75KodxCg,3368
238
239
  akshare/stock/stock_board_concept_em.py,sha256=7dIwfF73XrRe1XOj9Q4pvb-X_KXR7CxPQqPziD5nqEU,17725
@@ -253,14 +254,14 @@ akshare/stock/stock_hold_control_cninfo.py,sha256=J1CGX1tZ22UJdOWAkED19o7vdE10Hk
253
254
  akshare/stock/stock_hold_control_em.py,sha256=pPd_nXUqSN8FHxFbG1JAl5iiRpYyOqVoeqYgBgjpHtQ,7289
254
255
  akshare/stock/stock_hold_num_cninfo.py,sha256=JY9LcZMhhTiCHfQJv4pwMrLrpUxTKGLE4oRD6pvflsU,3706
255
256
  akshare/stock/stock_hot_rank_em.py,sha256=WMbadW1CFU3ppZHMSPjG2HtXgs7PgYGugNqmyrRQQe4,7349
256
- akshare/stock/stock_hot_search_baidu.py,sha256=Zex1iZB2qaqsxYPj6EmuzAXLbAa53W8LcePivGwrwAs,1769
257
+ akshare/stock/stock_hot_search_baidu.py,sha256=w-MF4-5IqGE-EJR1FB0VymH6jiJINikTbBELi0L1xW4,2217
257
258
  akshare/stock/stock_hot_up_em.py,sha256=aSV1QIpTeLLkuHbB6GP10A8VFXCfcqLV3HumRTdjiIA,2524
258
259
  akshare/stock/stock_hsgt_em.py,sha256=-O_0bGcutMF7ezlsIEnhboaNYcw974Wrpk-qQbMgsMM,5123
259
260
  akshare/stock/stock_industry.py,sha256=gG8FwylKstLgL_lvM0CWSQgcsd7pe-a4oCSdzCr4bEo,5768
260
261
  akshare/stock/stock_industry_cninfo.py,sha256=-qgKWECckdsEN3o5B57avBY7QrIWaJVBRsOE1-gEThY,6576
261
262
  akshare/stock/stock_industry_pe_cninfo.py,sha256=0OjjsFGG90zJRZEBqaCsjKSpSAgrp3PpXzMtom_ll_s,4287
262
263
  akshare/stock/stock_industry_sw.py,sha256=C0FjDg976EA0EksRS3sChbmJOZmOPEOzKCrHVs2YqTg,1441
263
- akshare/stock/stock_info.py,sha256=t7Y2NLnCPljHIf97MmmFZlrI2699a9y7AzInWxhWoA4,16254
264
+ akshare/stock/stock_info.py,sha256=NK4S8lvhLbyWa-kMfoR6Kv2ReDbIlEQcevofWS5nKPU,16254
264
265
  akshare/stock/stock_info_em.py,sha256=MmRDYZOQFlXMz5FFYDJ863_H2_kZeFmE2mRRyl6l0z8,2508
265
266
  akshare/stock/stock_intraday_em.py,sha256=lKa33VVH9OPisYvUnfib-lmaGzl_iM12uyKUwRERDZE,2391
266
267
  akshare/stock/stock_intraday_sina.py,sha256=7LzXRwjdPo-BHwvs8244-MFiGriPUCFBJqRW-r9iVB4,2359
@@ -317,7 +318,7 @@ akshare/stock_feature/stock_fhps_em.py,sha256=Ex355qj1j_EfuM7ImObuFJoUUqpXO73a-z
317
318
  akshare/stock_feature/stock_fhps_ths.py,sha256=h7NTla-ZQRtyEhFS9BHzh-HTGT5aj3OmFL7L_Z2nKIA,2196
318
319
  akshare/stock_feature/stock_fund_flow.py,sha256=cqBqsFrzwmuLP3k3wYQzvW085QUUfHZ4nBW8Zx7egkQ,18669
319
320
  akshare/stock_feature/stock_gddh_em.py,sha256=N4sH_qF7LZvMs46t7eGtbnahNrEBQPDk6tRSP_1ModM,3563
320
- akshare/stock_feature/stock_gdfx_em.py,sha256=q1eauLZdbcpuonGSZYifY50XqvlDFFYny_KmZnGAV60,39103
321
+ akshare/stock_feature/stock_gdfx_em.py,sha256=wYeWTykJWyPqnGFZc2IDsZxfuYyufhpur2b-fYO9J-o,39197
321
322
  akshare/stock_feature/stock_gdhs.py,sha256=Z6ZMy1A03BqMu9TghcIu2Sd_wwEtpIH7qawHun9G7ns,9036
322
323
  akshare/stock_feature/stock_gdzjc_em.py,sha256=MmH1S9XALEAT1aSlG5jHlDEn7ee9nC2eVXxI1E-U9FE,4497
323
324
  akshare/stock_feature/stock_gpzy_em.py,sha256=FgyjVgdoxrtMM7WwxdQJxK0mYGJklIHaT9KmMCFmEPM,17869
@@ -391,10 +392,10 @@ akshare/utils/func.py,sha256=4cwmXFztU86yJNONJ40KJLvsIEQHBbct4iMm3zT2v30,2315
391
392
  akshare/utils/multi_decrypt.py,sha256=aWoL2iEPeuXHJg8-n7OtMKixLnIhfzepACgxfrfmQB4,1657
392
393
  akshare/utils/token_process.py,sha256=nGtgnZGRprXJkhLXH8mcUH4TgIFwzsTOb0EaEPa0Euo,667
393
394
  akshare/utils/tqdm.py,sha256=MuPNwcswkOGjwWQOMWXi9ZvQ_RmW4obCWRj2i7HM7FE,847
394
- akshare-1.16.98.dist-info/licenses/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
395
+ akshare-1.17.1.dist-info/licenses/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
395
396
  tests/__init__.py,sha256=gNzhlO0UPjFq6Ieb38kaVIODXv4cTDByrdohAZnDYt4,82
396
397
  tests/test_func.py,sha256=j1MGYbZI2if2j_LY1S4FLsf4qfq4NwVqD5wmRlv5Log,832
397
- akshare-1.16.98.dist-info/METADATA,sha256=ypO7W3aqkmxKzvZvcwj7SI5Qr3aCzIusgze8NS5TyB8,11902
398
- akshare-1.16.98.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
399
- akshare-1.16.98.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
400
- akshare-1.16.98.dist-info/RECORD,,
398
+ akshare-1.17.1.dist-info/METADATA,sha256=-ySMMCHrdGEInfUR6pcKoQfq_NxD1gXSy6y-3JvBAq4,11901
399
+ akshare-1.17.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
400
+ akshare-1.17.1.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
401
+ akshare-1.17.1.dist-info/RECORD,,