akshare 1.17.54__py3-none-any.whl → 1.17.55__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
@@ -3161,9 +3161,10 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
3161
3161
  1.17.52 fix: fix fund_overview_em interface
3162
3162
  1.17.53 fix: fix reits_hist_min_em interface
3163
3163
  1.17.54 fix: fix fund_announcement_dividend_em interface
3164
+ 1.17.55 fix: fix stock_zh_growth_comparison_em interface
3164
3165
  """
3165
3166
 
3166
- __version__ = "1.17.54"
3167
+ __version__ = "1.17.55"
3167
3168
  __author__ = "AKFamily"
3168
3169
 
3169
3170
  import sys
@@ -3220,6 +3221,16 @@ from akshare.stock.stock_profile_em import stock_hk_company_profile_em, stock_hk
3220
3221
  """
3221
3222
  from akshare.stock.stock_profile_em import stock_hk_dividend_payout_em, stock_hk_financial_indicator_em
3222
3223
 
3224
+ """
3225
+ 东方财富-港股-行业对比
3226
+ """
3227
+ from akshare.stock.stock_hk_comparison_em import stock_hk_growth_comparison_em, stock_hk_valuation_comparison_em, stock_hk_scale_comparison_em
3228
+
3229
+ """
3230
+ 东方财富-行情中心-同行比较
3231
+ """
3232
+ from akshare.stock.stock_zh_comparison_em import stock_zh_growth_comparison_em, stock_zh_valuation_comparison_em, stock_zh_dupont_comparison_em, stock_zh_scale_comparison_em
3233
+
3223
3234
  """
3224
3235
  东方财富网-行情中心-债券市场-质押式回购
3225
3236
  """
@@ -43,7 +43,18 @@ def fund_portfolio_hold_em(symbol: str = "000001", date: str = "2024") -> pd.Dat
43
43
  item.text.split("\xa0\xa0")[1]
44
44
  for item in soup.find_all(name="h4", attrs={"class": "t"})
45
45
  ]
46
- big_df = pd.DataFrame()
46
+
47
+ column_name = [
48
+ "序号",
49
+ "股票代码",
50
+ "股票名称",
51
+ "占净值比例",
52
+ "持股数",
53
+ "持仓市值",
54
+ "季度",
55
+ ]
56
+ big_df = pd.DataFrame(columns=column_name)
57
+
47
58
  for item in range(len(item_label)):
48
59
  temp_df = pd.read_html(
49
60
  StringIO(data_json["content"]), converters={"股票代码": str}
@@ -74,25 +85,17 @@ def fund_portfolio_hold_em(symbol: str = "000001", date: str = "2024") -> pd.Dat
74
85
  )
75
86
 
76
87
  temp_df["季度"] = item_label[item]
77
- temp_df = temp_df[
78
- [
79
- "序号",
80
- "股票代码",
81
- "股票名称",
82
- "占净值比例",
83
- "持股数",
84
- "持仓市值",
85
- "季度",
86
- ]
87
- ]
88
- big_df = pd.concat(objs=[temp_df, big_df], ignore_index=True)
89
- big_df["占净值比例"] = pd.to_numeric(big_df["占净值比例"], errors="coerce")
90
- big_df["持股数"] = pd.to_numeric(big_df["持股数"], errors="coerce")
91
- big_df["持仓市值"] = pd.to_numeric(big_df["持仓市值"], errors="coerce")
92
- del big_df["序号"]
93
- big_df.reset_index(inplace=True, drop=False)
94
- big_df["index"] = big_df["index"] + 1
95
- big_df.rename(columns={"index": "序号"}, inplace=True)
88
+ temp_df = temp_df[column_name]
89
+ big_df = pd.concat(objs=[temp_df, big_df], ignore_index=True) if not big_df.empty else temp_df
90
+
91
+ if not big_df.empty:
92
+ big_df["占净值比例"] = pd.to_numeric(big_df["占净值比例"], errors="coerce")
93
+ big_df["持股数"] = pd.to_numeric(big_df["持股数"], errors="coerce")
94
+ big_df["持仓市值"] = pd.to_numeric(big_df["持仓市值"], errors="coerce")
95
+ del big_df["序号"]
96
+ big_df.reset_index(inplace=True, drop=False)
97
+ big_df["index"] = big_df["index"] + 1
98
+ big_df.rename(columns={"index": "序号"}, inplace=True)
96
99
  return big_df
97
100
 
98
101
 
