akshare 1.16.69__py3-none-any.whl → 1.16.71__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
@@ -3078,9 +3078,11 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
3078
3078
  1.16.67 fix: fix stock_individual_basic_info_xq interface
3079
3079
  1.16.68 fix: fix option_dce_daily interface
3080
3080
  1.16.69 fix: fix stock_individual_spot_xq interface
3081
+ 1.16.70 fix: fix stock_zh_ah_spot_em interface
3082
+ 1.16.71 add: add stock_zh_a_gbjg_em interface
3081
3083
  """
3082
3084
 
3083
- __version__ = "1.16.69"
3085
+ __version__ = "1.16.71"
3084
3086
  __author__ = "AKFamily"
3085
3087
 
3086
3088
  import sys
@@ -3102,6 +3104,11 @@ if sys.version_info < (3, 9):
3102
3104
 
3103
3105
  del sys
3104
3106
 
3107
+ """
3108
+ 东方财富-A股数据-股本结构
3109
+ """
3110
+ from akshare.stock_fundamental.stock_gbjg_em import stock_zh_a_gbjg_em
3111
+
3105
3112
  """
3106
3113
  异步接口
3107
3114
  """
@@ -12,6 +12,7 @@ import pandas as pd
12
12
  import requests
13
13
 
14
14
  from akshare.utils.tqdm import get_tqdm
15
+ from akshare.utils.func import fetch_paginated_data
15
16
 
16
17
 
17
18
  def stock_zh_ah_spot_em() -> pd.DataFrame:
@@ -30,15 +31,13 @@ def stock_zh_ah_spot_em() -> pd.DataFrame:
30
31
  "fields": "f193,f191,f192,f12,f13,f14,f1,f2,f4,f3,f152,f186,f190,f187,f189,f188",
31
32
  "fid": "f3",
32
33
  "pn": "1",
33
- "pz": "200",
34
+ "pz": "100",
34
35
  "po": "1",
35
36
  "dect": "1",
36
37
  "ut": "fa5fd1943c7b386f172d6893dbfba10b",
37
38
  "wbp2u": "|0|0|0|web",
38
39
  }
39
- r = requests.get(url, params=params)
40
- data_json = r.json()
41
- temp_df = pd.DataFrame(data_json["data"]["diff"])
40
+ temp_df = fetch_paginated_data(url, params)
42
41
  temp_df.reset_index(inplace=True)
43
42
  temp_df["index"] = temp_df["index"].astype(int) + 1
44
43
  temp_df.rename(
@@ -95,28 +94,13 @@ def stock_hsgt_sh_hk_spot_em() -> pd.DataFrame:
95
94
  "fields": "f12,f13,f14,f19,f1,f2,f4,f3,f152,f17,f18,f15,f16,f5,f6",
96
95
  "fid": "f12",
97
96
  "pn": "1",
98
- "pz": "200",
97
+ "pz": "100",
99
98
  "po": "1",
100
99
  "dect": "1",
101
100
  "ut": "fa5fd1943c7b386f172d6893dbfba10b",
102
101
  "wbp2u": "|0|0|0|web",
103
102
  }
104
- r = requests.get(url, params=params)
105
- data_json = r.json()
106
- total_page = math.ceil(data_json["data"]["total"] / 200)
107
- temp_list = []
108
- tqdm = get_tqdm()
109
- for page in tqdm(range(1, total_page + 1), leave=False):
110
- params.update(
111
- {
112
- "pn": page,
113
- }
114
- )
115
- r = requests.get(url, params=params, timeout=15)
116
- data_json = r.json()
117
- inner_temp_df = pd.DataFrame(data_json["data"]["diff"])
118
- temp_list.append(inner_temp_df)
119
- temp_df = pd.concat(temp_list, ignore_index=True)
103
+ temp_df = fetch_paginated_data(url, params)
120
104
  temp_df.rename(
121
105
  columns={
122
106
  "f12": "代码",
@@ -0,0 +1,80 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding:utf-8 -*-
3
+ """
4
+ Date: 2025/4/3 18:00
5
+ Desc: 东方财富-A股数据-股本结构
6
+ https://emweb.securities.eastmoney.com/pc_hsf10/pages/index.html?type=web&code=SH603392&color=b#/gbjg/gbjg
7
+ """
8
+
9
+ import requests
10
+ import pandas as pd
11
+
12
+
13
+ def stock_zh_a_gbjg_em(symbol: str = "603392.SH") -> pd.DataFrame:
14
+ """
15
+ 东方财富-A股数据-股本结构
16
+ https://emweb.securities.eastmoney.com/pc_hsf10/pages/index.html#/gbjg
17
+ :param symbol: 股票代码
18
+ :type symbol: str
19
+ :return: 股本结构
20
+ :rtype: pandas.DataFrame
21
+ """
22
+ url = "https://datacenter.eastmoney.com/securities/api/data/v1/get"
23
+ params = {
24
+ "reportName": "RPT_F10_EH_EQUITY",
25
+ "columns": "SECUCODE,SECURITY_CODE,END_DATE,TOTAL_SHARES,LIMITED_SHARES,LIMITED_OTHARS,"
26
+ "LIMITED_DOMESTIC_NATURAL,LIMITED_STATE_LEGAL,LIMITED_OVERSEAS_NOSTATE,LIMITED_OVERSEAS_NATURAL,"
27
+ "UNLIMITED_SHARES,LISTED_A_SHARES,B_FREE_SHARE,H_FREE_SHARE,FREE_SHARES,LIMITED_A_SHARES,"
28
+ "NON_FREE_SHARES,LIMITED_B_SHARES,OTHER_FREE_SHARES,LIMITED_STATE_SHARES,"
29
+ "LIMITED_DOMESTIC_NOSTATE,LOCK_SHARES,LIMITED_FOREIGN_SHARES,LIMITED_H_SHARES,"
30
+ "SPONSOR_SHARES,STATE_SPONSOR_SHARES,SPONSOR_SOCIAL_SHARES,RAISE_SHARES,"
31
+ "RAISE_STATE_SHARES,RAISE_DOMESTIC_SHARES,RAISE_OVERSEAS_SHARES,CHANGE_REASON",
32
+ "quoteColumns": "",
33
+ "filter": f'(SECUCODE="{symbol}")',
34
+ "pageNumber": "1",
35
+ "pageSize": "20",
36
+ "sortTypes": "-1",
37
+ "sortColumns": "END_DATE",
38
+ "source": "HSF10",
39
+ "client": "PC",
40
+ "v": "047483522105257925"
41
+ }
42
+ r = requests.get(url, params=params)
43
+ data_json = r.json()
44
+ temp_df = pd.DataFrame(data_json['result']['data'])
45
+ temp_df.rename(columns={
46
+ "END_DATE": "变更日期",
47
+ "TOTAL_SHARES": "总股本",
48
+ "LISTED_A_SHARES": "已上市流通A股",
49
+ "FREE_SHARES": "已流通股份",
50
+ "CHANGE_REASON": "变动原因",
51
+ "LIMITED_A_SHARES": "流通受限股份",
52
+ "LIMITED_OTHARS": "其他内资持股(受限)",
53
+ "LIMITED_DOMESTIC_NOSTATE": "境内法人持股(受限)",
54
+ "LIMITED_DOMESTIC_NATURAL": "境内自然人持股(受限)",
55
+ }, inplace=True)
56
+ temp_df = temp_df[[
57
+ "变更日期",
58
+ "总股本",
59
+ "流通受限股份",
60
+ "其他内资持股(受限)",
61
+ "境内法人持股(受限)",
62
+ "境内自然人持股(受限)",
63
+ "已流通股份",
64
+ "已上市流通A股",
65
+ "变动原因",
66
+ ]]
67
+ temp_df["变更日期"] = pd.to_datetime(temp_df["变更日期"], errors="coerce").dt.date
68
+ temp_df["总股本"] = pd.to_numeric(temp_df["总股本"], errors="coerce")
69
+ temp_df["流通受限股份"] = pd.to_numeric(temp_df["流通受限股份"], errors="coerce")
70
+ temp_df["其他内资持股(受限)"] = pd.to_numeric(temp_df["其他内资持股(受限)"], errors="coerce")
71
+ temp_df["境内法人持股(受限)"] = pd.to_numeric(temp_df["境内法人持股(受限)"], errors="coerce")
72
+ temp_df["境内自然人持股(受限)"] = pd.to_numeric(temp_df["境内自然人持股(受限)"], errors="coerce")
73
+ temp_df["已流通股份"] = pd.to_numeric(temp_df["已流通股份"], errors="coerce")
74
+ temp_df["已上市流通A股"] = pd.to_numeric(temp_df["已上市流通A股"], errors="coerce")
75
+ return temp_df
76
+
77
+
78
+ if __name__ == '__main__':
79
+ stock_zh_a_gbjg_em_df = stock_zh_a_gbjg_em(symbol="603392.SH")
80
+ print(stock_zh_a_gbjg_em_df)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: akshare
3
- Version: 1.16.69
3
+ Version: 1.16.71
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=gGXuQoM8SbizRcqX6scZDHPbrx1AjYiu5SYKCJ0S1yQ,192564
1
+ akshare/__init__.py,sha256=O2lWGJ_cLV9jzHH7uCfsmrGZScc6-HCkD1PdqPQAjYo,192774
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
@@ -256,7 +256,7 @@ akshare/stock/stock_hold_num_cninfo.py,sha256=JY9LcZMhhTiCHfQJv4pwMrLrpUxTKGLE4o
256
256
  akshare/stock/stock_hot_rank_em.py,sha256=WMbadW1CFU3ppZHMSPjG2HtXgs7PgYGugNqmyrRQQe4,7349
257
257
  akshare/stock/stock_hot_search_baidu.py,sha256=Zex1iZB2qaqsxYPj6EmuzAXLbAa53W8LcePivGwrwAs,1769
258
258
  akshare/stock/stock_hot_up_em.py,sha256=aSV1QIpTeLLkuHbB6GP10A8VFXCfcqLV3HumRTdjiIA,2524
259
- akshare/stock/stock_hsgt_em.py,sha256=8axox6udVclwiC1rSsVpnQA3s-Rfu8TJ3_oKZzR-tDQ,5757
259
+ akshare/stock/stock_hsgt_em.py,sha256=4ce45dgoI93o4J0PjmcgIr-QqcUiCyyff8XTdSuqdes,5223
260
260
  akshare/stock/stock_industry.py,sha256=gG8FwylKstLgL_lvM0CWSQgcsd7pe-a4oCSdzCr4bEo,5768
261
261
  akshare/stock/stock_industry_cninfo.py,sha256=dJ19zPeKRTbUrAoa8fpBB25caZuIjX92RePG8Pz-9h8,6560
262
262
  akshare/stock/stock_industry_pe_cninfo.py,sha256=0OjjsFGG90zJRZEBqaCsjKSpSAgrp3PpXzMtom_ll_s,4287
@@ -368,6 +368,7 @@ akshare/stock_fundamental/stock_finance_hk_em.py,sha256=cCiaWX6ZyKe4W2H9qe-ttpMe
368
368
  akshare/stock_fundamental/stock_finance_sina.py,sha256=432EjGHWFtG0L32PNSC_HWpVLDntabNt9koyUtNG77E,30718
369
369
  akshare/stock_fundamental/stock_finance_ths.py,sha256=nS9bt_hzklzh7pBTCH1PjOa69OUcNZ41Z_zSHiz9Y1U,11527
370
370
  akshare/stock_fundamental/stock_finance_us_em.py,sha256=thRKe9OIfZFQ0q_kAM2kJXCKXGhyPFjHKiiGEK95K2g,9799
371
+ akshare/stock_fundamental/stock_gbjg_em.py,sha256=oKzX9BSMphRSrx0eAyLZ7qfdz-wT-4P2-03fLu_desA,3573
371
372
  akshare/stock_fundamental/stock_hold.py,sha256=hiJx2i3hCW7Kl7kMs4Kh1QNvsg-sIUORvgQaeGjOB-Y,5472
372
373
  akshare/stock_fundamental/stock_ipo_declare.py,sha256=INsQCHRz-j992mg8x71AiIPsLBSr5e_J03EuWmoP0kc,1810
373
374
  akshare/stock_fundamental/stock_kcb_detail_sse.py,sha256=U2w4wUuOTnavqNEmOdQbTZfnEkDdSs91s82YdA6rwNQ,941
@@ -392,10 +393,10 @@ akshare/utils/func.py,sha256=4cwmXFztU86yJNONJ40KJLvsIEQHBbct4iMm3zT2v30,2315
392
393
  akshare/utils/multi_decrypt.py,sha256=aWoL2iEPeuXHJg8-n7OtMKixLnIhfzepACgxfrfmQB4,1657
393
394
  akshare/utils/token_process.py,sha256=nGtgnZGRprXJkhLXH8mcUH4TgIFwzsTOb0EaEPa0Euo,667
394
395
  akshare/utils/tqdm.py,sha256=MuPNwcswkOGjwWQOMWXi9ZvQ_RmW4obCWRj2i7HM7FE,847
395
- akshare-1.16.69.dist-info/licenses/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
396
+ akshare-1.16.71.dist-info/licenses/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
396
397
  tests/__init__.py,sha256=gNzhlO0UPjFq6Ieb38kaVIODXv4cTDByrdohAZnDYt4,82
397
398
  tests/test_func.py,sha256=j1MGYbZI2if2j_LY1S4FLsf4qfq4NwVqD5wmRlv5Log,832
398
- akshare-1.16.69.dist-info/METADATA,sha256=6bTXbT2BQvkvWenKnnZElkPwlVoMe5dJoP5lr6t_Y1c,12591
399
- akshare-1.16.69.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
400
- akshare-1.16.69.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
401
- akshare-1.16.69.dist-info/RECORD,,
399
+ akshare-1.16.71.dist-info/METADATA,sha256=BILN03NBoNu_pjqie6WvwHecj-KdCVF4w0TnArr3ag8,12591
400
+ akshare-1.16.71.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
401
+ akshare-1.16.71.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
402
+ akshare-1.16.71.dist-info/RECORD,,