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 +12 -1
- akshare/fund/fund_portfolio_em.py +23 -20
- akshare/stock/stock_hk_comparison_em.py +175 -0
- akshare/stock/stock_profile_em.py +12 -7
- akshare/stock/stock_zh_comparison_em.py +250 -0
- {akshare-1.17.54.dist-info → akshare-1.17.55.dist-info}/METADATA +1 -1
- {akshare-1.17.54.dist-info → akshare-1.17.55.dist-info}/RECORD +10 -8
- {akshare-1.17.54.dist-info → akshare-1.17.55.dist-info}/WHEEL +0 -0
- {akshare-1.17.54.dist-info → akshare-1.17.55.dist-info}/licenses/LICENSE +0 -0
- {akshare-1.17.54.dist-info → akshare-1.17.55.dist-info}/top_level.txt +0 -0
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
281
|
-
temp_df
|
|
282
|
-
|
|
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,4 +1,4 @@
|
|
|
1
|
-
akshare/__init__.py,sha256=
|
|
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=
|
|
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=
|
|
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.
|
|
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.
|
|
404
|
-
akshare-1.17.
|
|
405
|
-
akshare-1.17.
|
|
406
|
-
akshare-1.17.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|