@@ -0,0 +1,175 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding:utf-8 -*-
3
+ """
4
+ Date: 2025/9/24 15:00
5
+ Desc: 东方财富-港股-行业对比
6
+ https://emweb.securities.eastmoney.com/PC_HKF10/pages/home/index.html?code=03900&type=web&color=w#/IndustryComparison
7
+ """
8
+
9
+ import pandas as pd
10
+ import requests
11
+
12
+
13
+ def stock_hk_growth_comparison_em(symbol: str = "03900") -> pd.DataFrame:
14
+ """
15
+ 东方财富-港股-行业对比-成长性对比
16
+ https://emweb.securities.eastmoney.com/PC_HKF10/pages/home/index.html?code=03900&type=web&color=w#/IndustryComparison
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_PCF10_INDUSTRY_HKGROWTH',
25
+ 'columns': 'SECUCODE,SECURITY_CODE,ORG_CODE,REPORT_DATE,TYPE_ID,TYPE_TYPE,'
26
+ 'TYPE_NAME,TYPE_NAME_EN,CORRE_SECURITY_CODE,CORRE_SECUCODE,'
27
+ 'CORRE_SECURITY_NAME,EPS_YOY,OPERATE_INCOME_YOY,OPERATE_PROFIT_YOY,'
28
+ 'TOTAL_ASSET_YOY,EPS_YOY_RANK,OPINCOME_YOY_RANK,OPROFIT_YOY_RANK,TOASSET_YOY_RANK',
29
+ 'quoteColumns': '',
30
+ 'filter': f'(SECUCODE="{symbol}.HK")(CORRE_SECUCODE="{symbol}.HK")',
31
+ 'pageNumber': '1',
32
+ 'pageSize': '',
33
+ 'sortTypes': '',
34
+ 'sortColumns': '',
35
+ 'source': 'F10',
36
+ 'client': 'PC',
37
+ 'v': '03313416193688571'
38
+ }
39
+ r = requests.get(url, params=params)
40
+ data_json = r.json()
41
+ field_mapping = {
42
+ 'CORRE_SECURITY_CODE': '代码',
43
+ 'CORRE_SECURITY_NAME': '简称',
44
+ 'EPS_YOY': '基本每股收益同比增长率',
45
+ 'EPS_YOY_RANK': '基本每股收益同比增长率排名',
46
+ 'OPERATE_INCOME_YOY': '营业收入同比增长率',
47
+ 'OPINCOME_YOY_RANK': '营业收入同比增长率排名',
48
+ 'OPERATE_PROFIT_YOY': '营业利润率同比增长率',
49
+ 'OPROFIT_YOY_RANK': '营业利润率同比增长率排名',
50
+ 'TOTAL_ASSET_YOY': '基本每股收总资产同比增长率益同比增长率',
51
+ 'TOASSET_YOY_RANK': '总资产同比增长率排名',
52
+ }
53
+ temp_df = pd.DataFrame(columns=field_mapping.values())
54
+ if data_json['result'] is not None:
55
+ temp_df = pd.DataFrame(data_json['result']['data'])
56
+ temp_df.rename(columns=field_mapping, inplace=True)
57
+ temp_df = temp_df[field_mapping.values()]
58
+ return temp_df
59
+
60
+
61
+ def stock_hk_valuation_comparison_em(symbol: str = "03900") -> pd.DataFrame:
62
+ """
63
+ 东方财富-港股-行业对比-估值对比
64
+ https://emweb.securities.eastmoney.com/PC_HKF10/pages/home/index.html?code=03900&type=web&color=w#/IndustryComparison
65
+ :param symbol: 股票代码
66
+ :type symbol: str
67
+ :return: 估值对比
68
+ :rtype: pandas.DataFrame
69
+ """
70
+ url = 'https://datacenter.eastmoney.com/securities/api/data/v1/get'
71
+ params = {
72
+ 'reportName': 'RPT_PCF10_INDUSTRY_HKCVALUE',
73
+ 'columns': 'SECUCODE,SECURITY_CODE,ORG_CODE,REPORT_DATE,TYPE_ID,'
74
+ 'TYPE_TYPE,TYPE_NAME,TYPE_NAME_EN,CORRE_SECURITY_CODE,'
75
+ 'CORRE_SECUCODE,CORRE_SECURITY_NAME,PE_TTM,PE_LYR,PB_MQR,'
76
+ 'PB_LYR,PS_TTM,PS_LYR,PCE_TTM,PCE_LYR,PE_TTM_RANK,PE_LYR_RANK,'
77
+ 'PB_MQR_RANK,PB_LYR_RANK,PS_TTM_RANK,PS_LYR_RANK,PCE_TTM_RANK,PCE_LYR_RANK',
78
+ 'quoteColumns': '',
79
+ 'filter': f'(SECUCODE="{symbol}.HK")(CORRE_SECUCODE="{symbol}.HK")',
80
+ 'pageNumber': '1',
81
+ 'pageSize': '',
82
+ 'sortTypes': '',
83
+ 'sortColumns': '',
84
+ 'source': 'F10',
85
+ 'client': 'PC',
86
+ 'v': '03445297742754925'
87
+ }
88
+ r = requests.get(url, params=params)
89
+ data_json = r.json()
90
+ field_mapping = {
91
+ 'CORRE_SECURITY_CODE': '代码',
92
+ 'CORRE_SECURITY_NAME': '简称',
93
+ 'PE_TTM': '市盈率-TTM',
94
+ 'PE_TTM_RANK': '市盈率-TTM排名',
95
+ 'PE_LYR': '市盈率-LYR',
96
+ 'PE_LYR_RANK': '市盈率-LYR排名',
97
+ 'PB_MQR': '市净率-MRQ',
98
+ 'PB_MQR_RANK': '市净率-MRQ排名',
99
+ 'PB_LYR': '市净率-LYR',
100
+ 'PB_LYR_RANK': '市净率-LYR排名',
101
+ 'PS_TTM': '市销率-TTM',
102
+ 'PS_TTM_RANK': '市销率-TTM排名',
103
+ 'PS_LYR': '市销率-LYR',
104
+ 'PS_LYR_RANK': '市销率-LYR排名',
105
+ 'PCE_TTM': '市现率-TTM',
106
+ 'PCE_TTM_RANK': '市现率-TTM排名',
107
+ 'PCE_LYR': '市现率-LYR',
108
+ 'PCE_LYR_RANK': '市现率-LYR排名',
109
+ }
110
+ temp_df = pd.DataFrame(columns=field_mapping.values())
111
+ if data_json['result'] is not None:
112
+ temp_df = pd.DataFrame(data_json['result']['data'])
113
+ temp_df.rename(columns=field_mapping, inplace=True)
114
+ temp_df = temp_df[field_mapping.values()]
115
+ return temp_df
116
+
117
+
118
+ def stock_hk_scale_comparison_em(symbol: str = "03900") -> pd.DataFrame:
119
+ """
120
+ 东方财富-港股-行业对比-规模对比
121
+ https://emweb.securities.eastmoney.com/PC_HKF10/pages/home/index.html?code=03900&type=web&color=w#/IndustryComparison
122
+ :param symbol: 股票代码
123
+ :type symbol: str
124
+ :return: 规模对比
125
+ :rtype: pandas.DataFrame
126
+ """
127
+ url = 'https://datacenter.eastmoney.com/securities/api/data/v1/get'
128
+ params = {
129
+ 'reportName': 'RPT_PCF10_INDUSTRY_SCALE',
130
+ 'columns': 'SECURITY_CODE,SECUCODE,TYPE_ID,TYPE_TYPE,TYPE_NAME,'
131
+ 'TYPE_NAME_EN,CORRE_SECURITY_CODE,CORRE_SECUCODE,'
132
+ 'CORRE_SECURITY_NAME,MAXSTDREPORTDATE,HKSDQMV,'
133
+ 'HKTOTAL_MARKET_CAP,OPERATE_INCOME,GROSS_PROFIT,'
134
+ 'HKSDQMV_RANK,HKTOTAL_CAP_RANK,OPERATE_INCOME_RANK,GROSS_PROFIT_RANK',
135
+ 'quoteColumns': '',
136
+ 'filter': f'(SECUCODE="{symbol}.HK")(CORRE_SECUCODE="{symbol}.HK")',
137
+ 'pageNumber': '1',
138
+ 'pageSize': '',
139
+ 'sortTypes': '',
140
+ 'sortColumns': '',
141
+ 'source': 'F10',
142
+ 'client': 'PC',
143
+ 'v': '07839693368708753'
144
+ }
145
+ r = requests.get(url, params=params)
146
+ data_json = r.json()
147
+ field_mapping = {
148
+ 'CORRE_SECURITY_CODE': '代码',
149
+ 'CORRE_SECURITY_NAME': '简称',
150
+ 'HKSDQMV': '总市值',
151
+ 'HKSDQMV_RANK': '总市值排名',
152
+ 'HKTOTAL_MARKET_CAP': '流通市值',
153
+ 'HKTOTAL_CAP_RANK': '流通市值排名',
154
+ 'OPERATE_INCOME': '营业总收入',
155
+ 'OPERATE_INCOME_RANK': '营业总收入排名',
156
+ 'GROSS_PROFIT': '净利润',
157
+ 'GROSS_PROFIT_RANK': '净利润排名',
158
+ }
159
+ temp_df = pd.DataFrame(columns=field_mapping.values())
160
+ if data_json['result'] is not None:
161
+ temp_df = pd.DataFrame(data_json['result']['data'])
162
+ temp_df.rename(columns=field_mapping, inplace=True)
163
+ temp_df = temp_df[field_mapping.values()]
164
+ return temp_df
165
+
166
+
167
+ if __name__ == "__main__":
168
+ stock_hk_growth_comparison_em_df = stock_hk_growth_comparison_em(symbol="03900")
169
+ print(stock_hk_growth_comparison_em_df)
170
+
171
+ stock_hk_valuation_comparison_em_df = stock_hk_valuation_comparison_em(symbol="03900")
172
+ print(stock_hk_valuation_comparison_em_df)
173
+
174
+ stock_hk_scale_comparison_em_df = stock_hk_scale_comparison_em(symbol="03900")
175
+ print(stock_hk_scale_comparison_em_df)
@@ -255,7 +255,7 @@ def stock_hk_dividend_payout_em(symbol: str = "03900") -> pd.DataFrame:
255
255
  }
256
256
  r = requests.get(url, params=params)
257
257
  data_json = r.json()
258
- temp_df = pd.DataFrame(data_json['result']['data'])
258
+
259
259
  field_mapping = {
260
260
  'SECURITY_CODE': '股票代码',
261
261
  'UPDATE_DATE': '最新公告日期',
@@ -267,8 +267,7 @@ def stock_hk_dividend_payout_em(symbol: str = "03900") -> pd.DataFrame:
267
267
  'PLAN_EXPLAIN': '分红方案',
268
268
  'IS_BFP': 'IS_BFP'
269
269
  }
270
- temp_df.rename(columns=field_mapping, inplace=True)
271
- temp_df = temp_df[[
270
+ columns = [
272
271
  "最新公告日期",
273
272
  "财政年度",
274
273
  "分红方案",
@@ -276,10 +275,16 @@ def stock_hk_dividend_payout_em(symbol: str = "03900") -> pd.DataFrame:
276
275
  "除净日",
277
276
  "截至过户日",
278
277
  "发放日",
279
- ]]
280
- temp_df['最新公告日期'] = pd.to_datetime(temp_df['最新公告日期'], errors='coerce').dt.date
281
- temp_df['除净日'] = pd.to_datetime(temp_df['除净日'], errors='coerce').dt.date
282
- temp_df['发放日'] = pd.to_datetime(temp_df['发放日'], errors='coerce').dt.date
278
+ ]
279
+
280
+ temp_df = pd.DataFrame(columns=columns)
281
+ if data_json['result'] is not None:
282
+ temp_df = pd.DataFrame(data_json['result']['data'])
283
+ temp_df.rename(columns=field_mapping, inplace=True)
284
+ temp_df = temp_df[columns]
285
+ temp_df['最新公告日期'] = pd.to_datetime(temp_df['最新公告日期'], errors='coerce').dt.date
286
+ temp_df['除净日'] = pd.to_datetime(temp_df['除净日'], errors='coerce').dt.date
287
+ temp_df['发放日'] = pd.to_datetime(temp_df['发放日'], format='%Y-%m-%d', errors='coerce').dt.date
283
288
  return temp_df
284
289
 
285
290
 
@@ -0,0 +1,250 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding:utf-8 -*-
3
+ """
4
+ Date: 2025/9/24 15:00
5
+ Desc: 东方财富-行情中心-同行比较
6
+ https://emweb.securities.eastmoney.com/pc_hsf10/pages/index.html?type=web&code=000895&color=b#/thbj
7
+ """
8
+
9
+ import pandas as pd
10
+ import requests
11
+
12
+
13
+ def stock_zh_growth_comparison_em(symbol: str = "SZ000895") -> pd.DataFrame:
14
+ """
15
+ 东方财富-行情中心-同行比较-成长性比较
16
+ https://emweb.securities.eastmoney.com/pc_hsf10/pages/index.html?type=web&code=000895&color=b#/thbj/czxbj
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_PCF10_INDUSTRY_GROWTH',
25
+ 'columns': 'ALL',
26
+ 'quoteColumns': '',
27
+ 'filter': f'(SECUCODE="{symbol[2:]}.{symbol[:2]}")',
28
+ 'pageNumber': '',
29
+ 'pageSize': '',
30
+ 'sortTypes': '1',
31
+ 'sortColumns': 'PAIMING',
32
+ 'source': 'HSF10',
33
+ 'client': 'PC',
34
+ 'v': '02747607708067783'
35
+ }
36
+ r = requests.get(url, params=params)
37
+ data_json = r.json()
38
+
39
+ field_mapping = {
40
+ 'CORRE_SECURITY_CODE': '代码',
41
+ 'CORRE_SECURITY_NAME': '简称',
42
+ 'MGSY_3Y': '基本每股收益增长率-3年复合',
43
+ 'MGSYTB': '基本每股收益增长率-24A',
44
+ 'MGSYTTM': '基本每股收益增长率-TTM',
45
+ 'MGSY_1E': '基本每股收益增长率-25E',
46
+ 'MGSY_2E': '基本每股收益增长率-26E',
47
+ 'MGSY_3E': '基本每股收益增长率-27E',
48
+ 'YYSR_3Y': '营业收入增长率-3年复合',
49
+ 'YYSRTB': '营业收入增长率-24A',
50
+ 'YYSRTTM': '营业收入增长率-TTM',
51
+ 'YYSR_1E': '营业收入增长率-25E',
52
+ 'YYSR_2E': '营业收入增长率-26E',
53
+ 'YYSR_3E': '营业收入增长率-27E',
54
+ 'JLR_3Y': '净利润增长率-3年复合',
55
+ 'JLRTB': '净利润增长率-24A',
56
+ 'JLRTTM': '净利润增长率-TTM',
57
+ 'JLR_1E': '净利润增长率-25E',
58
+ 'JLR_2E': '净利润增长率-26E',
59
+ 'JLR_3E': '净利润增长率-27E',
60
+ 'PAIMING': '基本每股收益增长率-3年复合排名',
61
+ }
62
+
63
+ temp_df = pd.DataFrame(columns=field_mapping.values())
64
+ if data_json['result'] is not None:
65
+ temp_df = pd.DataFrame(data_json['result']['data'])
66
+ temp_df.rename(columns=field_mapping, inplace=True)
67
+ temp_df = temp_df[field_mapping.values()]
68
+
69
+ return temp_df
70
+
71
+
72
+ def stock_zh_valuation_comparison_em(symbol: str = "SZ000895") -> pd.DataFrame:
73
+ """
74
+ 东方财富-行情中心-同行比较-估值比较
75
+ https://emweb.securities.eastmoney.com/pc_hsf10/pages/index.html?type=web&code=000895&color=b#/thbj/gzbj
76
+ :param symbol: 股票代码
77
+ :type symbol: str
78
+ :return: 估值比较
79
+ :rtype: pandas.DataFrame
80
+ """
81
+ url = 'https://datacenter.eastmoney.com/securities/api/data/v1/get'
82
+ params = {
83
+ 'reportName': 'RPT_PCF10_INDUSTRY_CVALUE',
84
+ 'columns': 'ALL',
85
+ 'quoteColumns': '',
86
+ 'filter': f'(SECUCODE="{symbol[2:]}.{symbol[:2]}")',
87
+ 'pageNumber': '',
88
+ 'pageSize': '',
89
+ 'sortTypes': '1',
90
+ 'sortColumns': 'PAIMING',
91
+ 'source': 'HSF10',
92
+ 'client': 'PC',
93
+ 'v': '07552428957995401'
94
+ }
95
+ r = requests.get(url, params=params)
96
+ data_json = r.json()
97
+
98
+ field_mapping = {
99
+ 'CORRE_SECURITY_CODE': '代码',
100
+ 'CORRE_SECURITY_NAME': '简称',
101
+ 'PEG': 'PEG',
102
+ 'PE': '市盈率-24A',
103
+ 'PE_TTM': '市盈率-TTM',
104
+ 'PE_1Y': '市盈率-25E',
105
+ 'PE_2Y': '市盈率-26E',
106
+ 'PE_3Y': '市盈率-27E',
107
+ 'PS': '市销率-24A',
108
+ 'PS_TTM': '市销率-TTM',
109
+ 'PS_1Y': '市销率-25E',
110
+ 'PS_2Y': '市销率-26E',
111
+ 'PS_3Y': '市销率-27E',
112
+ 'PB': '市净率-24A',
113
+ 'PB_MRQ': '市净率-MRQ',
114
+ 'PCE': '市现率PCE-24A',
115
+ 'PCE_TTM': '市现率PCE-TTM',
116
+ 'PCF': '市现率PCF-24A',
117
+ 'PCF_TTM': '市现率PCF-TTM',
118
+ 'QYBS': 'EV/EBITDA-24A',
119
+ 'PAIMING': 'PEG排名',
120
+ }
121
+
122
+ temp_df = pd.DataFrame(columns=field_mapping.values())
123
+ if data_json['result'] is not None:
124
+ temp_df = pd.DataFrame(data_json['result']['data'])
125
+ temp_df.rename(columns=field_mapping, inplace=True)
126
+ temp_df = temp_df[field_mapping.values()]
127
+
128
+ return temp_df
129
+
130
+
131
+ def stock_zh_dupont_comparison_em(symbol: str = "SZ000895") -> pd.DataFrame:
132
+ """
133
+ 东方财富-行情中心-同行比较-杜邦分析比较
134
+ https://emweb.securities.eastmoney.com/pc_hsf10/pages/index.html?type=web&code=000895&color=b#/thbj/dbfxbj
135
+ :param symbol: 股票代码
136
+ :type symbol: str
137
+ :return: 杜邦分析比较
138
+ :rtype: pandas.DataFrame
139
+ """
140
+ url = 'https://datacenter.eastmoney.com/securities/api/data/v1/get'
141
+ params = {
142
+ 'reportName': 'RPT_PCF10_INDUSTRY_DBFX',
143
+ 'columns': 'ALL',
144
+ 'quoteColumns': '',
145
+ 'filter': f'(SECUCODE="{symbol[2:]}.{symbol[:2]}")',
146
+ 'pageNumber': '',
147
+ 'pageSize': '',
148
+ 'sortTypes': '1',
149
+ 'sortColumns': 'PAIMING',
150
+ 'source': 'HSF10',
151
+ 'client': 'PC',
152
+ 'v': '05086361194054821'
153
+ }
154
+ r = requests.get(url, params=params)
155
+ data_json = r.json()
156
+
157
+ field_mapping = {
158
+ 'CORRE_SECURITY_CODE': '代码',
159
+ 'CORRE_SECURITY_NAME': '简称',
160
+ 'ROE_AVG': 'ROE-3年平均',
161
+ 'ROEPJ_L3': 'ROE-22A',
162
+ 'ROEPJ_L2': 'ROE-23A',
163
+ 'ROEPJ_L1': 'ROE-24A',
164
+ 'XSJLL_AVG': '净利率-3年平均',
165
+ 'XSJLL_L3': '净利率-22A',
166
+ 'XSJLL_L2': '净利率-23A',
167
+ 'XSJLL_L1': '净利率-24A',
168
+ 'TOAZZL_AVG': '总资产周转率-3年平均',
169
+ 'TOAZZL_L3': '总资产周转率-22A',
170
+ 'TOAZZL_L2': '总资产周转率-23A',
171
+ 'TOAZZL_L1': '总资产周转率-24A',
172
+ 'QYCS_AVG': '权益乘数-3年平均',
173
+ 'QYCS_L3': '权益乘数-22A',
174
+ 'QYCS_L2': '权益乘数-23A',
175
+ 'QYCS_L1': '权益乘数-24A',
176
+ 'PAIMING': 'ROE-3年平均排名',
177
+ }
178
+
179
+ temp_df = pd.DataFrame(columns=field_mapping.values())
180
+ if data_json['result'] is not None:
181
+ temp_df = pd.DataFrame(data_json['result']['data'])
182
+ temp_df.rename(columns=field_mapping, inplace=True)
183
+ temp_df = temp_df[field_mapping.values()]
184
+
185
+ return temp_df
186
+
187
+
188
+ def stock_zh_scale_comparison_em(symbol: str = "SZ000895") -> pd.DataFrame:
189
+ """
190
+ 东方财富-行情中心-同行比较-公司规模
191
+ https://emweb.securities.eastmoney.com/pc_hsf10/pages/index.html?type=web&code=000895&color=b#/thbj/gsgm
192
+ :type symbol: str
193
+ :return: 公司规模
194
+ :rtype: pandas.DataFrame
195
+ """
196
+ url = 'https://datacenter.eastmoney.com/securities/api/data/v1/get'
197
+ params = {
198
+ 'reportName': 'RPT_PCF10_INDUSTRY_MARKET',
199
+ 'columns': 'SECUCODE,SECURITY_CODE,SECURITY_NAME_ABBR,ORG_CODE,'
200
+ 'CORRE_SECUCODE,CORRE_SECURITY_CODE,CORRE_SECURITY_NAME,'
201
+ 'CORRE_ORG_CODE,TOTAL_CAP,FREECAP,TOTAL_OPERATEINCOME,'
202
+ 'NETPROFIT,REPORT_TYPE,TOTAL_CAP_RANK,FREECAP_RANK,'
203
+ 'TOTAL_OPERATEINCOME_RANK,NETPROFIT_RANK',
204
+ 'quoteColumns': '',
205
+ 'filter': f'(SECUCODE="{symbol[2:]}.{symbol[:2]}")(CORRE_SECUCODE="{symbol[2:]}.{symbol[:2]}")',
206
+ 'pageNumber': '1',
207
+ 'pageSize': '5',
208
+ 'sortTypes': '-1',
209
+ 'sortColumns': 'TOTAL_CAP',
210
+ 'source': 'HSF10',
211
+ 'client': 'PC',
212
+ 'v': '005391946600478148'
213
+ }
214
+ r = requests.get(url, params=params)
215
+ data_json = r.json()
216
+
217
+ field_mapping = {
218
+ 'CORRE_SECURITY_CODE': '代码',
219
+ 'CORRE_SECURITY_NAME': '简称',
220
+ 'TOTAL_CAP': '总市值',
221
+ 'TOTAL_CAP_RANK': '总市值排名',
222
+ 'FREECAP': '流通市值',
223
+ 'FREECAP_RANK': '流通市值排名',
224
+ 'TOTAL_OPERATEINCOME': '营业收入',
225
+ 'TOTAL_OPERATEINCOME_RANK': '营业收入排名',
226
+ 'NETPROFIT': '净利润',
227
+ 'NETPROFIT_RANK': '净利润排名',
228
+ }
229
+
230
+ temp_df = pd.DataFrame(columns=field_mapping.values())
231
+ if data_json['result'] is not None:
232
+ temp_df = pd.DataFrame(data_json['result']['data'])
233
+ temp_df.rename(columns=field_mapping, inplace=True)
234
+ temp_df = temp_df[field_mapping.values()]
235
+
236
+ return temp_df
237
+
238
+
239
+ if __name__ == "__main__":
240
+ stock_zh_growth_comparison_em_df = stock_zh_growth_comparison_em(symbol="SZ000895")
241
+ print(stock_zh_growth_comparison_em_df)
242
+
243
+ stock_zh_valuation_comparison_em_df = stock_zh_valuation_comparison_em(symbol="SZ000895")
244
+ print(stock_zh_valuation_comparison_em_df)
245
+
246
+ stock_zh_dupont_comparison_em_df = stock_zh_dupont_comparison_em(symbol="SZ000895")
247
+ print(stock_zh_dupont_comparison_em_df)
248
+
249
+ stock_zh_scale_comparison_em_df = stock_zh_scale_comparison_em(symbol="SZ000895")
250
+ print(stock_zh_scale_comparison_em_df)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: akshare
3
- Version: 1.17.54
3
+ Version: 1.17.55
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=BZx_djehMx3d8Ypt2NxdEV_ILgkICpKFcW9-ZGaU13E,198235
1
+ akshare/__init__.py,sha256=BNyAYPPlOY6KmOezsYgBIlTtaC8a2wuO_-t5uBV6954,198699
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
@@ -99,7 +99,7 @@ akshare/fund/fund_init_em.py,sha256=9nravXI3ayvIRyREHy07U8gO9_dPTNoh3W36iByhmhM,
99
99
  akshare/fund/fund_lof_em.py,sha256=ULWndoG8LswDm8NBApyxzW3-c4llseru_iU-4fnNA2w,12226
