akshare 1.16.24__py3-none-any.whl → 1.16.26__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 +8 -1
- akshare/stock/stock_hsgt_em.py +158 -0
- akshare/stock/stock_zh_ah_tx.py +23 -26
- akshare/stock_feature/stock_hist_em.py +3 -3
- akshare/stock_feature/stock_hsgt_em.py +135 -80
- akshare/stock_fundamental/stock_finance_ths.py +2 -1
- {akshare-1.16.24.dist-info → akshare-1.16.26.dist-info}/METADATA +1 -1
- {akshare-1.16.24.dist-info → akshare-1.16.26.dist-info}/RECORD +11 -10
- {akshare-1.16.24.dist-info → akshare-1.16.26.dist-info}/LICENSE +0 -0
- {akshare-1.16.24.dist-info → akshare-1.16.26.dist-info}/WHEEL +0 -0
- {akshare-1.16.24.dist-info → akshare-1.16.26.dist-info}/top_level.txt +0 -0
akshare/__init__.py
CHANGED
@@ -3033,9 +3033,11 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
|
|
3033
3033
|
1.16.22 fix: fix fund_money_fund_info_em interface
|
3034
3034
|
1.16.23 fix: fix stock_board_industry_cons_em interface
|
3035
3035
|
1.16.24 fix: fix stock_financial_hk_report_em interface
|
3036
|
+
1.16.25 fix: fix stock_financial_abstract_ths interface
|
3037
|
+
1.16.26 add: add stock_hsgt_sh_hk_spot_em interface
|
3036
3038
|
"""
|
3037
3039
|
|
3038
|
-
__version__ = "1.16.
|
3040
|
+
__version__ = "1.16.26"
|
3039
3041
|
__author__ = "AKFamily"
|
3040
3042
|
|
3041
3043
|
import sys
|
@@ -3057,6 +3059,11 @@ if sys.version_info < (3, 9):
|
|
3057
3059
|
|
3058
3060
|
del sys
|
3059
3061
|
|
3062
|
+
"""
|
3063
|
+
东方财富网-行情中心-沪深港通
|
3064
|
+
"""
|
3065
|
+
from akshare.stock.stock_hsgt_em import stock_zh_ah_spot_em, stock_hsgt_sh_hk_spot_em
|
3066
|
+
|
3060
3067
|
"""
|
3061
3068
|
东方财富-美股-财务分析-三大报表
|
3062
3069
|
"""
|
@@ -0,0 +1,158 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# -*- coding:utf-8 -*-
|
3
|
+
"""
|
4
|
+
Date: 2025/3/4 23:00
|
5
|
+
Desc: 东方财富网-行情中心-沪深港通
|
6
|
+
https://quote.eastmoney.com/center/gridlist.html#ah_comparison
|
7
|
+
"""
|
8
|
+
|
9
|
+
import pandas as pd
|
10
|
+
import requests
|
11
|
+
|
12
|
+
|
13
|
+
def stock_zh_ah_spot_em() -> pd.DataFrame:
|
14
|
+
"""
|
15
|
+
东方财富网-行情中心-沪深港通-AH股比价-实时行情
|
16
|
+
https://quote.eastmoney.com/center/gridlist.html#ah_comparison
|
17
|
+
:return: 东方财富网-行情中心-沪深港通-AH股比价-实时行情
|
18
|
+
:rtype: pandas.DataFrame
|
19
|
+
"""
|
20
|
+
url = "https://push2.eastmoney.com/api/qt/clist/get"
|
21
|
+
params = {
|
22
|
+
"np": "2",
|
23
|
+
"fltt": "1",
|
24
|
+
"invt": "2",
|
25
|
+
"fs": "b:DLMK0101",
|
26
|
+
"fields": "f193,f191,f192,f12,f13,f14,f1,f2,f4,f3,f152,f186,f190,f187,f189,f188",
|
27
|
+
"fid": "f3",
|
28
|
+
"pn": "1",
|
29
|
+
"pz": "50000",
|
30
|
+
"po": "1",
|
31
|
+
"dect": "1",
|
32
|
+
"ut": "fa5fd1943c7b386f172d6893dbfba10b",
|
33
|
+
"wbp2u": "|0|0|0|web",
|
34
|
+
"_": "1741100627371",
|
35
|
+
}
|
36
|
+
r = requests.get(url, params=params)
|
37
|
+
data_json = r.json()
|
38
|
+
temp_df = pd.DataFrame(data_json["data"]["diff"]).T
|
39
|
+
temp_df.reset_index(inplace=True)
|
40
|
+
temp_df["index"] = temp_df["index"].astype(int) + 1
|
41
|
+
temp_df.rename(
|
42
|
+
columns={
|
43
|
+
"index": "序号",
|
44
|
+
"f193": "名称",
|
45
|
+
"f12": "H股代码",
|
46
|
+
"f2": "最新价-HKD",
|
47
|
+
"f3": "H股-涨跌幅",
|
48
|
+
"f191": "A股代码",
|
49
|
+
"f186": "最新价-RMB",
|
50
|
+
"f187": "A股-涨跌幅",
|
51
|
+
"f189": "比价",
|
52
|
+
"f188": "溢价",
|
53
|
+
},
|
54
|
+
inplace=True,
|
55
|
+
)
|
56
|
+
temp_df = temp_df[
|
57
|
+
[
|
58
|
+
"序号",
|
59
|
+
"名称",
|
60
|
+
"H股代码",
|
61
|
+
"最新价-HKD",
|
62
|
+
"H股-涨跌幅",
|
63
|
+
"A股代码",
|
64
|
+
"最新价-RMB",
|
65
|
+
"A股-涨跌幅",
|
66
|
+
"比价",
|
67
|
+
"溢价",
|
68
|
+
]
|
69
|
+
]
|
70
|
+
temp_df["最新价-HKD"] = pd.to_numeric(temp_df["最新价-HKD"], errors="coerce") / 1000
|
71
|
+
temp_df["H股-涨跌幅"] = pd.to_numeric(temp_df["H股-涨跌幅"], errors="coerce") / 100
|
72
|
+
temp_df["最新价-RMB"] = pd.to_numeric(temp_df["最新价-RMB"], errors="coerce") / 100
|
73
|
+
temp_df["A股-涨跌幅"] = pd.to_numeric(temp_df["A股-涨跌幅"], errors="coerce") / 100
|
74
|
+
temp_df["比价"] = pd.to_numeric(temp_df["比价"], errors="coerce") / 100
|
75
|
+
temp_df["溢价"] = pd.to_numeric(temp_df["溢价"], errors="coerce") / 100
|
76
|
+
return temp_df
|
77
|
+
|
78
|
+
|
79
|
+
def stock_hsgt_sh_hk_spot_em() -> pd.DataFrame:
|
80
|
+
"""
|
81
|
+
东方财富网-行情中心-沪深港通-港股通(沪>港)-股票
|
82
|
+
https://quote.eastmoney.com/center/gridlist.html#hk_sh_stocks
|
83
|
+
:return: 东方财富网-行情中心-沪深港通-港股通(沪>港)-股票
|
84
|
+
:rtype: pandas.DataFrame
|
85
|
+
"""
|
86
|
+
url = "https://push2.eastmoney.com/api/qt/clist/get"
|
87
|
+
params = {
|
88
|
+
"np": "2",
|
89
|
+
"fltt": "1",
|
90
|
+
"invt": "2",
|
91
|
+
"fs": "b:DLMK0144",
|
92
|
+
"fields": "f12,f13,f14,f19,f1,f2,f4,f3,f152,f17,f18,f15,f16,f5,f6",
|
93
|
+
"fid": "f3",
|
94
|
+
"pn": "1",
|
95
|
+
"pz": "50000",
|
96
|
+
"po": "1",
|
97
|
+
"dect": "1",
|
98
|
+
"ut": "fa5fd1943c7b386f172d6893dbfba10b",
|
99
|
+
"wbp2u": "|0|0|0|web",
|
100
|
+
"_": "1741100627371",
|
101
|
+
}
|
102
|
+
r = requests.get(url, params=params)
|
103
|
+
data_json = r.json()
|
104
|
+
temp_df = pd.DataFrame(data_json["data"]["diff"]).T
|
105
|
+
temp_df.reset_index(inplace=True)
|
106
|
+
temp_df["index"] = temp_df["index"].astype(int) + 1
|
107
|
+
temp_df.rename(
|
108
|
+
columns={
|
109
|
+
"index": "序号",
|
110
|
+
"f12": "代码",
|
111
|
+
"f14": "名称",
|
112
|
+
"f2": "最新价",
|
113
|
+
"f4": "涨跌额",
|
114
|
+
"f3": "涨跌幅",
|
115
|
+
"f17": "今开",
|
116
|
+
"f15": "最高",
|
117
|
+
"f16": "最低",
|
118
|
+
"f18": "昨收",
|
119
|
+
"f5": "成交量",
|
120
|
+
"f6": "成交额",
|
121
|
+
},
|
122
|
+
inplace=True,
|
123
|
+
)
|
124
|
+
|
125
|
+
temp_df = temp_df[
|
126
|
+
[
|
127
|
+
"序号",
|
128
|
+
"代码",
|
129
|
+
"名称",
|
130
|
+
"最新价",
|
131
|
+
"涨跌额",
|
132
|
+
"涨跌幅",
|
133
|
+
"今开",
|
134
|
+
"最高",
|
135
|
+
"最低",
|
136
|
+
"昨收",
|
137
|
+
"成交量",
|
138
|
+
"成交额",
|
139
|
+
]
|
140
|
+
]
|
141
|
+
temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce") / 1000
|
142
|
+
temp_df["涨跌额"] = pd.to_numeric(temp_df["涨跌额"], errors="coerce") / 1000
|
143
|
+
temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce") / 100
|
144
|
+
temp_df["今开"] = pd.to_numeric(temp_df["今开"], errors="coerce") / 1000
|
145
|
+
temp_df["最高"] = pd.to_numeric(temp_df["最高"], errors="coerce") / 1000
|
146
|
+
temp_df["最低"] = pd.to_numeric(temp_df["最低"], errors="coerce") / 1000
|
147
|
+
temp_df["昨收"] = pd.to_numeric(temp_df["昨收"], errors="coerce") / 1000
|
148
|
+
temp_df["成交量"] = pd.to_numeric(temp_df["成交量"], errors="coerce") / 100000000
|
149
|
+
temp_df["成交额"] = pd.to_numeric(temp_df["成交额"], errors="coerce") / 100000000
|
150
|
+
return temp_df
|
151
|
+
|
152
|
+
|
153
|
+
if __name__ == "__main__":
|
154
|
+
stock_zh_ah_spot_em_df = stock_zh_ah_spot_em()
|
155
|
+
print(stock_zh_ah_spot_em_df)
|
156
|
+
|
157
|
+
stock_hsgt_sh_hk_spot_em_df = stock_hsgt_sh_hk_spot_em()
|
158
|
+
print(stock_hsgt_sh_hk_spot_em_df)
|
akshare/stock/stock_zh_ah_tx.py
CHANGED
@@ -5,6 +5,7 @@ Date: 2024/2/26 15:10
|
|
5
5
|
Desc: 腾讯财经-A+H股数据, 实时行情数据和历史行情数据(后复权)
|
6
6
|
https://stockapp.finance.qq.com/mstats/#mod=list&id=hk_ah&module=HK&type=AH&sort=3&page=3&max=20
|
7
7
|
"""
|
8
|
+
|
8
9
|
import random
|
9
10
|
|
10
11
|
import pandas as pd
|
@@ -31,9 +32,7 @@ def _get_zh_stock_ah_page_count() -> int:
|
|
31
32
|
hk_payload_copy = hk_payload.copy()
|
32
33
|
hk_payload_copy.update({"reqPage": 1})
|
33
34
|
r = requests.get(hk_url, params=hk_payload_copy, headers=hk_headers)
|
34
|
-
data_json = demjson.decode(
|
35
|
-
r.text[r.text.find("{"): r.text.rfind("}") + 1]
|
36
|
-
)
|
35
|
+
data_json = demjson.decode(r.text[r.text.find("{") : r.text.rfind("}") + 1])
|
37
36
|
page_count = data_json["data"]["page_count"]
|
38
37
|
return page_count
|
39
38
|
|
@@ -45,15 +44,13 @@ def stock_zh_ah_spot() -> pd.DataFrame:
|
|
45
44
|
:return: 腾讯财经-港股-AH-实时行情
|
46
45
|
:rtype: pandas.DataFrame
|
47
46
|
"""
|
48
|
-
big_df = pd.DataFrame()
|
49
47
|
page_count = _get_zh_stock_ah_page_count()
|
48
|
+
big_df = pd.DataFrame()
|
50
49
|
tqdm = get_tqdm()
|
51
50
|
for i in tqdm(range(0, page_count), leave=False):
|
52
51
|
hk_payload.update({"reqPage": i})
|
53
52
|
r = requests.get(hk_url, params=hk_payload, headers=hk_headers)
|
54
|
-
data_json = demjson.decode(
|
55
|
-
r.text[r.text.find("{"): r.text.rfind("}") + 1]
|
56
|
-
)
|
53
|
+
data_json = demjson.decode(r.text[r.text.find("{") : r.text.rfind("}") + 1])
|
57
54
|
big_df = pd.concat(
|
58
55
|
objs=[
|
59
56
|
big_df,
|
@@ -123,9 +120,7 @@ def stock_zh_ah_name() -> pd.DataFrame:
|
|
123
120
|
for i in tqdm(range(0, page_count), leave=False):
|
124
121
|
hk_payload.update({"reqPage": i})
|
125
122
|
r = requests.get(hk_url, params=hk_payload, headers=hk_headers)
|
126
|
-
data_json = demjson.decode(
|
127
|
-
r.text[r.text.find("{"): r.text.rfind("}") + 1]
|
128
|
-
)
|
123
|
+
data_json = demjson.decode(r.text[r.text.find("{") : r.text.rfind("}") + 1])
|
129
124
|
big_df = pd.concat(
|
130
125
|
objs=[
|
131
126
|
big_df,
|
@@ -160,10 +155,10 @@ def stock_zh_ah_name() -> pd.DataFrame:
|
|
160
155
|
|
161
156
|
|
162
157
|
def stock_zh_ah_daily(
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
158
|
+
symbol: str = "02318",
|
159
|
+
start_year: str = "2000",
|
160
|
+
end_year: str = "2019",
|
161
|
+
adjust: str = "",
|
167
162
|
) -> pd.DataFrame:
|
168
163
|
"""
|
169
164
|
腾讯财经-港股-AH-股票历史行情
|
@@ -187,9 +182,7 @@ def stock_zh_ah_daily(
|
|
187
182
|
hk_stock_payload_copy.update({"_var": f"kline_day{adjust}{year}"})
|
188
183
|
if adjust == "":
|
189
184
|
hk_stock_payload_copy.update(
|
190
|
-
{
|
191
|
-
"param": f"hk{symbol},day,{year}-01-01,{int(year) + 1}-12-31,640,"
|
192
|
-
}
|
185
|
+
{"param": f"hk{symbol},day,{year}-01-01,{int(year) + 1}-12-31,640,"}
|
193
186
|
)
|
194
187
|
else:
|
195
188
|
hk_stock_payload_copy.update(
|
@@ -221,17 +214,13 @@ def stock_zh_ah_daily(
|
|
221
214
|
params=hk_stock_payload_copy,
|
222
215
|
headers=hk_stock_headers,
|
223
216
|
)
|
224
|
-
data_json = demjson.decode(
|
225
|
-
r.text[r.text.find("{"): r.text.rfind("}") + 1]
|
226
|
-
)
|
217
|
+
data_json = demjson.decode(r.text[r.text.find("{") : r.text.rfind("}") + 1])
|
227
218
|
try:
|
228
219
|
if adjust == "":
|
229
220
|
temp_df = pd.DataFrame(data_json["data"][f"hk{symbol}"]["day"])
|
230
221
|
else:
|
231
|
-
temp_df = pd.DataFrame(
|
232
|
-
|
233
|
-
)
|
234
|
-
except:
|
222
|
+
temp_df = pd.DataFrame(data_json["data"][f"hk{symbol}"][f"{adjust}day"])
|
223
|
+
except: # noqa
|
235
224
|
continue
|
236
225
|
if adjust != "" and not temp_df.empty:
|
237
226
|
temp_df.columns = [
|
@@ -248,8 +237,16 @@ def stock_zh_ah_daily(
|
|
248
237
|
temp_df = temp_df[["日期", "开盘", "收盘", "最高", "最低", "成交量"]]
|
249
238
|
elif not temp_df.empty:
|
250
239
|
try:
|
251
|
-
temp_df.columns = [
|
252
|
-
|
240
|
+
temp_df.columns = [
|
241
|
+
"日期",
|
242
|
+
"开盘",
|
243
|
+
"收盘",
|
244
|
+
"最高",
|
245
|
+
"最低",
|
246
|
+
"成交量",
|
247
|
+
"_",
|
248
|
+
]
|
249
|
+
except: # noqa
|
253
250
|
temp_df.columns = ["日期", "开盘", "收盘", "最高", "最低", "成交量"]
|
254
251
|
temp_df = temp_df[["日期", "开盘", "收盘", "最高", "最低", "成交量"]]
|
255
252
|
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
@@ -1938,10 +1938,10 @@ if __name__ == "__main__":
|
|
1938
1938
|
print(stock_hk_main_board_spot_em_df)
|
1939
1939
|
|
1940
1940
|
stock_zh_a_hist_df = stock_zh_a_hist(
|
1941
|
-
symbol="
|
1941
|
+
symbol="600734",
|
1942
1942
|
period="daily",
|
1943
|
-
start_date="
|
1944
|
-
end_date="
|
1943
|
+
start_date="20050501",
|
1944
|
+
end_date="20250304",
|
1945
1945
|
adjust="hfq",
|
1946
1946
|
)
|
1947
1947
|
print(stock_zh_a_hist_df)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- coding:utf-8 -*-
|
2
2
|
# !/usr/bin/env python
|
3
3
|
"""
|
4
|
-
Date:
|
4
|
+
Date: 2025/3/4 23:00
|
5
5
|
Desc: 东方财富网-数据中心-沪深港通持股
|
6
6
|
https://data.eastmoney.com/hsgtcg/
|
7
7
|
沪深港通详情: https://finance.eastmoney.com/news/1622,20161118685370149.html
|
@@ -10,7 +10,8 @@ https://data.eastmoney.com/hsgtcg/
|
|
10
10
|
import pandas as pd
|
11
11
|
import requests
|
12
12
|
from bs4 import BeautifulSoup
|
13
|
-
|
13
|
+
|
14
|
+
from akshare.utils.tqdm import get_tqdm
|
14
15
|
|
15
16
|
|
16
17
|
def stock_hsgt_fund_flow_summary_em() -> pd.DataFrame:
|
@@ -187,9 +188,9 @@ def stock_hsgt_hold_stock_em(
|
|
187
188
|
"""
|
188
189
|
url = "https://data.eastmoney.com/hsgtcg/list.html"
|
189
190
|
r = requests.get(url)
|
190
|
-
soup = BeautifulSoup(r.text, "lxml")
|
191
|
+
soup = BeautifulSoup(r.text, features="lxml")
|
191
192
|
date = (
|
192
|
-
soup.find("div", attrs={"class": "title"})
|
193
|
+
soup.find(name="div", attrs={"class": "title"})
|
193
194
|
.find("span")
|
194
195
|
.text.strip("(")
|
195
196
|
.strip(")")
|
@@ -232,12 +233,13 @@ def stock_hsgt_hold_stock_em(
|
|
232
233
|
data_json = r.json()
|
233
234
|
page_num = data_json["result"]["pages"]
|
234
235
|
big_df = pd.DataFrame()
|
236
|
+
tqdm = get_tqdm()
|
235
237
|
for page in tqdm(range(1, page_num + 1), leave=False):
|
236
238
|
params.update({"pageNumber": page})
|
237
239
|
r = requests.get(url, params=params)
|
238
240
|
data_json = r.json()
|
239
241
|
temp_df = pd.DataFrame(data_json["result"]["data"])
|
240
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
242
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
241
243
|
|
242
244
|
big_df.reset_index(inplace=True)
|
243
245
|
big_df["index"] = range(1, len(big_df) + 1)
|
@@ -375,17 +377,18 @@ def stock_hsgt_stock_statistics_em(
|
|
375
377
|
params.update(
|
376
378
|
{"filter": f"""(INTERVAL_TYPE="1")(RN=1)(TRADE_DATE='{start_date}')"""}
|
377
379
|
)
|
378
|
-
url = "
|
380
|
+
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
379
381
|
r = requests.get(url, params=params)
|
380
382
|
data_json = r.json()
|
381
383
|
total_page = data_json["result"]["pages"]
|
382
384
|
big_df = pd.DataFrame()
|
385
|
+
tqdm = get_tqdm()
|
383
386
|
for page in tqdm(range(1, int(total_page) + 1), leave=False):
|
384
387
|
params.update({"pageNumber": page})
|
385
388
|
r = requests.get(url, params=params)
|
386
389
|
data_json = r.json()
|
387
390
|
temp_df = pd.DataFrame(data_json["result"]["data"])
|
388
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
391
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
389
392
|
|
390
393
|
big_df.columns = [
|
391
394
|
"-",
|
@@ -474,12 +477,13 @@ def stock_hsgt_stock_statistics_em(
|
|
474
477
|
data_json = r.json()
|
475
478
|
total_page = data_json["result"]["pages"]
|
476
479
|
big_df = pd.DataFrame()
|
480
|
+
tqdm = get_tqdm()
|
477
481
|
for page in tqdm(range(1, int(total_page) + 1), leave=False):
|
478
482
|
params.update({"pageNumber": page})
|
479
483
|
r = requests.get(url, params=params)
|
480
484
|
data_json = r.json()
|
481
485
|
temp_df = pd.DataFrame(data_json["result"]["data"])
|
482
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
486
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
483
487
|
|
484
488
|
big_df.columns = [
|
485
489
|
"-",
|
@@ -576,17 +580,18 @@ def stock_hsgt_stock_statistics_em(
|
|
576
580
|
"filter": f"""(INTERVAL_TYPE="1")(MUTUAL_TYPE="001")(TRADE_DATE='{start_date}')"""
|
577
581
|
}
|
578
582
|
)
|
579
|
-
url = "
|
583
|
+
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
580
584
|
r = requests.get(url, params=params)
|
581
585
|
data_json = r.json()
|
582
586
|
total_page = data_json["result"]["pages"]
|
583
587
|
big_df = pd.DataFrame()
|
588
|
+
tqdm = get_tqdm()
|
584
589
|
for page in tqdm(range(1, int(total_page) + 1), leave=False):
|
585
590
|
params.update({"pageNumber": page})
|
586
591
|
r = requests.get(url, params=params)
|
587
592
|
data_json = r.json()
|
588
593
|
temp_df = pd.DataFrame(data_json["result"]["data"])
|
589
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
594
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
590
595
|
big_df.columns = [
|
591
596
|
"-",
|
592
597
|
"-",
|
@@ -673,7 +678,8 @@ def stock_hsgt_stock_statistics_em(
|
|
673
678
|
"columns": "ALL",
|
674
679
|
"source": "WEB",
|
675
680
|
"client": "WEB",
|
676
|
-
"filter": f"""(INTERVAL_TYPE="1")(MUTUAL_TYPE="003")(TRADE_DATE
|
681
|
+
"filter": f"""(INTERVAL_TYPE="1")(MUTUAL_TYPE="003")(TRADE_DATE
|
682
|
+
>='{start_date}')(TRADE_DATE<='{end_date}')""",
|
677
683
|
"reportName": "RPT_MUTUAL_STOCK_NORTHSTA",
|
678
684
|
}
|
679
685
|
if start_date == end_date:
|
@@ -682,17 +688,18 @@ def stock_hsgt_stock_statistics_em(
|
|
682
688
|
"filter": f"""(INTERVAL_TYPE="1")(MUTUAL_TYPE="003")(TRADE_DATE='{start_date}')"""
|
683
689
|
}
|
684
690
|
)
|
685
|
-
url = "
|
691
|
+
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
686
692
|
r = requests.get(url, params=params)
|
687
693
|
data_json = r.json()
|
688
694
|
total_page = data_json["result"]["pages"]
|
689
695
|
big_df = pd.DataFrame()
|
696
|
+
tqdm = get_tqdm()
|
690
697
|
for page in tqdm(range(1, int(total_page) + 1), leave=False):
|
691
698
|
params.update({"pageNumber": page})
|
692
699
|
r = requests.get(url, params=params)
|
693
700
|
data_json = r.json()
|
694
701
|
temp_df = pd.DataFrame(data_json["result"]["data"])
|
695
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
702
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
696
703
|
big_df.columns = [
|
697
704
|
"-",
|
698
705
|
"-",
|
@@ -792,6 +799,10 @@ def stock_hsgt_institution_statistics_em(
|
|
792
799
|
"""
|
793
800
|
start_date = "-".join([start_date[:4], start_date[4:6], start_date[6:]])
|
794
801
|
end_date = "-".join([end_date[:4], end_date[4:6], end_date[6:]])
|
802
|
+
headers = {
|
803
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
804
|
+
"Chrome/114.0.0.0 Safari/537.36"
|
805
|
+
}
|
795
806
|
if market == "南向持股":
|
796
807
|
params = {
|
797
808
|
"sortColumns": "HOLD_DATE",
|
@@ -804,9 +815,6 @@ def stock_hsgt_institution_statistics_em(
|
|
804
815
|
"client": "WEB",
|
805
816
|
"filter": f"""(MARKET_TYPE="S")(HOLD_DATE>='{start_date}')(HOLD_DATE<='{end_date}')""",
|
806
817
|
}
|
807
|
-
headers = {
|
808
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"
|
809
|
-
}
|
810
818
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
811
819
|
r = requests.get(url, params=params, headers=headers)
|
812
820
|
data_json = r.json()
|
@@ -842,12 +850,20 @@ def stock_hsgt_institution_statistics_em(
|
|
842
850
|
"持股市值变化-10日",
|
843
851
|
]
|
844
852
|
]
|
845
|
-
temp_df["持股日期"] = pd.to_datetime(
|
846
|
-
|
847
|
-
|
848
|
-
temp_df["
|
849
|
-
temp_df["
|
850
|
-
temp_df["持股市值变化-
|
853
|
+
temp_df["持股日期"] = pd.to_datetime(
|
854
|
+
temp_df["持股日期"], errors="coerce"
|
855
|
+
).dt.date
|
856
|
+
temp_df["持股只数"] = pd.to_numeric(temp_df["持股只数"], errors="coerce")
|
857
|
+
temp_df["持股市值"] = pd.to_numeric(temp_df["持股市值"], errors="coerce")
|
858
|
+
temp_df["持股市值变化-1日"] = pd.to_numeric(
|
859
|
+
temp_df["持股市值变化-1日"], errors="coerce"
|
860
|
+
)
|
861
|
+
temp_df["持股市值变化-5日"] = pd.to_numeric(
|
862
|
+
temp_df["持股市值变化-5日"], errors="coerce"
|
863
|
+
)
|
864
|
+
temp_df["持股市值变化-10日"] = pd.to_numeric(
|
865
|
+
temp_df["持股市值变化-10日"], errors="coerce"
|
866
|
+
)
|
851
867
|
return temp_df
|
852
868
|
|
853
869
|
elif market == "北向持股":
|
@@ -862,20 +878,18 @@ def stock_hsgt_institution_statistics_em(
|
|
862
878
|
"client": "WEB",
|
863
879
|
"filter": f"""(MARKET_TYPE="N")(HOLD_DATE>='{start_date}')(HOLD_DATE<='{end_date}')""",
|
864
880
|
}
|
865
|
-
headers = {
|
866
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"
|
867
|
-
}
|
868
881
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
869
882
|
r = requests.get(url, params=params, headers=headers)
|
870
883
|
data_json = r.json()
|
871
884
|
total_page = data_json["result"]["pages"]
|
872
885
|
big_df = pd.DataFrame()
|
886
|
+
tqdm = get_tqdm()
|
873
887
|
for page in tqdm(range(1, total_page + 1), leave=False):
|
874
888
|
params.update({"pageNumber": page})
|
875
889
|
r = requests.get(url, params=params, headers=headers)
|
876
890
|
data_json = r.json()
|
877
891
|
temp_df = pd.DataFrame(data_json["result"]["data"])
|
878
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
892
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
879
893
|
big_df.columns = [
|
880
894
|
"持股日期",
|
881
895
|
"_",
|
@@ -907,12 +921,18 @@ def stock_hsgt_institution_statistics_em(
|
|
907
921
|
"持股市值变化-10日",
|
908
922
|
]
|
909
923
|
]
|
910
|
-
big_df["持股日期"] = pd.to_datetime(big_df["持股日期"]).dt.date
|
911
|
-
big_df["持股只数"] = pd.to_numeric(big_df["持股只数"])
|
912
|
-
big_df["持股市值"] = pd.to_numeric(big_df["持股市值"])
|
913
|
-
big_df["持股市值变化-1日"] = pd.to_numeric(
|
914
|
-
|
915
|
-
|
924
|
+
big_df["持股日期"] = pd.to_datetime(big_df["持股日期"], errors="coerce").dt.date
|
925
|
+
big_df["持股只数"] = pd.to_numeric(big_df["持股只数"], errors="coerce")
|
926
|
+
big_df["持股市值"] = pd.to_numeric(big_df["持股市值"], errors="coerce")
|
927
|
+
big_df["持股市值变化-1日"] = pd.to_numeric(
|
928
|
+
big_df["持股市值变化-1日"], errors="coerce"
|
929
|
+
)
|
930
|
+
big_df["持股市值变化-5日"] = pd.to_numeric(
|
931
|
+
big_df["持股市值变化-5日"], errors="coerce"
|
932
|
+
)
|
933
|
+
big_df["持股市值变化-10日"] = pd.to_numeric(
|
934
|
+
big_df["持股市值变化-10日"], errors="coerce"
|
935
|
+
)
|
916
936
|
return big_df
|
917
937
|
elif market == "沪股通持股":
|
918
938
|
params = {
|
@@ -926,20 +946,18 @@ def stock_hsgt_institution_statistics_em(
|
|
926
946
|
"client": "WEB",
|
927
947
|
"filter": f"""(MARKET_TYPE="001")(HOLD_DATE>='{start_date}')(HOLD_DATE<='{end_date}')""",
|
928
948
|
}
|
929
|
-
headers = {
|
930
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"
|
931
|
-
}
|
932
949
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
933
950
|
r = requests.get(url, params=params, headers=headers)
|
934
951
|
data_json = r.json()
|
935
952
|
total_page = data_json["result"]["pages"]
|
936
953
|
big_df = pd.DataFrame()
|
954
|
+
tqdm = get_tqdm()
|
937
955
|
for page in tqdm(range(1, total_page + 1), leave=False):
|
938
956
|
params.update({"pageNumber": page})
|
939
957
|
r = requests.get(url, params=params, headers=headers)
|
940
958
|
data_json = r.json()
|
941
959
|
temp_df = pd.DataFrame(data_json["result"]["data"])
|
942
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
960
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
943
961
|
big_df.columns = [
|
944
962
|
"持股日期",
|
945
963
|
"_",
|
@@ -971,12 +989,18 @@ def stock_hsgt_institution_statistics_em(
|
|
971
989
|
"持股市值变化-10日",
|
972
990
|
]
|
973
991
|
]
|
974
|
-
big_df["持股日期"] = pd.to_datetime(big_df["持股日期"]).dt.date
|
975
|
-
big_df["持股只数"] = pd.to_numeric(big_df["持股只数"])
|
976
|
-
big_df["持股市值"] = pd.to_numeric(big_df["持股市值"])
|
977
|
-
big_df["持股市值变化-1日"] = pd.to_numeric(
|
978
|
-
|
979
|
-
|
992
|
+
big_df["持股日期"] = pd.to_datetime(big_df["持股日期"], errors="coerce").dt.date
|
993
|
+
big_df["持股只数"] = pd.to_numeric(big_df["持股只数"], errors="coerce")
|
994
|
+
big_df["持股市值"] = pd.to_numeric(big_df["持股市值"], errors="coerce")
|
995
|
+
big_df["持股市值变化-1日"] = pd.to_numeric(
|
996
|
+
big_df["持股市值变化-1日"], errors="coerce"
|
997
|
+
)
|
998
|
+
big_df["持股市值变化-5日"] = pd.to_numeric(
|
999
|
+
big_df["持股市值变化-5日"], errors="coerce"
|
1000
|
+
)
|
1001
|
+
big_df["持股市值变化-10日"] = pd.to_numeric(
|
1002
|
+
big_df["持股市值变化-10日"], errors="coerce"
|
1003
|
+
)
|
980
1004
|
return big_df
|
981
1005
|
elif market == "深股通持股":
|
982
1006
|
params = {
|
@@ -990,20 +1014,18 @@ def stock_hsgt_institution_statistics_em(
|
|
990
1014
|
"client": "WEB",
|
991
1015
|
"filter": f"""(MARKET_TYPE="003")(HOLD_DATE>='{start_date}')(HOLD_DATE<='{end_date}')""",
|
992
1016
|
}
|
993
|
-
headers = {
|
994
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"
|
995
|
-
}
|
996
1017
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
997
1018
|
r = requests.get(url, params=params, headers=headers)
|
998
1019
|
data_json = r.json()
|
999
1020
|
total_page = data_json["result"]["pages"]
|
1000
1021
|
big_df = pd.DataFrame()
|
1022
|
+
tqdm = get_tqdm()
|
1001
1023
|
for page in tqdm(range(1, total_page + 1), leave=False):
|
1002
1024
|
params.update({"pageNumber": page})
|
1003
1025
|
r = requests.get(url, params=params, headers=headers)
|
1004
1026
|
data_json = r.json()
|
1005
1027
|
temp_df = pd.DataFrame(data_json["result"]["data"])
|
1006
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
1028
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
1007
1029
|
big_df.columns = [
|
1008
1030
|
"持股日期",
|
1009
1031
|
"_",
|
@@ -1035,12 +1057,18 @@ def stock_hsgt_institution_statistics_em(
|
|
1035
1057
|
"持股市值变化-10日",
|
1036
1058
|
]
|
1037
1059
|
]
|
1038
|
-
big_df["持股日期"] = pd.to_datetime(big_df["持股日期"]).dt.date
|
1039
|
-
big_df["持股只数"] = pd.to_numeric(big_df["持股只数"])
|
1040
|
-
big_df["持股市值"] = pd.to_numeric(big_df["持股市值"])
|
1041
|
-
big_df["持股市值变化-1日"] = pd.to_numeric(
|
1042
|
-
|
1043
|
-
|
1060
|
+
big_df["持股日期"] = pd.to_datetime(big_df["持股日期"], errors="coerce").dt.date
|
1061
|
+
big_df["持股只数"] = pd.to_numeric(big_df["持股只数"], errors="coerce")
|
1062
|
+
big_df["持股市值"] = pd.to_numeric(big_df["持股市值"], errors="coerce")
|
1063
|
+
big_df["持股市值变化-1日"] = pd.to_numeric(
|
1064
|
+
big_df["持股市值变化-1日"], errors="coerce"
|
1065
|
+
)
|
1066
|
+
big_df["持股市值变化-5日"] = pd.to_numeric(
|
1067
|
+
big_df["持股市值变化-5日"], errors="coerce"
|
1068
|
+
)
|
1069
|
+
big_df["持股市值变化-10日"] = pd.to_numeric(
|
1070
|
+
big_df["持股市值变化-10日"], errors="coerce"
|
1071
|
+
)
|
1044
1072
|
return big_df
|
1045
1073
|
|
1046
1074
|
|
@@ -1053,6 +1081,10 @@ def stock_hsgt_hist_em(symbol: str = "北向资金") -> pd.DataFrame:
|
|
1053
1081
|
:return: 沪深港通历史数据
|
1054
1082
|
:rtype: pandas.DataFrame
|
1055
1083
|
"""
|
1084
|
+
import warnings
|
1085
|
+
|
1086
|
+
warnings.filterwarnings(action="ignore", category=FutureWarning)
|
1087
|
+
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
1056
1088
|
symbol_map = {
|
1057
1089
|
"北向资金": "5",
|
1058
1090
|
"沪股通": "1",
|
@@ -1061,7 +1093,6 @@ def stock_hsgt_hist_em(symbol: str = "北向资金") -> pd.DataFrame:
|
|
1061
1093
|
"港股通沪": "2",
|
1062
1094
|
"港股通深": "4",
|
1063
1095
|
}
|
1064
|
-
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
1065
1096
|
params = {
|
1066
1097
|
"sortColumns": "TRADE_DATE",
|
1067
1098
|
"sortTypes": "-1",
|
@@ -1076,13 +1107,16 @@ def stock_hsgt_hist_em(symbol: str = "北向资金") -> pd.DataFrame:
|
|
1076
1107
|
r = requests.get(url, params=params)
|
1077
1108
|
data_json = r.json()
|
1078
1109
|
total_page = data_json["result"]["pages"]
|
1079
|
-
|
1110
|
+
temp_list = []
|
1111
|
+
tqdm = get_tqdm()
|
1080
1112
|
for page in tqdm(range(1, int(total_page) + 1), leave=False):
|
1081
1113
|
params.update({"pageNumber": page})
|
1082
1114
|
r = requests.get(url, params=params)
|
1083
1115
|
data_json = r.json()
|
1084
1116
|
temp_df = pd.DataFrame(data_json["result"]["data"])
|
1085
|
-
|
1117
|
+
temp_list.append(temp_df)
|
1118
|
+
|
1119
|
+
big_df = pd.concat(objs=temp_list, ignore_index=True)
|
1086
1120
|
if symbol == "北向资金":
|
1087
1121
|
index_name = "沪深300"
|
1088
1122
|
elif symbol == "沪股通":
|
@@ -1173,7 +1207,7 @@ def stock_hsgt_board_rank_em(
|
|
1173
1207
|
"""
|
1174
1208
|
url = "https://data.eastmoney.com/hsgtcg/hy.html"
|
1175
1209
|
r = requests.get(url)
|
1176
|
-
soup = BeautifulSoup(r.text, "lxml")
|
1210
|
+
soup = BeautifulSoup(r.text, features="lxml")
|
1177
1211
|
current_date = soup.find(attrs={"id": "bkph_date"}).text.strip("(").strip(")")
|
1178
1212
|
symbol_map = {
|
1179
1213
|
"北向资金增持行业板块排行": "5",
|
@@ -1307,7 +1341,7 @@ def stock_hsgt_individual_em(stock: str = "002008") -> pd.DataFrame:
|
|
1307
1341
|
:return: 具体股票-沪深港通持股
|
1308
1342
|
:rtype: pandas.DataFrame
|
1309
1343
|
"""
|
1310
|
-
url = "
|
1344
|
+
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
1311
1345
|
params = {
|
1312
1346
|
"sortColumns": "TRADE_DATE",
|
1313
1347
|
"sortTypes": "-1",
|
@@ -1357,15 +1391,23 @@ def stock_hsgt_individual_em(stock: str = "002008") -> pd.DataFrame:
|
|
1357
1391
|
"持股市值变化-10日",
|
1358
1392
|
]
|
1359
1393
|
]
|
1360
|
-
temp_df["持股日期"] = pd.to_datetime(temp_df["持股日期"]).dt.date
|
1361
|
-
temp_df["当日收盘价"] = pd.to_numeric(temp_df["当日收盘价"])
|
1362
|
-
temp_df["当日涨跌幅"] = pd.to_numeric(temp_df["当日涨跌幅"])
|
1363
|
-
temp_df["持股数量"] = pd.to_numeric(temp_df["持股数量"])
|
1364
|
-
temp_df["持股市值"] = pd.to_numeric(temp_df["持股市值"])
|
1365
|
-
temp_df["持股数量占A股百分比"] = pd.to_numeric(
|
1366
|
-
|
1367
|
-
|
1368
|
-
temp_df["持股市值变化-
|
1394
|
+
temp_df["持股日期"] = pd.to_datetime(temp_df["持股日期"], errors="coerce").dt.date
|
1395
|
+
temp_df["当日收盘价"] = pd.to_numeric(temp_df["当日收盘价"], errors="coerce")
|
1396
|
+
temp_df["当日涨跌幅"] = pd.to_numeric(temp_df["当日涨跌幅"], errors="coerce")
|
1397
|
+
temp_df["持股数量"] = pd.to_numeric(temp_df["持股数量"], errors="coerce")
|
1398
|
+
temp_df["持股市值"] = pd.to_numeric(temp_df["持股市值"], errors="coerce")
|
1399
|
+
temp_df["持股数量占A股百分比"] = pd.to_numeric(
|
1400
|
+
temp_df["持股数量占A股百分比"], errors="coerce"
|
1401
|
+
)
|
1402
|
+
temp_df["持股市值变化-1日"] = pd.to_numeric(
|
1403
|
+
temp_df["持股市值变化-1日"], errors="coerce"
|
1404
|
+
)
|
1405
|
+
temp_df["持股市值变化-5日"] = pd.to_numeric(
|
1406
|
+
temp_df["持股市值变化-5日"], errors="coerce"
|
1407
|
+
)
|
1408
|
+
temp_df["持股市值变化-10日"] = pd.to_numeric(
|
1409
|
+
temp_df["持股市值变化-10日"], errors="coerce"
|
1410
|
+
)
|
1369
1411
|
return temp_df
|
1370
1412
|
|
1371
1413
|
|
@@ -1386,7 +1428,7 @@ def stock_hsgt_individual_detail_em(
|
|
1386
1428
|
:return: 沪深港通持股-具体股票详情
|
1387
1429
|
:rtype: pandas.DataFrame
|
1388
1430
|
"""
|
1389
|
-
url = "
|
1431
|
+
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
1390
1432
|
params = {
|
1391
1433
|
"sortColumns": "HOLD_DATE",
|
1392
1434
|
"sortTypes": "-1",
|
@@ -1396,7 +1438,9 @@ def stock_hsgt_individual_detail_em(
|
|
1396
1438
|
"columns": "ALL",
|
1397
1439
|
"source": "WEB",
|
1398
1440
|
"client": "WEB",
|
1399
|
-
"filter": f"""(SECURITY_CODE="{symbol}")(MARKET_CODE="003")(HOLD_DATE
|
1441
|
+
"filter": f"""(SECURITY_CODE="{symbol}")(MARKET_CODE="003")(HOLD_DATE
|
1442
|
+
>='{'-'.join([start_date[:4], start_date[4:6], start_date[6:]])}')(HOLD_DATE
|
1443
|
+
<='{'-'.join([end_date[:4], end_date[4:6], end_date[6:]])}')""",
|
1400
1444
|
}
|
1401
1445
|
r = requests.get(url, params=params)
|
1402
1446
|
data_json = r.json()
|
@@ -1405,19 +1449,22 @@ def stock_hsgt_individual_detail_em(
|
|
1405
1449
|
except TypeError:
|
1406
1450
|
params.update(
|
1407
1451
|
{
|
1408
|
-
"filter": f"""(SECURITY_CODE="{symbol}")(MARKET_CODE="001")(HOLD_DATE
|
1452
|
+
"filter": f"""(SECURITY_CODE="{symbol}")(MARKET_CODE="001")(HOLD_DATE
|
1453
|
+
>='{'-'.join([start_date[:4], start_date[4:6], start_date[6:]])}')(HOLD_DATE
|
1454
|
+
<='{'-'.join([end_date[:4], end_date[4:6], end_date[6:]])}')""",
|
1409
1455
|
}
|
1410
1456
|
)
|
1411
1457
|
r = requests.get(url, params=params)
|
1412
1458
|
data_json = r.json()
|
1413
1459
|
total_page = data_json["result"]["pages"]
|
1414
1460
|
big_df = pd.DataFrame()
|
1461
|
+
tqdm = get_tqdm()
|
1415
1462
|
for page in tqdm(range(1, int(total_page) + 1), leave=False):
|
1416
1463
|
params.update({"pageNumber": page})
|
1417
1464
|
r = requests.get(url, params=params)
|
1418
1465
|
data_json = r.json()
|
1419
1466
|
temp_df = pd.DataFrame(data_json["result"]["data"])
|
1420
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
1467
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
1421
1468
|
big_df.rename(
|
1422
1469
|
columns={
|
1423
1470
|
"SECUCODE": "-",
|
@@ -1454,15 +1501,23 @@ def stock_hsgt_individual_detail_em(
|
|
1454
1501
|
"持股市值变化-10日",
|
1455
1502
|
]
|
1456
1503
|
]
|
1457
|
-
big_df["持股日期"] = pd.to_datetime(big_df["持股日期"]).dt.date
|
1458
|
-
big_df["当日收盘价"] = pd.to_numeric(big_df["当日收盘价"])
|
1459
|
-
big_df["当日涨跌幅"] = pd.to_numeric(big_df["当日涨跌幅"])
|
1460
|
-
big_df["持股数量"] = pd.to_numeric(big_df["持股数量"])
|
1461
|
-
big_df["持股市值"] = pd.to_numeric(big_df["持股市值"])
|
1462
|
-
big_df["持股数量占A股百分比"] = pd.to_numeric(
|
1463
|
-
|
1464
|
-
|
1465
|
-
big_df["持股市值变化-
|
1504
|
+
big_df["持股日期"] = pd.to_datetime(big_df["持股日期"], errors="coerce").dt.date
|
1505
|
+
big_df["当日收盘价"] = pd.to_numeric(big_df["当日收盘价"], errors="coerce")
|
1506
|
+
big_df["当日涨跌幅"] = pd.to_numeric(big_df["当日涨跌幅"], errors="coerce")
|
1507
|
+
big_df["持股数量"] = pd.to_numeric(big_df["持股数量"], errors="coerce")
|
1508
|
+
big_df["持股市值"] = pd.to_numeric(big_df["持股市值"], errors="coerce")
|
1509
|
+
big_df["持股数量占A股百分比"] = pd.to_numeric(
|
1510
|
+
big_df["持股数量占A股百分比"], errors="coerce"
|
1511
|
+
)
|
1512
|
+
big_df["持股市值变化-1日"] = pd.to_numeric(
|
1513
|
+
big_df["持股市值变化-1日"], errors="coerce"
|
1514
|
+
)
|
1515
|
+
big_df["持股市值变化-5日"] = pd.to_numeric(
|
1516
|
+
big_df["持股市值变化-5日"], errors="coerce"
|
1517
|
+
)
|
1518
|
+
big_df["持股市值变化-10日"] = pd.to_numeric(
|
1519
|
+
big_df["持股市值变化-10日"], errors="coerce"
|
1520
|
+
)
|
1466
1521
|
return big_df
|
1467
1522
|
|
1468
1523
|
|
@@ -1533,7 +1588,7 @@ if __name__ == "__main__":
|
|
1533
1588
|
)
|
1534
1589
|
print(stock_hsgt_institution_statistics_em_df)
|
1535
1590
|
|
1536
|
-
stock_hsgt_hist_em_df = stock_hsgt_hist_em(symbol="
|
1591
|
+
stock_hsgt_hist_em_df = stock_hsgt_hist_em(symbol="港股通沪")
|
1537
1592
|
print(stock_hsgt_hist_em_df)
|
1538
1593
|
|
1539
1594
|
stock_hsgt_board_rank_em_df = stock_hsgt_board_rank_em(
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
2
|
# -*- coding:utf-8 -*-
|
3
3
|
"""
|
4
|
-
Date:
|
4
|
+
Date: 2025/3/4 20:00
|
5
5
|
Desc: 同花顺-财务指标-主要指标
|
6
6
|
https://basic.10jqka.com.cn/new/000063/finance.html
|
7
7
|
"""
|
@@ -51,6 +51,7 @@ def stock_financial_abstract_ths(
|
|
51
51
|
temp_df = temp_df.T
|
52
52
|
temp_df.reset_index(inplace=True)
|
53
53
|
temp_df.rename(columns={"index": "报告期"}, inplace=True)
|
54
|
+
temp_df.sort_values(by="报告期", ignore_index=True, inplace=True)
|
54
55
|
return temp_df
|
55
56
|
|
56
57
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
akshare/__init__.py,sha256=
|
1
|
+
akshare/__init__.py,sha256=CLbUtSHcso_Ek4VKKUys1VCQs1Y6gKdhIQsi4_Ot9B4,189468
|
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
|
@@ -251,6 +251,7 @@ akshare/stock/stock_hold_num_cninfo.py,sha256=JY9LcZMhhTiCHfQJv4pwMrLrpUxTKGLE4o
|
|
251
251
|
akshare/stock/stock_hot_rank_em.py,sha256=WMbadW1CFU3ppZHMSPjG2HtXgs7PgYGugNqmyrRQQe4,7349
|
252
252
|
akshare/stock/stock_hot_search_baidu.py,sha256=Zex1iZB2qaqsxYPj6EmuzAXLbAa53W8LcePivGwrwAs,1769
|
253
253
|
akshare/stock/stock_hot_up_em.py,sha256=sRwbpAHLzAylobUAIlVKuQo8vbuTA0Jt6gb1oiSgNwA,2509
|
254
|
+
akshare/stock/stock_hsgt_em.py,sha256=54eKgUM_F-bp6-bEsS2g5fQ928_6Fign76X8KCbWrMY,5250
|
254
255
|
akshare/stock/stock_industry.py,sha256=7axm0G1EZc-G6uX9mNX4d3bHHYS_hq2tKFytxEj9YJM,5767
|
255
256
|
akshare/stock/stock_industry_cninfo.py,sha256=dJ19zPeKRTbUrAoa8fpBB25caZuIjX92RePG8Pz-9h8,6560
|
256
257
|
akshare/stock/stock_industry_pe_cninfo.py,sha256=0OjjsFGG90zJRZEBqaCsjKSpSAgrp3PpXzMtom_ll_s,4287
|
@@ -278,7 +279,7 @@ akshare/stock/stock_xq.py,sha256=A8bdpDlqj_jYVE1odsYTpWGC_ToDEwx5qN65KC6raCY,464
|
|
278
279
|
akshare/stock/stock_zh_a_sina.py,sha256=ZobGnFMIR67ENk05ocqIkeiItLlgK67dW8ZjLdDss3s,18862
|
279
280
|
akshare/stock/stock_zh_a_special.py,sha256=RRXkeZtRWm_maIPWgxvhBdX6eNybECjhSuEesZHRFJI,10294
|
280
281
|
akshare/stock/stock_zh_a_tick_tx.py,sha256=TJUAWLKAeoLEaVVJQlj0t-1smZGoAO0X0rPsUPVhZZ4,2131
|
281
|
-
akshare/stock/stock_zh_ah_tx.py,sha256=
|
282
|
+
akshare/stock/stock_zh_ah_tx.py,sha256=1DfvP1xF9G4jDnqlacZiYIMWZBujxW9Kycre3yr6MhM,9212
|
282
283
|
akshare/stock/stock_zh_b_sina.py,sha256=-sd0wG4zETsgrJSXivww4YieXfnVMNSfh3phsX_XBBc,16058
|
283
284
|
akshare/stock/stock_zh_kcb_report.py,sha256=7zRovNGqXrPIYtUj9C3ivlYzfiudkaeBNiYPYlzDWkQ,2914
|
284
285
|
akshare/stock/stock_zh_kcb_sina.py,sha256=ZKFoyq9Y-6LhBoYERc4Oqv5q3Llpne7ngDIZcCs8Yq0,9862
|
@@ -312,11 +313,11 @@ akshare/stock_feature/stock_gdhs.py,sha256=Z6ZMy1A03BqMu9TghcIu2Sd_wwEtpIH7qawHu
|
|
312
313
|
akshare/stock_feature/stock_gdzjc_em.py,sha256=SHJH5iS3_NhvjTqRXF0vPooZl0s_ASeyZmNCC50ZYqs,4426
|
313
314
|
akshare/stock_feature/stock_gpzy_em.py,sha256=FgyjVgdoxrtMM7WwxdQJxK0mYGJklIHaT9KmMCFmEPM,17869
|
314
315
|
akshare/stock_feature/stock_gxl_lg.py,sha256=I8TpDEpFzadZSSyZisyIk6163mJlRxup91dmlBH4t4U,2641
|
315
|
-
akshare/stock_feature/stock_hist_em.py,sha256=
|
316
|
+
akshare/stock_feature/stock_hist_em.py,sha256=wNhjRRahEPaan-19vhDY7Nd9xBzxwtqG0emcfJCya8I,69297
|
316
317
|
akshare/stock_feature/stock_hist_tx.py,sha256=WpLsbkG2didSx7lYNkSbTWNTrLhUKbcopfD18WO2Rlc,3397
|
317
318
|
akshare/stock_feature/stock_hk_valuation_baidu.py,sha256=_sErx4UhNsSXJgXyPfrL0aPxkW53Mg1zH9gEKoziaCA,1968
|
318
319
|
akshare/stock_feature/stock_hot_xq.py,sha256=NmoH4x-0hiDztj-YwzMFVIyOICQ2wUUBbhjt91q-tq4,9112
|
319
|
-
akshare/stock_feature/stock_hsgt_em.py,sha256=
|
320
|
+
akshare/stock_feature/stock_hsgt_em.py,sha256=zYs5dWw0dTn0ZIwnR6uzlmC5CzFiwIavPNiceH7BOFU,57783
|
320
321
|
akshare/stock_feature/stock_hsgt_exchange_rate.py,sha256=-oJZ83FUQrNJX_4GB5hS562IdrfJbCwr0d5ioYXtPrQ,7212
|
321
322
|
akshare/stock_feature/stock_hsgt_min_em.py,sha256=KLeez7MQwBAcO-RT7n41LOikUfvXDGK0-G1n9av5mtY,2883
|
322
323
|
akshare/stock_feature/stock_info.py,sha256=JSmJWrSzzq4sP4CgOU0mYGVcbXeWlRDQxNYtbSjJmiM,9043
|
@@ -355,7 +356,7 @@ akshare/stock_feature/ths.js,sha256=AWPkHf3L2Il1UUL0F5qDqNn1dfU0OlZBNUbMf8AmI3Y,
|
|
355
356
|
akshare/stock_fundamental/__init__.py,sha256=jiXoO9OXiMxB0wHaPQkuxNckYuoFKtzuhZL1ytnE2nQ,82
|
356
357
|
akshare/stock_fundamental/stock_finance_hk_em.py,sha256=cCiaWX6ZyKe4W2H9qe-ttpMeVMWp6tHdvnjhRuYQhl8,7017
|
357
358
|
akshare/stock_fundamental/stock_finance_sina.py,sha256=432EjGHWFtG0L32PNSC_HWpVLDntabNt9koyUtNG77E,30718
|
358
|
-
akshare/stock_fundamental/stock_finance_ths.py,sha256=
|
359
|
+
akshare/stock_fundamental/stock_finance_ths.py,sha256=nS9bt_hzklzh7pBTCH1PjOa69OUcNZ41Z_zSHiz9Y1U,11527
|
359
360
|
akshare/stock_fundamental/stock_finance_us_em.py,sha256=iaPtbCyG7ErjkiHHxxkL77G14jKKZcZPrWEN02SilZo,8451
|
360
361
|
akshare/stock_fundamental/stock_hold.py,sha256=h8V5v_0YOi3FJPc1w95WBaO0v3n87lcufcUlu-i6XXk,5394
|
361
362
|
akshare/stock_fundamental/stock_ipo_declare.py,sha256=18j2542TT2nCJ1HWBcT6-HupRbXvesA30qqejknn-kM,1809
|
@@ -382,8 +383,8 @@ akshare/utils/token_process.py,sha256=K4rGXjh_tgugbRcyOK2h2x0jP3PT65IIK7nxhUKhOe
|
|
382
383
|
akshare/utils/tqdm.py,sha256=MuPNwcswkOGjwWQOMWXi9ZvQ_RmW4obCWRj2i7HM7FE,847
|
383
384
|
tests/__init__.py,sha256=gNzhlO0UPjFq6Ieb38kaVIODXv4cTDByrdohAZnDYt4,82
|
384
385
|
tests/test_func.py,sha256=j1MGYbZI2if2j_LY1S4FLsf4qfq4NwVqD5wmRlv5Log,832
|
385
|
-
akshare-1.16.
|
386
|
-
akshare-1.16.
|
387
|
-
akshare-1.16.
|
388
|
-
akshare-1.16.
|
389
|
-
akshare-1.16.
|
386
|
+
akshare-1.16.26.dist-info/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
|
387
|
+
akshare-1.16.26.dist-info/METADATA,sha256=w0qJieekrLlG2MKkXCWDqRLTyufIC3Gg3gvS0AmWCF8,13847
|
388
|
+
akshare-1.16.26.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
389
|
+
akshare-1.16.26.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
|
390
|
+
akshare-1.16.26.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|