akshare 1.16.9__py3-none-any.whl → 1.16.11__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 +3 -1
- akshare/index/index_zh_em.py +23 -62
- akshare/option/option_em.py +1 -1
- akshare/option/option_premium_analysis_em.py +53 -50
- akshare/option/option_risk_analysis_em.py +5 -4
- akshare/option/option_value_analysis_em.py +59 -52
- akshare/stock/stock_hk_famous.py +4 -4
- akshare/stock/stock_intraday_em.py +16 -56
- akshare/stock/stock_us_famous.py +4 -4
- akshare/stock_feature/stock_hist_em.py +2 -2
- {akshare-1.16.9.dist-info → akshare-1.16.11.dist-info}/METADATA +1 -1
- {akshare-1.16.9.dist-info → akshare-1.16.11.dist-info}/RECORD +15 -15
- {akshare-1.16.9.dist-info → akshare-1.16.11.dist-info}/LICENSE +0 -0
- {akshare-1.16.9.dist-info → akshare-1.16.11.dist-info}/WHEEL +0 -0
- {akshare-1.16.9.dist-info → akshare-1.16.11.dist-info}/top_level.txt +0 -0
akshare/__init__.py
CHANGED
@@ -3018,9 +3018,11 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
|
|
3018
3018
|
1.16.7 fix: fix fund_lof_hist_em interface
|
3019
3019
|
1.16.8 fix: fix option_czce_daily interface
|
3020
3020
|
1.16.9 fix: fix stock_sse_deal_daily interface
|
3021
|
+
1.16.10 fix: fix option_risk_analysis_em interface
|
3022
|
+
1.16.11 fix: fix stock_intraday_em interface
|
3021
3023
|
"""
|
3022
3024
|
|
3023
|
-
__version__ = "1.16.
|
3025
|
+
__version__ = "1.16.11"
|
3024
3026
|
__author__ = "AKFamily"
|
3025
3027
|
|
3026
3028
|
import sys
|
akshare/index/index_zh_em.py
CHANGED
@@ -1,18 +1,15 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
2
|
# -*- coding:utf-8 -*-
|
3
3
|
"""
|
4
|
-
Date: 2025/2/
|
4
|
+
Date: 2025/2/24 18:20
|
5
5
|
Desc: 东方财富网-指数行情数据
|
6
6
|
"""
|
7
7
|
|
8
|
-
import math
|
9
8
|
from functools import lru_cache
|
10
9
|
|
11
10
|
import pandas as pd
|
12
11
|
import requests
|
13
12
|
|
14
|
-
from akshare.utils.tqdm import get_tqdm
|
15
|
-
|
16
13
|
|
17
14
|
@lru_cache()
|
18
15
|
def index_code_id_map_em() -> dict:
|
@@ -25,105 +22,69 @@ def index_code_id_map_em() -> dict:
|
|
25
22
|
url = "https://80.push2.eastmoney.com/api/qt/clist/get"
|
26
23
|
params = {
|
27
24
|
"pn": "1",
|
28
|
-
"pz": "
|
25
|
+
"pz": "50000",
|
29
26
|
"po": "1",
|
30
|
-
"np": "
|
27
|
+
"np": "2",
|
31
28
|
"ut": "bd1d9ddb04089700cf9c27f6f7426281",
|
32
29
|
"fltt": "2",
|
33
30
|
"invt": "2",
|
34
|
-
"fid": "
|
31
|
+
"fid": "f3",
|
35
32
|
"fs": "m:1 t:2,m:1 t:23",
|
36
33
|
"fields": "f12",
|
37
34
|
"_": "1623833739532",
|
38
35
|
}
|
39
36
|
r = requests.get(url, params=params)
|
40
37
|
data_json = r.json()
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
for page in tqdm(range(1, total_page + 1), leave=False):
|
45
|
-
params.update(
|
46
|
-
{
|
47
|
-
"pn": page,
|
48
|
-
}
|
49
|
-
)
|
50
|
-
r = requests.get(url, params=params, timeout=15)
|
51
|
-
data_json = r.json()
|
52
|
-
inner_temp_df = pd.DataFrame(data_json["data"]["diff"])
|
53
|
-
temp_list.append(inner_temp_df)
|
54
|
-
temp_df = pd.concat(temp_list, ignore_index=True)
|
38
|
+
if not data_json["data"]["diff"]:
|
39
|
+
return dict()
|
40
|
+
temp_df = pd.DataFrame(data_json["data"]["diff"]).T
|
55
41
|
temp_df["market_id"] = 1
|
56
42
|
temp_df.columns = ["sh_code", "sh_id"]
|
57
43
|
code_id_dict = dict(zip(temp_df["sh_code"], temp_df["sh_id"]))
|
58
44
|
params = {
|
59
45
|
"pn": "1",
|
60
|
-
"pz": "
|
46
|
+
"pz": "10000",
|
61
47
|
"po": "1",
|
62
|
-
"np": "
|
48
|
+
"np": "2",
|
63
49
|
"ut": "bd1d9ddb04089700cf9c27f6f7426281",
|
64
50
|
"fltt": "2",
|
65
51
|
"invt": "2",
|
66
|
-
"fid": "
|
52
|
+
"fid": "f3",
|
67
53
|
"fs": "m:0 t:6,m:0 t:80",
|
68
54
|
"fields": "f12",
|
69
55
|
"_": "1623833739532",
|
70
56
|
}
|
71
57
|
r = requests.get(url, params=params)
|
72
58
|
data_json = r.json()
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
for page in tqdm(range(1, total_page + 1), leave=False):
|
77
|
-
params.update(
|
78
|
-
{
|
79
|
-
"pn": page,
|
80
|
-
}
|
81
|
-
)
|
82
|
-
r = requests.get(url, params=params, timeout=15)
|
83
|
-
data_json = r.json()
|
84
|
-
inner_temp_df = pd.DataFrame(data_json["data"]["diff"])
|
85
|
-
temp_list.append(inner_temp_df)
|
86
|
-
temp_df_sz = pd.concat(temp_list, ignore_index=True)
|
59
|
+
if not data_json["data"]["diff"]:
|
60
|
+
return dict()
|
61
|
+
temp_df_sz = pd.DataFrame(data_json["data"]["diff"]).T
|
87
62
|
temp_df_sz["sz_id"] = 0
|
88
63
|
code_id_dict.update(dict(zip(temp_df_sz["f12"], temp_df_sz["sz_id"])))
|
89
|
-
|
90
64
|
params = {
|
91
65
|
"pn": "1",
|
92
|
-
"pz": "
|
66
|
+
"pz": "10000",
|
93
67
|
"po": "1",
|
94
|
-
"np": "
|
68
|
+
"np": "2",
|
95
69
|
"ut": "bd1d9ddb04089700cf9c27f6f7426281",
|
96
70
|
"fltt": "2",
|
97
71
|
"invt": "2",
|
98
|
-
"fid": "
|
72
|
+
"fid": "f3",
|
99
73
|
"fs": "m:0 t:81 s:2048",
|
100
74
|
"fields": "f12",
|
101
75
|
"_": "1623833739532",
|
102
76
|
}
|
103
77
|
r = requests.get(url, params=params)
|
104
78
|
data_json = r.json()
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
for page in tqdm(range(1, total_page + 1), leave=False):
|
109
|
-
params.update(
|
110
|
-
{
|
111
|
-
"pn": page,
|
112
|
-
}
|
113
|
-
)
|
114
|
-
r = requests.get(url, params=params, timeout=15)
|
115
|
-
data_json = r.json()
|
116
|
-
inner_temp_df = pd.DataFrame(data_json["data"]["diff"])
|
117
|
-
temp_list.append(inner_temp_df)
|
118
|
-
temp_df_sz = pd.concat(temp_list, ignore_index=True)
|
79
|
+
if not data_json["data"]["diff"]:
|
80
|
+
return dict()
|
81
|
+
temp_df_sz = pd.DataFrame(data_json["data"]["diff"]).T
|
119
82
|
temp_df_sz["bj_id"] = 0
|
120
83
|
code_id_dict.update(dict(zip(temp_df_sz["f12"], temp_df_sz["bj_id"])))
|
121
84
|
code_id_dict = {
|
122
85
|
key: value - 1 if value == 1 else value + 1
|
123
86
|
for key, value in code_id_dict.items()
|
124
87
|
}
|
125
|
-
# 单独增加品种
|
126
|
-
code_id_dict.update({"932000": 2})
|
127
88
|
return code_id_dict
|
128
89
|
|
129
90
|
|
@@ -364,7 +325,7 @@ def index_zh_a_hist_min_em(
|
|
364
325
|
temp_df["时间"] = pd.to_datetime(temp_df["时间"]).astype(str)
|
365
326
|
return temp_df
|
366
327
|
else:
|
367
|
-
url = "
|
328
|
+
url = "https://push2his.eastmoney.com/api/qt/stock/kline/get"
|
368
329
|
try:
|
369
330
|
params = {
|
370
331
|
"secid": f"{code_id_dict[symbol]}.{symbol}",
|
@@ -478,8 +439,8 @@ if __name__ == "__main__":
|
|
478
439
|
|
479
440
|
index_zh_a_hist_min_em_df = index_zh_a_hist_min_em(
|
480
441
|
symbol="000001",
|
481
|
-
period="
|
482
|
-
start_date="2025-02-
|
483
|
-
end_date="2025-02-
|
442
|
+
period="1",
|
443
|
+
start_date="2025-02-24 09:30:00",
|
444
|
+
end_date="2025-02-24 19:00:00",
|
484
445
|
)
|
485
446
|
print(index_zh_a_hist_min_em_df)
|
akshare/option/option_em.py
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
# -*- coding:utf-8 -*-
|
2
2
|
# !/usr/bin/env python
|
3
3
|
"""
|
4
|
-
Date:
|
4
|
+
Date: 2025/2/22 21:00
|
5
5
|
Desc: 东方财富网-数据中心-特色数据-期权折溢价
|
6
6
|
https://data.eastmoney.com/other/premium.html
|
7
7
|
"""
|
8
|
+
|
8
9
|
import requests
|
9
10
|
import pandas as pd
|
10
11
|
|
@@ -18,60 +19,62 @@ def option_premium_analysis_em() -> pd.DataFrame:
|
|
18
19
|
"""
|
19
20
|
url = "https://push2.eastmoney.com/api/qt/clist/get"
|
20
21
|
params = {
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
22
|
+
"fid": "f250",
|
23
|
+
"po": "1",
|
24
|
+
"pz": "50000",
|
25
|
+
"pn": "1",
|
26
|
+
"np": "2",
|
27
|
+
"fltt": "2",
|
28
|
+
"invt": "2",
|
29
|
+
"ut": "b2884a393a59ad64002292a3e90d46a5",
|
30
|
+
"fields": "f1,f2,f3,f12,f13,f14,f161,f250,f330,f331,f332,f333,f334,f335,f337,f301,f152",
|
31
|
+
"fs": "m:10",
|
31
32
|
}
|
32
33
|
r = requests.get(url, params=params)
|
33
34
|
data_json = r.json()
|
34
|
-
temp_df = pd.DataFrame(data_json["data"]["diff"])
|
35
|
+
temp_df = pd.DataFrame(data_json["data"]["diff"]).T
|
35
36
|
temp_df.columns = [
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
37
|
+
"-",
|
38
|
+
"最新价",
|
39
|
+
"涨跌幅",
|
40
|
+
"期权代码",
|
41
|
+
"-",
|
42
|
+
"期权名称",
|
43
|
+
"-",
|
44
|
+
"行权价",
|
45
|
+
"折溢价率",
|
46
|
+
"到期日",
|
47
|
+
"-",
|
48
|
+
"-",
|
49
|
+
"-",
|
50
|
+
"标的名称",
|
51
|
+
"标的最新价",
|
52
|
+
"标的涨跌幅",
|
53
|
+
"盈亏平衡价",
|
54
|
+
]
|
55
|
+
temp_df = temp_df[
|
56
|
+
[
|
57
|
+
"期权代码",
|
58
|
+
"期权名称",
|
59
|
+
"最新价",
|
60
|
+
"涨跌幅",
|
61
|
+
"行权价",
|
62
|
+
"折溢价率",
|
63
|
+
"标的名称",
|
64
|
+
"标的最新价",
|
65
|
+
"标的涨跌幅",
|
66
|
+
"盈亏平衡价",
|
67
|
+
"到期日",
|
68
|
+
]
|
53
69
|
]
|
54
|
-
temp_df = temp_df[
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
'标的最新价',
|
63
|
-
'标的涨跌幅',
|
64
|
-
'盈亏平衡价',
|
65
|
-
'到期日',
|
66
|
-
]]
|
67
|
-
temp_df['最新价'] = pd.to_numeric(temp_df['最新价'], errors="coerce")
|
68
|
-
temp_df['涨跌幅'] = pd.to_numeric(temp_df['涨跌幅'], errors="coerce")
|
69
|
-
temp_df['行权价'] = pd.to_numeric(temp_df['行权价'], errors="coerce")
|
70
|
-
temp_df['折溢价率'] = pd.to_numeric(temp_df['折溢价率'], errors="coerce")
|
71
|
-
temp_df['标的最新价'] = pd.to_numeric(temp_df['标的最新价'], errors="coerce")
|
72
|
-
temp_df['标的涨跌幅'] = pd.to_numeric(temp_df['标的涨跌幅'], errors="coerce")
|
73
|
-
temp_df['盈亏平衡价'] = pd.to_numeric(temp_df['盈亏平衡价'], errors="coerce")
|
74
|
-
temp_df['到期日'] = pd.to_datetime(temp_df['到期日'].astype(str)).dt.date
|
70
|
+
temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
|
71
|
+
temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce")
|
72
|
+
temp_df["行权价"] = pd.to_numeric(temp_df["行权价"], errors="coerce")
|
73
|
+
temp_df["折溢价率"] = pd.to_numeric(temp_df["折溢价率"], errors="coerce")
|
74
|
+
temp_df["标的最新价"] = pd.to_numeric(temp_df["标的最新价"], errors="coerce")
|
75
|
+
temp_df["标的涨跌幅"] = pd.to_numeric(temp_df["标的涨跌幅"], errors="coerce")
|
76
|
+
temp_df["盈亏平衡价"] = pd.to_numeric(temp_df["盈亏平衡价"], errors="coerce")
|
77
|
+
temp_df["到期日"] = pd.to_datetime(temp_df["到期日"].astype(str)).dt.date
|
75
78
|
return temp_df
|
76
79
|
|
77
80
|
|
@@ -1,10 +1,11 @@
|
|
1
1
|
# -*- coding:utf-8 -*-
|
2
2
|
# !/usr/bin/env python
|
3
3
|
"""
|
4
|
-
Date:
|
4
|
+
Date: 2025/2/22 21:00
|
5
5
|
Desc: 东方财富网-数据中心-特色数据-期权风险分析
|
6
6
|
https://data.eastmoney.com/other/riskanal.html
|
7
7
|
"""
|
8
|
+
|
8
9
|
import requests
|
9
10
|
import pandas as pd
|
10
11
|
|
@@ -20,9 +21,9 @@ def option_risk_analysis_em() -> pd.DataFrame:
|
|
20
21
|
params = {
|
21
22
|
"fid": "f3",
|
22
23
|
"po": "1",
|
23
|
-
"pz": "
|
24
|
+
"pz": "50000",
|
24
25
|
"pn": "1",
|
25
|
-
"np": "
|
26
|
+
"np": "2",
|
26
27
|
"fltt": "2",
|
27
28
|
"invt": "2",
|
28
29
|
"ut": "b2884a393a59ad64002292a3e90d46a5",
|
@@ -31,7 +32,7 @@ def option_risk_analysis_em() -> pd.DataFrame:
|
|
31
32
|
}
|
32
33
|
r = requests.get(url, params=params)
|
33
34
|
data_json = r.json()
|
34
|
-
temp_df = pd.DataFrame(data_json["data"]["diff"])
|
35
|
+
temp_df = pd.DataFrame(data_json["data"]["diff"]).T
|
35
36
|
temp_df.columns = [
|
36
37
|
"-",
|
37
38
|
"最新价",
|
@@ -1,10 +1,11 @@
|
|
1
1
|
# -*- coding:utf-8 -*-
|
2
2
|
# !/usr/bin/env python
|
3
3
|
"""
|
4
|
-
Date:
|
4
|
+
Date: 2025/2/22 21:00
|
5
5
|
Desc: 东方财富网-数据中心-特色数据-期权价值分析
|
6
6
|
https://data.eastmoney.com/other/valueAnal.html
|
7
7
|
"""
|
8
|
+
|
8
9
|
import requests
|
9
10
|
import pandas as pd
|
10
11
|
|
@@ -18,62 +19,68 @@ def option_value_analysis_em() -> pd.DataFrame:
|
|
18
19
|
"""
|
19
20
|
url = "https://push2.eastmoney.com/api/qt/clist/get"
|
20
21
|
params = {
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
22
|
+
"fid": "f301",
|
23
|
+
"po": "1",
|
24
|
+
"pz": "50000",
|
25
|
+
"pn": "1",
|
26
|
+
"np": "2",
|
27
|
+
"fltt": "2",
|
28
|
+
"invt": "2",
|
29
|
+
"ut": "b2884a393a59ad64002292a3e90d46a5",
|
30
|
+
"fields": "f1,f2,f3,f12,f13,f14,f298,f299,f249,f300,f330,f331,f332,f333,f334,f335,f336,f301,f152",
|
31
|
+
"fs": "m:10",
|
31
32
|
}
|
32
33
|
r = requests.get(url, params=params)
|
33
34
|
data_json = r.json()
|
34
|
-
temp_df = pd.DataFrame(data_json["data"]["diff"])
|
35
|
+
temp_df = pd.DataFrame(data_json["data"]["diff"]).T
|
35
36
|
temp_df.columns = [
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
37
|
+
"-",
|
38
|
+
"最新价",
|
39
|
+
"-",
|
40
|
+
"期权代码",
|
41
|
+
"-",
|
42
|
+
"期权名称",
|
43
|
+
"-",
|
44
|
+
"隐含波动率",
|
45
|
+
"时间价值",
|
46
|
+
"内在价值",
|
47
|
+
"理论价格",
|
48
|
+
"到期日",
|
49
|
+
"-",
|
50
|
+
"-",
|
51
|
+
"-",
|
52
|
+
"标的名称",
|
53
|
+
"标的最新价",
|
54
|
+
"-",
|
55
|
+
"标的近一年波动率",
|
56
|
+
]
|
57
|
+
temp_df = temp_df[
|
58
|
+
[
|
59
|
+
"期权代码",
|
60
|
+
"期权名称",
|
61
|
+
"最新价",
|
62
|
+
"时间价值",
|
63
|
+
"内在价值",
|
64
|
+
"隐含波动率",
|
65
|
+
"理论价格",
|
66
|
+
"标的名称",
|
67
|
+
"标的最新价",
|
68
|
+
"标的近一年波动率",
|
69
|
+
"到期日",
|
70
|
+
]
|
55
71
|
]
|
56
|
-
temp_df = temp_df[
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
]]
|
69
|
-
temp_df['最新价'] = pd.to_numeric(temp_df['最新价'], errors="coerce")
|
70
|
-
temp_df['时间价值'] = pd.to_numeric(temp_df['时间价值'])
|
71
|
-
temp_df['内在价值'] = pd.to_numeric(temp_df['内在价值'])
|
72
|
-
temp_df['隐含波动率'] = pd.to_numeric(temp_df['隐含波动率'])
|
73
|
-
temp_df['理论价格'] = pd.to_numeric(temp_df['理论价格'], errors="coerce")
|
74
|
-
temp_df['标的最新价'] = pd.to_numeric(temp_df['标的最新价'])
|
75
|
-
temp_df['标的近一年波动率'] = pd.to_numeric(temp_df['标的近一年波动率'])
|
76
|
-
temp_df['到期日'] = pd.to_datetime(temp_df['到期日'].astype(str)).dt.date
|
72
|
+
temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
|
73
|
+
temp_df["时间价值"] = pd.to_numeric(temp_df["时间价值"], errors="coerce")
|
74
|
+
temp_df["内在价值"] = pd.to_numeric(temp_df["内在价值"], errors="coerce")
|
75
|
+
temp_df["隐含波动率"] = pd.to_numeric(temp_df["隐含波动率"], errors="coerce")
|
76
|
+
temp_df["理论价格"] = pd.to_numeric(temp_df["理论价格"], errors="coerce")
|
77
|
+
temp_df["标的最新价"] = pd.to_numeric(temp_df["标的最新价"], errors="coerce")
|
78
|
+
temp_df["标的近一年波动率"] = pd.to_numeric(
|
79
|
+
temp_df["标的近一年波动率"], errors="coerce"
|
80
|
+
)
|
81
|
+
temp_df["到期日"] = pd.to_datetime(
|
82
|
+
temp_df["到期日"].astype(str), errors="coerce"
|
83
|
+
).dt.date
|
77
84
|
return temp_df
|
78
85
|
|
79
86
|
|
akshare/stock/stock_hk_famous.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
2
|
# -*- coding:utf-8 -*-
|
3
3
|
"""
|
4
|
-
Date:
|
4
|
+
Date: 2025/2/24 18:30
|
5
5
|
Desc: 东方财富网-行情中心-港股市场-知名港股
|
6
6
|
https://quote.eastmoney.com/center/gridlist.html#hk_wellknown
|
7
7
|
"""
|
@@ -20,9 +20,9 @@ def stock_hk_famous_spot_em() -> pd.DataFrame:
|
|
20
20
|
url = "https://69.push2.eastmoney.com/api/qt/clist/get"
|
21
21
|
params = {
|
22
22
|
"pn": "1",
|
23
|
-
"pz": "
|
23
|
+
"pz": "50000",
|
24
24
|
"po": "1",
|
25
|
-
"np": "
|
25
|
+
"np": "2",
|
26
26
|
"ut": "bd1d9ddb04089700cf9c27f6f7426281",
|
27
27
|
"fltt": "2",
|
28
28
|
"invt": "2",
|
@@ -36,7 +36,7 @@ def stock_hk_famous_spot_em() -> pd.DataFrame:
|
|
36
36
|
}
|
37
37
|
r = requests.get(url, params=params)
|
38
38
|
data_json = r.json()
|
39
|
-
temp_df = pd.DataFrame(data_json["data"]["diff"])
|
39
|
+
temp_df = pd.DataFrame(data_json["data"]["diff"]).T
|
40
40
|
temp_df.columns = [
|
41
41
|
"_",
|
42
42
|
"最新价",
|
@@ -1,20 +1,17 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
2
|
# -*- coding:utf-8 -*-
|
3
3
|
"""
|
4
|
-
Date: 2025/2/
|
4
|
+
Date: 2025/2/24 18:00
|
5
5
|
Desc: 东财财富-日内分时数据
|
6
6
|
https://quote.eastmoney.com/f1.html?newcode=0.000001
|
7
7
|
"""
|
8
8
|
|
9
9
|
import json
|
10
|
-
import math
|
11
10
|
from functools import lru_cache
|
12
11
|
|
13
12
|
import pandas as pd
|
14
13
|
import requests
|
15
14
|
|
16
|
-
from akshare.utils.tqdm import get_tqdm
|
17
|
-
|
18
15
|
|
19
16
|
@lru_cache()
|
20
17
|
def __code_id_map_em() -> dict:
|
@@ -24,16 +21,16 @@ def __code_id_map_em() -> dict:
|
|
24
21
|
:return: 股票和市场代码
|
25
22
|
:rtype: dict
|
26
23
|
"""
|
27
|
-
url = "
|
24
|
+
url = "https://80.push2.eastmoney.com/api/qt/clist/get"
|
28
25
|
params = {
|
29
26
|
"pn": "1",
|
30
|
-
"pz": "
|
27
|
+
"pz": "50000",
|
31
28
|
"po": "1",
|
32
|
-
"np": "
|
29
|
+
"np": "2",
|
33
30
|
"ut": "bd1d9ddb04089700cf9c27f6f7426281",
|
34
31
|
"fltt": "2",
|
35
32
|
"invt": "2",
|
36
|
-
"fid": "
|
33
|
+
"fid": "f3",
|
37
34
|
"fs": "m:1 t:2,m:1 t:23",
|
38
35
|
"fields": "f12",
|
39
36
|
"_": "1623833739532",
|
@@ -42,32 +39,19 @@ def __code_id_map_em() -> dict:
|
|
42
39
|
data_json = r.json()
|
43
40
|
if not data_json["data"]["diff"]:
|
44
41
|
return dict()
|
45
|
-
|
46
|
-
temp_list = []
|
47
|
-
tqdm = get_tqdm()
|
48
|
-
for page in tqdm(range(1, total_page + 1), leave=False):
|
49
|
-
params.update(
|
50
|
-
{
|
51
|
-
"pn": page,
|
52
|
-
}
|
53
|
-
)
|
54
|
-
r = requests.get(url, params=params, timeout=15)
|
55
|
-
data_json = r.json()
|
56
|
-
inner_temp_df = pd.DataFrame(data_json["data"]["diff"])
|
57
|
-
temp_list.append(inner_temp_df)
|
58
|
-
temp_df = pd.concat(temp_list, ignore_index=True)
|
42
|
+
temp_df = pd.DataFrame(data_json["data"]["diff"]).T
|
59
43
|
temp_df["market_id"] = 1
|
60
44
|
temp_df.columns = ["sh_code", "sh_id"]
|
61
45
|
code_id_dict = dict(zip(temp_df["sh_code"], temp_df["sh_id"]))
|
62
46
|
params = {
|
63
47
|
"pn": "1",
|
64
|
-
"pz": "
|
48
|
+
"pz": "50000",
|
65
49
|
"po": "1",
|
66
|
-
"np": "
|
50
|
+
"np": "2",
|
67
51
|
"ut": "bd1d9ddb04089700cf9c27f6f7426281",
|
68
52
|
"fltt": "2",
|
69
53
|
"invt": "2",
|
70
|
-
"fid": "
|
54
|
+
"fid": "f3",
|
71
55
|
"fs": "m:0 t:6,m:0 t:80",
|
72
56
|
"fields": "f12",
|
73
57
|
"_": "1623833739532",
|
@@ -76,31 +60,18 @@ def __code_id_map_em() -> dict:
|
|
76
60
|
data_json = r.json()
|
77
61
|
if not data_json["data"]["diff"]:
|
78
62
|
return dict()
|
79
|
-
|
80
|
-
temp_list = []
|
81
|
-
tqdm = get_tqdm()
|
82
|
-
for page in tqdm(range(1, total_page + 1), leave=False):
|
83
|
-
params.update(
|
84
|
-
{
|
85
|
-
"pn": page,
|
86
|
-
}
|
87
|
-
)
|
88
|
-
r = requests.get(url, params=params, timeout=15)
|
89
|
-
data_json = r.json()
|
90
|
-
inner_temp_df = pd.DataFrame(data_json["data"]["diff"])
|
91
|
-
temp_list.append(inner_temp_df)
|
92
|
-
temp_df_sz = pd.concat(temp_list, ignore_index=True)
|
63
|
+
temp_df_sz = pd.DataFrame(data_json["data"]["diff"]).T
|
93
64
|
temp_df_sz["sz_id"] = 0
|
94
65
|
code_id_dict.update(dict(zip(temp_df_sz["f12"], temp_df_sz["sz_id"])))
|
95
66
|
params = {
|
96
67
|
"pn": "1",
|
97
|
-
"pz": "
|
68
|
+
"pz": "50000",
|
98
69
|
"po": "1",
|
99
|
-
"np": "
|
70
|
+
"np": "2",
|
100
71
|
"ut": "bd1d9ddb04089700cf9c27f6f7426281",
|
101
72
|
"fltt": "2",
|
102
73
|
"invt": "2",
|
103
|
-
"fid": "
|
74
|
+
"fid": "f3",
|
104
75
|
"fs": "m:0 t:81 s:2048",
|
105
76
|
"fields": "f12",
|
106
77
|
"_": "1623833739532",
|
@@ -109,20 +80,7 @@ def __code_id_map_em() -> dict:
|
|
109
80
|
data_json = r.json()
|
110
81
|
if not data_json["data"]["diff"]:
|
111
82
|
return dict()
|
112
|
-
|
113
|
-
temp_list = []
|
114
|
-
tqdm = get_tqdm()
|
115
|
-
for page in tqdm(range(1, total_page + 1), leave=False):
|
116
|
-
params.update(
|
117
|
-
{
|
118
|
-
"pn": page,
|
119
|
-
}
|
120
|
-
)
|
121
|
-
r = requests.get(url, params=params, timeout=15)
|
122
|
-
data_json = r.json()
|
123
|
-
inner_temp_df = pd.DataFrame(data_json["data"]["diff"])
|
124
|
-
temp_list.append(inner_temp_df)
|
125
|
-
temp_df_sz = pd.concat(temp_list, ignore_index=True)
|
83
|
+
temp_df_sz = pd.DataFrame(data_json["data"]["diff"]).T
|
126
84
|
temp_df_sz["bj_id"] = 0
|
127
85
|
code_id_dict.update(dict(zip(temp_df_sz["f12"], temp_df_sz["bj_id"])))
|
128
86
|
return code_id_dict
|
@@ -163,7 +121,9 @@ def stock_intraday_em(symbol: str = "000001") -> pd.DataFrame:
|
|
163
121
|
"secid": f"{code_id_map_em_dict[symbol]}.{symbol}",
|
164
122
|
"wbp2u": "|0|0|0|web",
|
165
123
|
}
|
124
|
+
|
166
125
|
big_df = pd.DataFrame() # 创建一个空的 DataFrame
|
126
|
+
|
167
127
|
for event in __event_stream(url, params):
|
168
128
|
# 从每个事件的数据行中删除 "data: ",然后解析 JSON
|
169
129
|
event_json = json.loads(event.replace("data: ", ""))
|
akshare/stock/stock_us_famous.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
2
|
# -*- coding:utf-8 -*-
|
3
3
|
"""
|
4
|
-
Date:
|
4
|
+
Date: 2025/2/24 18:30
|
5
5
|
Desc: 东方财富网-行情中心-美股市场-知名美股
|
6
6
|
https://quote.eastmoney.com/center/gridlist.html#us_wellknown
|
7
7
|
"""
|
@@ -30,9 +30,9 @@ def stock_us_famous_spot_em(symbol: str = "科技类") -> pd.DataFrame:
|
|
30
30
|
url = "https://69.push2.eastmoney.com/api/qt/clist/get"
|
31
31
|
params = {
|
32
32
|
"pn": "1",
|
33
|
-
"pz": "
|
33
|
+
"pz": "50000",
|
34
34
|
"po": "1",
|
35
|
-
"np": "
|
35
|
+
"np": "2",
|
36
36
|
"ut": "bd1d9ddb04089700cf9c27f6f7426281",
|
37
37
|
"fltt": "2",
|
38
38
|
"invt": "2",
|
@@ -44,7 +44,7 @@ def stock_us_famous_spot_em(symbol: str = "科技类") -> pd.DataFrame:
|
|
44
44
|
}
|
45
45
|
r = requests.get(url, params=params)
|
46
46
|
data_json = r.json()
|
47
|
-
temp_df = pd.DataFrame(data_json["data"]["diff"])
|
47
|
+
temp_df = pd.DataFrame(data_json["data"]["diff"]).T
|
48
48
|
temp_df.columns = [
|
49
49
|
"_",
|
50
50
|
"最新价",
|
@@ -482,7 +482,7 @@ def stock_new_a_spot_em() -> pd.DataFrame:
|
|
482
482
|
"pn": "1",
|
483
483
|
"pz": "50000",
|
484
484
|
"po": "1",
|
485
|
-
"np": "
|
485
|
+
"np": "2",
|
486
486
|
"ut": "bd1d9ddb04089700cf9c27f6f7426281",
|
487
487
|
"fltt": "2",
|
488
488
|
"invt": "2",
|
@@ -497,7 +497,7 @@ def stock_new_a_spot_em() -> pd.DataFrame:
|
|
497
497
|
data_json = r.json()
|
498
498
|
if not data_json["data"]["diff"]:
|
499
499
|
return pd.DataFrame()
|
500
|
-
temp_df = pd.DataFrame(data_json["data"]["diff"])
|
500
|
+
temp_df = pd.DataFrame(data_json["data"]["diff"]).T
|
501
501
|
temp_df.columns = [
|
502
502
|
"_",
|
503
503
|
"最新价",
|
@@ -1,4 +1,4 @@
|
|
1
|
-
akshare/__init__.py,sha256=
|
1
|
+
akshare/__init__.py,sha256=14lo_Drvbjv_VQ7Ew7Rlwi7P_TYpICe34QOwcoKnjAE,188075
|
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
|
@@ -173,7 +173,7 @@ akshare/index/index_sugar.py,sha256=B_Nj9Q6JP-Y_d7myZ0C79izTxxrbuZIp1Vv_CilVMOc,
|
|
173
173
|
akshare/index/index_sw.py,sha256=hETMmFszQb7JDY8UHjLK8szfwkr7Ui_6QcseOoEfxaI,10456
|
174
174
|
akshare/index/index_yw.py,sha256=6FF38kooLQulnMTqAd1__TNWip4XC1VA72k3T049xYc,4319
|
175
175
|
akshare/index/index_zh_a_scope.py,sha256=4Ej2Gnqtd66EBiI67sQZKhblcIJXdD5CoMIJYD_KwYU,1367
|
176
|
-
akshare/index/index_zh_em.py,sha256=
|
176
|
+
akshare/index/index_zh_em.py,sha256=5UseU40Mk-XO3vyTbrq6GHiLdG4_-c5iZXHVdCNw4o0,16362
|
177
177
|
akshare/interest_rate/__init__.py,sha256=O6dl1roEQUWwtXgRpa6wOABUU7MH0YmFDrkfhBpYOX4,81
|
178
178
|
akshare/interest_rate/interbank_rate_em.py,sha256=iKvmWxM4bpl9JgHNvavq0yhzMRq69BPEON1cGcWJrf4,4549
|
179
179
|
akshare/movie/__init__.py,sha256=YzijIIzvGpcc9hORC6qJSEK6vkjH5c4Docb5tQq2iHs,82
|
@@ -194,14 +194,14 @@ akshare/option/option_commodity.py,sha256=KQ690k83wKnjYN5Sf3meLx0pvEYAc5dE2tOkv3
|
|
194
194
|
akshare/option/option_commodity_sina.py,sha256=r6qK_K7w3A6Uqp5ZtBb4pW7vH04oMyeCEZLLGqi0jpA,7776
|
195
195
|
akshare/option/option_czce.py,sha256=L4i7TVKcOns5ZKoqq-mrSykdx3SGwu6OL4eI77-A_lc,1812
|
196
196
|
akshare/option/option_daily_stats_sse_szse.py,sha256=Ip_vE81qbEGt4ocbtWfUT7XGu0HWU0zKkzauZeq9RJA,4962
|
197
|
-
akshare/option/option_em.py,sha256=
|
197
|
+
akshare/option/option_em.py,sha256=M5mWE-YRQOywC9MY4CNgNwjLNl2AF32P4CHSF6zvK4k,5962
|
198
198
|
akshare/option/option_finance.py,sha256=7rnEeHo-7Sddrs36Q4c99CXL_9m8IJzw9S1Aqh3Bw90,12568
|
199
199
|
akshare/option/option_finance_sina.py,sha256=Pzsrl_NKN99nWPSAirq7ushGwSfd738ISVYeCHxMZXE,37843
|
200
200
|
akshare/option/option_lhb_em.py,sha256=VHrV2BWAPE7tj8q7J5Crjm-sey8QarYd1lgxKbkX2CQ,9090
|
201
|
-
akshare/option/option_premium_analysis_em.py,sha256=
|
202
|
-
akshare/option/option_risk_analysis_em.py,sha256=
|
201
|
+
akshare/option/option_premium_analysis_em.py,sha256=vPOndT5I7j_bS0rIsJpmu0QbCec7TQinON8OAdE06vc,2538
|
202
|
+
akshare/option/option_risk_analysis_em.py,sha256=3IlE-OxJprB8MOmSXd2Ym4y8xM01zHCML9lUQxJFa0g,2581
|
203
203
|
akshare/option/option_risk_indicator_sse.py,sha256=W1_mGrk8M9pbbadzSAy5euWMEGn4-cVWBc8Jk_I2WmI,2484
|
204
|
-
akshare/option/option_value_analysis_em.py,sha256=
|
204
|
+
akshare/option/option_value_analysis_em.py,sha256=lueBvtDelpYPccEYH0LSUvgUQqOGloVFqZFSyT2J2_0,2684
|
205
205
|
akshare/other/__init__.py,sha256=guH4GLhFcE_5iaMHOHtgK7QKa0i7esYdmZFfJMG6E10,82
|
206
206
|
akshare/other/other_car_cpca.py,sha256=hCBNUrCI2l3OCP3Gqgr_4zpyzhO99XCBoiwkIhUM3r0,34987
|
207
207
|
akshare/other/other_car_gasgoo.py,sha256=KaCMVPydiGJvhJN9eZEvObygYquCsSgsZkQRB0J6srk,3046
|
@@ -241,7 +241,7 @@ akshare/stock/stock_dzjy_em.py,sha256=QMo2w-_I9UnmCr1IXk_InFeW5ok_GpRE9HdWFDUdGy
|
|
241
241
|
akshare/stock/stock_fund_em.py,sha256=ZtDX_llsN4Wxm6IcoGMLV0Xoy0n6CIuDpXVps5OBQS8,48920
|
242
242
|
akshare/stock/stock_fund_hold.py,sha256=iFEmRFber7MF6aPi0QOJxpvYjO7I26KouUvC-xTQdCk,6056
|
243
243
|
akshare/stock/stock_gsrl_em.py,sha256=oy5vO681ZPTEehZgz10T8jgIQ8dNm_E7MXGr1PGoHqI,1951
|
244
|
-
akshare/stock/stock_hk_famous.py,sha256=
|
244
|
+
akshare/stock/stock_hk_famous.py,sha256=uF1iUkrwvMMxvxE3-O7byxQ-oS0SjlMBwOEraTBA41s,3018
|
245
245
|
akshare/stock/stock_hk_fhpx_ths.py,sha256=68soKJIOMoAGuCvJIMZBVU-2wL_umtv67SuqVzl2C14,2191
|
246
246
|
akshare/stock/stock_hk_hot_rank_em.py,sha256=IhLGahWXfYPQRrCoB1Ph7DRbs_39BcrmXpIgXgEkttg,4746
|
247
247
|
akshare/stock/stock_hk_sina.py,sha256=7tD7P4lo6U40s-jkS9E128voZgYx75vbxmG3M0LyqNg,9589
|
@@ -257,7 +257,7 @@ akshare/stock/stock_industry_pe_cninfo.py,sha256=0OjjsFGG90zJRZEBqaCsjKSpSAgrp3P
|
|
257
257
|
akshare/stock/stock_industry_sw.py,sha256=C0FjDg976EA0EksRS3sChbmJOZmOPEOzKCrHVs2YqTg,1441
|
258
258
|
akshare/stock/stock_info.py,sha256=AqzLzsTlYTSExBtyrZZBjI-D-VROj9e7Sq37WKHJ7XQ,16314
|
259
259
|
akshare/stock/stock_info_em.py,sha256=F-K8ZzWW70KTzShP82semh8RKklUEot2zxuzNDum20I,2615
|
260
|
-
akshare/stock/stock_intraday_em.py,sha256=
|
260
|
+
akshare/stock/stock_intraday_em.py,sha256=s3gAzG0-6gYj407WePpoNXVyKUZB-siOOw1xZbBYIF4,4538
|
261
261
|
akshare/stock/stock_intraday_sina.py,sha256=7LzXRwjdPo-BHwvs8244-MFiGriPUCFBJqRW-r9iVB4,2359
|
262
262
|
akshare/stock/stock_ipo_summary_cninfo.py,sha256=Ma-54GsOOhRWxilLH-Qmm0VVbpJQGf2XWKaJ8NBSgAY,3847
|
263
263
|
akshare/stock/stock_new_cninfo.py,sha256=EOuZowDLQSSHyPAwXcuPXbQkqhbz2nRBZsM7o2ZWILE,5725
|
@@ -269,7 +269,7 @@ akshare/stock/stock_share_changes_cninfo.py,sha256=siy4PiZgYuNQn5jUUg2G7CyZ_yvuX
|
|
269
269
|
akshare/stock/stock_share_hold.py,sha256=sKiWH69n8_MQohi0qZ3Br-WQRq9I7S0USrb-tMVinb0,11028
|
270
270
|
akshare/stock/stock_stop.py,sha256=8HyazJAFj-s12ujUtrxO8VPXyA5bF9-3eNEj0qzGwMg,1185
|
271
271
|
akshare/stock/stock_summary.py,sha256=rtJImzACxpGRqYGe9-yNTzsSZDlsG1Uns18sDIgunZY,11204
|
272
|
-
akshare/stock/stock_us_famous.py,sha256=
|
272
|
+
akshare/stock/stock_us_famous.py,sha256=C0JjmaLi1D4fFtTmPSYOnIvetW2mSbRCalwHjZnv638,3658
|
273
273
|
akshare/stock/stock_us_js.py,sha256=wwZpRvVHqjxwd0cb2O5vtRW8Zw90Kdl5O4XNwoevN64,2502
|
274
274
|
akshare/stock/stock_us_pink.py,sha256=BX7-tG4Zs0k2vSYGxHH0Yob-moD6AAu2a-ytZpxgIRQ,3065
|
275
275
|
akshare/stock/stock_us_sina.py,sha256=D4fhJgpmvnlVoeSV2wQQ7H6lig8h6vaJp71o88dZhDg,8200
|
@@ -311,7 +311,7 @@ akshare/stock_feature/stock_gdhs.py,sha256=Z6ZMy1A03BqMu9TghcIu2Sd_wwEtpIH7qawHu
|
|
311
311
|
akshare/stock_feature/stock_gdzjc_em.py,sha256=SHJH5iS3_NhvjTqRXF0vPooZl0s_ASeyZmNCC50ZYqs,4426
|
312
312
|
akshare/stock_feature/stock_gpzy_em.py,sha256=FgyjVgdoxrtMM7WwxdQJxK0mYGJklIHaT9KmMCFmEPM,17869
|
313
313
|
akshare/stock_feature/stock_gxl_lg.py,sha256=I8TpDEpFzadZSSyZisyIk6163mJlRxup91dmlBH4t4U,2641
|
314
|
-
akshare/stock_feature/stock_hist_em.py,sha256=
|
314
|
+
akshare/stock_feature/stock_hist_em.py,sha256=uxkhxn3O-JdvR29T7jhSkpgsPJkHHZsnUerG0bgg90w,69297
|
315
315
|
akshare/stock_feature/stock_hist_tx.py,sha256=WpLsbkG2didSx7lYNkSbTWNTrLhUKbcopfD18WO2Rlc,3397
|
316
316
|
akshare/stock_feature/stock_hk_valuation_baidu.py,sha256=_sErx4UhNsSXJgXyPfrL0aPxkW53Mg1zH9gEKoziaCA,1968
|
317
317
|
akshare/stock_feature/stock_hot_xq.py,sha256=NmoH4x-0hiDztj-YwzMFVIyOICQ2wUUBbhjt91q-tq4,9112
|
@@ -380,8 +380,8 @@ akshare/utils/token_process.py,sha256=K4rGXjh_tgugbRcyOK2h2x0jP3PT65IIK7nxhUKhOe
|
|
380
380
|
akshare/utils/tqdm.py,sha256=MuPNwcswkOGjwWQOMWXi9ZvQ_RmW4obCWRj2i7HM7FE,847
|
381
381
|
tests/__init__.py,sha256=gNzhlO0UPjFq6Ieb38kaVIODXv4cTDByrdohAZnDYt4,82
|
382
382
|
tests/test_func.py,sha256=j1MGYbZI2if2j_LY1S4FLsf4qfq4NwVqD5wmRlv5Log,832
|
383
|
-
akshare-1.16.
|
384
|
-
akshare-1.16.
|
385
|
-
akshare-1.16.
|
386
|
-
akshare-1.16.
|
387
|
-
akshare-1.16.
|
383
|
+
akshare-1.16.11.dist-info/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
|
384
|
+
akshare-1.16.11.dist-info/METADATA,sha256=1TtMqh-7v-Oi8CSDhSJuzPGZmEZ2xHb13bpIFe6hHSE,13679
|
385
|
+
akshare-1.16.11.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
386
|
+
akshare-1.16.11.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
|
387
|
+
akshare-1.16.11.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|