100
100
  akshare/fund/fund_manager.py,sha256=piQi1Abqm3u4E0FxTOwiTGx-KTkacH0tCxm-nALlyjY,3101
101
101
  akshare/fund/fund_overview_em.py,sha256=JXjwnLRMpTp_M3cLIGrPn1kxFRiUNqUSKRaby1alMHU,1130
102
- akshare/fund/fund_portfolio_em.py,sha256=xRkVrDdNGmYqpHlIek5Vb0KS3788nACDLd8e6XZcrPI,10755
102
+ akshare/fund/fund_portfolio_em.py,sha256=avC4veKmGPAw4RiA85e71XAxZSAT5NJ2UbfDeXUQCnY,10807
103
103
  akshare/fund/fund_position_lg.py,sha256=lUBAftC6pGZhDp4PqmHsUvugoKRAXX2RDF2PeI63uWY,3939
104
104
  akshare/fund/fund_rank_em.py,sha256=4JoRCwI6k1YXKGjWWG4qQBKEuHYQ3mNGBzFQqnwmWHo,17784
105
105
  akshare/fund/fund_rating.py,sha256=gLUJntv1_2fWa7004yT-Z_IyYC4i27QrdURWgnlp_cE,11948
@@ -251,6 +251,7 @@ akshare/stock/stock_dzjy_em.py,sha256=o0ss5hZhMTxOALKBfSmd36P26PD4i7QzkdCq50VAzV
251
251
  akshare/stock/stock_fund_em.py,sha256=sXIZ-2B6_LhfF24my-NLjAArEbjgxvRV6oSy2WObm08,48913
252
252
  akshare/stock/stock_fund_hold.py,sha256=WstyW_tQuNj2pTEYJ2XMV6I1IQXEZl6EnXEsV26G7Gs,6022
253
253
  akshare/stock/stock_gsrl_em.py,sha256=LF88NFHrW4tjUwT3CloZxomnfuI49h7uCmR_Rpgdy_0,1952
254
+ akshare/stock/stock_hk_comparison_em.py,sha256=Ov6ECj0QzPWuJTz0tp0BgZK_EvGxHCBBUMR9MhAk9nw,7188
254
255
  akshare/stock/stock_hk_famous.py,sha256=Kij-j0RF2EwrBONY-VXgrzHz8YHdjZe07ToYo0DpjFE,2988
255
256
  akshare/stock/stock_hk_fhpx_ths.py,sha256=aMKVjhg7nEeXKbVPsq7BkdTe2hpo1JhRHuWxPuLlVoQ,2192
256
257
  akshare/stock/stock_hk_hot_rank_em.py,sha256=OXdm03AW_4M7VuWciauq_tl0FOkb1Yli4Fbnuz4kp4U,4747
@@ -274,7 +275,7 @@ akshare/stock/stock_ipo_summary_cninfo.py,sha256=Ma-54GsOOhRWxilLH-Qmm0VVbpJQGf2
274
275
  akshare/stock/stock_new_cninfo.py,sha256=EOuZowDLQSSHyPAwXcuPXbQkqhbz2nRBZsM7o2ZWILE,5725
275
276
  akshare/stock/stock_news_cx.py,sha256=aaAD-HTqAX0tOSD-0-Zus9pftvOdD3Y608GKYB1OMPE,1097
276
277
  akshare/stock/stock_profile_cninfo.py,sha256=UgUH3GK52Xl25s3WIXlFmVTlKzDd6QGiTTjj0l-GKsk,3170
277
- akshare/stock/stock_profile_em.py,sha256=xsgzivLwNiE6rCgQE3YKEvjZ0gefSptPDi4tGnDZHjY,10848
278
+ akshare/stock/stock_profile_em.py,sha256=PwJ1L8rvvBfpGPkX65XaraxFvQhpuGJgh_blX3mSLck,10999
278
279
  akshare/stock/stock_rank_forecast.py,sha256=5U0fa4tzhqKrw5kDRahUCFSrbrEx_aRtlqZq2mpeJaU,3199
279
280
  akshare/stock/stock_repurchase_em.py,sha256=oOefrlTUo7gJsREaTHdj5HKr_sQeVamU43ATM0Sffts,5029
280
281
  akshare/stock/stock_share_changes_cninfo.py,sha256=siy4PiZgYuNQn5jUUg2G7CyZ_yvuXNi3MVUDFhe5npY,4923
@@ -292,6 +293,7 @@ akshare/stock/stock_zh_a_special.py,sha256=E2BU73FLyOC-3LcXiLEVQosZ6Vvu6sIgo-Ee6
292
293
  akshare/stock/stock_zh_a_tick_tx.py,sha256=-HOilipACz-FEZWlkSXy9lH8A-BpNzuLDcXr_Rv6dYQ,2230
293
294
  akshare/stock/stock_zh_ah_tx.py,sha256=1DfvP1xF9G4jDnqlacZiYIMWZBujxW9Kycre3yr6MhM,9212
294
295
  akshare/stock/stock_zh_b_sina.py,sha256=-sd0wG4zETsgrJSXivww4YieXfnVMNSfh3phsX_XBBc,16058
296
+ akshare/stock/stock_zh_comparison_em.py,sha256=FrfW5njF0SkgbwYRVowJ5wgkNd0PopfddCUQwuObHrg,8982
295
297
  akshare/stock/stock_zh_kcb_report.py,sha256=7zRovNGqXrPIYtUj9C3ivlYzfiudkaeBNiYPYlzDWkQ,2914
296
298
  akshare/stock/stock_zh_kcb_sina.py,sha256=ZKFoyq9Y-6LhBoYERc4Oqv5q3Llpne7ngDIZcCs8Yq0,9862
297
299
  akshare/stock_a/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -397,10 +399,10 @@ akshare/utils/func.py,sha256=4cwmXFztU86yJNONJ40KJLvsIEQHBbct4iMm3zT2v30,2315
397
399
  akshare/utils/multi_decrypt.py,sha256=aWoL2iEPeuXHJg8-n7OtMKixLnIhfzepACgxfrfmQB4,1657
398
400
  akshare/utils/token_process.py,sha256=nGtgnZGRprXJkhLXH8mcUH4TgIFwzsTOb0EaEPa0Euo,667
399
401
  akshare/utils/tqdm.py,sha256=MuPNwcswkOGjwWQOMWXi9ZvQ_RmW4obCWRj2i7HM7FE,847
400
- akshare-1.17.54.dist-info/licenses/LICENSE,sha256=s18q7gS2g1F9-Cnk5eqrJG4OGWSwSxVEMzIuT6HyYNY,1073
402
+ akshare-1.17.55.dist-info/licenses/LICENSE,sha256=s18q7gS2g1F9-Cnk5eqrJG4OGWSwSxVEMzIuT6HyYNY,1073
401
403
  tests/__init__.py,sha256=gNzhlO0UPjFq6Ieb38kaVIODXv4cTDByrdohAZnDYt4,82
402
404
  tests/test_func.py,sha256=j1MGYbZI2if2j_LY1S4FLsf4qfq4NwVqD5wmRlv5Log,832
403
- akshare-1.17.54.dist-info/METADATA,sha256=l5TbvPpm4VQMc600GoNVZn06qonDNK94BhT89GybA9A,12593
404
- akshare-1.17.54.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
405
- akshare-1.17.54.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
406
- akshare-1.17.54.dist-info/RECORD,,
405
+ akshare-1.17.55.dist-info/METADATA,sha256=-_CkbJ776qeMAVQpstFhR2Vv_mf4TH26yyRr-SimBP0,12593
406
+ akshare-1.17.55.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
407
+ akshare-1.17.55.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
408
+ akshare-1.17.55.dist-info/RECORD,,