akshare 1.16.30__py3-none-any.whl → 1.16.32__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 +13 -1
- akshare/index/cons.py +132 -28
- akshare/index/index_global_em.py +169 -0
- akshare/index/index_global_sina.py +82 -0
- akshare/news/news_baidu.py +15 -34
- {akshare-1.16.30.dist-info → akshare-1.16.32.dist-info}/METADATA +2 -2
- {akshare-1.16.30.dist-info → akshare-1.16.32.dist-info}/RECORD +10 -8
- {akshare-1.16.30.dist-info → akshare-1.16.32.dist-info}/LICENSE +0 -0
- {akshare-1.16.30.dist-info → akshare-1.16.32.dist-info}/WHEEL +0 -0
- {akshare-1.16.30.dist-info → akshare-1.16.32.dist-info}/top_level.txt +0 -0
akshare/__init__.py
CHANGED
@@ -3039,9 +3039,11 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
|
|
3039
3039
|
1.16.28 fix: fix futures_global_hist_em interface
|
3040
3040
|
1.16.29 fix: fix futures_global_hist_em interface
|
3041
3041
|
1.16.30 add: add forex_hist_em interface
|
3042
|
+
1.16.31 add: add index_global_hist_em interface
|
3043
|
+
1.16.32 fix: fix news_economic_baidu interface
|
3042
3044
|
"""
|
3043
3045
|
|
3044
|
-
__version__ = "1.16.
|
3046
|
+
__version__ = "1.16.32"
|
3045
3047
|
__author__ = "AKFamily"
|
3046
3048
|
|
3047
3049
|
import sys
|
@@ -3063,6 +3065,16 @@ if sys.version_info < (3, 9):
|
|
3063
3065
|
|
3064
3066
|
del sys
|
3065
3067
|
|
3068
|
+
"""
|
3069
|
+
新浪财经-行情中心-环球市场
|
3070
|
+
"""
|
3071
|
+
from akshare.index.index_global_sina import index_global_hist_sina, index_global_name_table
|
3072
|
+
|
3073
|
+
"""
|
3074
|
+
东方财富网-行情中心-全球指数
|
3075
|
+
"""
|
3076
|
+
from akshare.index.index_global_em import index_global_hist_em, index_global_spot_em
|
3077
|
+
|
3066
3078
|
"""
|
3067
3079
|
东方财富网-行情中心-外汇市场-所有汇率
|
3068
3080
|
"""
|
akshare/index/cons.py
CHANGED
@@ -4,9 +4,11 @@
|
|
4
4
|
Date: 2021/5/27 20:19
|
5
5
|
Desc: 指数配置文件
|
6
6
|
"""
|
7
|
+
|
7
8
|
# weibo-user-agent
|
8
9
|
index_weibo_headers = {
|
9
|
-
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X)
|
10
|
+
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) "
|
11
|
+
"AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1",
|
10
12
|
"Referer": "http://data.weibo.com/index/newindex",
|
11
13
|
"Accept": "application/json",
|
12
14
|
"Origin": "https://data.weibo.com",
|
@@ -24,7 +26,8 @@ sw_cons_headers = {
|
|
24
26
|
"Host": "www.swsindex.com",
|
25
27
|
"Origin": "http://www.swsindex.com",
|
26
28
|
"Referer": "http://www.swsindex.com/idx0210.aspx?swindexcode=801010",
|
27
|
-
|
29
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
30
|
+
"Chrome/78.0.3904.108 Safari/537.36",
|
28
31
|
"X-AjaxPro-Method": "ReturnContent",
|
29
32
|
}
|
30
33
|
|
@@ -36,7 +39,10 @@ sw_payload = {
|
|
36
39
|
"tablename": "swzs",
|
37
40
|
"key": "L1",
|
38
41
|
"p": "1",
|
39
|
-
"where": "L1 in('801010','801020','801030','801040','801050','801080','801110','801120','801130',
|
42
|
+
"where": "L1 in('801010','801020','801030','801040','801050','801080','801110','801120','801130',"
|
43
|
+
"'801140','801150','801160','801170','801180','801200','801210','801230','801710','801720',"
|
44
|
+
"'801730','801740','801750','801760','801770','801780','801790','801880','801890','801950',"
|
45
|
+
"'801960','801970','801980')",
|
40
46
|
"orderby": "",
|
41
47
|
"fieldlist": "L1,L2,L3,L4,L5,L6,L7,L8,L11",
|
42
48
|
"pagecount": "28",
|
@@ -45,47 +51,145 @@ sw_payload = {
|
|
45
51
|
|
46
52
|
# sw-headers
|
47
53
|
sw_headers = {
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
54
|
+
"Accept": "application/json, text/javascript, */*",
|
55
|
+
"Accept-Encoding": "gzip, deflate",
|
56
|
+
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
|
57
|
+
"Cache-Control": "no-cache",
|
58
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
59
|
+
"DNT": "1",
|
60
|
+
"Host": "www.swsindex.com",
|
61
|
+
"Origin": "http://www.swsindex.com",
|
62
|
+
"Pragma": "no-cache",
|
63
|
+
"Referer": "http://www.swsindex.com/idx0120.aspx?columnid=8832",
|
64
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
65
|
+
"Chrome/74.0.3729.169 Safari/537.36",
|
66
|
+
"X-Requested-With": "XMLHttpRequest",
|
60
67
|
}
|
61
68
|
|
62
69
|
# zh-sina-a
|
63
|
-
zh_sina_index_stock_url =
|
70
|
+
zh_sina_index_stock_url = (
|
71
|
+
"http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/"
|
72
|
+
"Market_Center.getHQNodeDataSimple"
|
73
|
+
)
|
64
74
|
zh_sina_index_stock_payload = {
|
65
75
|
"page": "1",
|
66
76
|
"num": "80",
|
67
77
|
"sort": "symbol",
|
68
78
|
"asc": "1",
|
69
79
|
"node": "hs_s",
|
70
|
-
"_s_r_a": "page"
|
80
|
+
"_s_r_a": "page",
|
71
81
|
}
|
72
|
-
zh_sina_index_stock_count_url =
|
73
|
-
|
82
|
+
zh_sina_index_stock_count_url = (
|
83
|
+
"http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/"
|
84
|
+
"Market_Center.getHQNodeStockCountSimple?node=hs_s"
|
85
|
+
)
|
86
|
+
zh_sina_index_stock_hist_url = (
|
87
|
+
"https://finance.sina.com.cn/realstock/company/{}/hisdata/klc_kl.js"
|
88
|
+
)
|
74
89
|
|
75
90
|
# investing
|
76
91
|
short_headers = {
|
77
|
-
|
92
|
+
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
93
|
+
"Chrome/61.0.3163.91 Safari/537.36"
|
78
94
|
}
|
79
95
|
|
80
96
|
long_headers = {
|
81
|
-
|
97
|
+
"accept": "text/plain, */*; q=0.01",
|
82
98
|
# 'accept-encoding': 'gzip, deflate, br',
|
83
|
-
|
99
|
+
"accept-language": "zh-CN,zh;q=0.9,en;q=0.8",
|
84
100
|
# 'cache-control': 'no-cache',
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
101
|
+
"content-length": "267",
|
102
|
+
"content-type": "application/x-www-form-urlencoded",
|
103
|
+
"origin": "https://cn.investing.com",
|
104
|
+
"referer": "https://cn.investing.com/commodities/brent-oil-historical-data",
|
105
|
+
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
106
|
+
"Chrome/61.0.3163.91 Safari/537.36",
|
107
|
+
"x-requested-with": "XMLHttpRequest",
|
108
|
+
}
|
109
|
+
|
110
|
+
index_global_sina_symbol_map = {
|
111
|
+
# 欧洲股市
|
112
|
+
"英国富时100指数": "UKX",
|
113
|
+
"德国DAX 30种股价指数": "DAX",
|
114
|
+
"俄罗斯MICEX指数": "INDEXCF",
|
115
|
+
"法CAC40指数": "CAC",
|
116
|
+
"瑞士股票指数": "SWI20",
|
117
|
+
"富时意大利MIB指数": "FTSEMIB",
|
118
|
+
"荷兰AEX综合指数": "AEX",
|
119
|
+
"西班牙IBEX指数": "IBEX",
|
120
|
+
"欧洲Stoxx50指数": "SX5E",
|
121
|
+
# 美洲股市
|
122
|
+
"加拿大S&P/TSX综合指数": "GSPTSE",
|
123
|
+
"墨西哥BOLSA指数": "MXX",
|
124
|
+
"巴西BOVESPA股票指数": "IBOV",
|
125
|
+
# 亚洲股市
|
126
|
+
"中国台湾加权指数": "TWJQ",
|
127
|
+
"日经225指数": "NKY",
|
128
|
+
"首尔综合指数": "KOSPI",
|
129
|
+
"印度尼西亚雅加达综合指数": "JCI",
|
130
|
+
"印度孟买SENSEX指数": "SENSEX",
|
131
|
+
# 澳洲股市
|
132
|
+
"澳大利亚标准普尔200指数": "AS51",
|
133
|
+
"新西兰NZSE 50指数": "NZ250",
|
134
|
+
# 非洲股市
|
135
|
+
"埃及CASE 30指数": "CASE",
|
136
|
+
}
|
137
|
+
|
138
|
+
index_global_em_symbol_map = {
|
139
|
+
"波罗的海BDI指数": {"code": "BDI", "market": "100"},
|
140
|
+
"葡萄牙PSI20": {"code": "PSI20", "market": "100"},
|
141
|
+
"菲律宾马尼拉": {"code": "PSI", "market": "100"},
|
142
|
+
"泰国SET": {"code": "SET", "market": "100"},
|
143
|
+
"俄罗斯RTS": {"code": "RTS", "market": "100"},
|
144
|
+
"巴基斯坦卡拉奇": {"code": "KSE100", "market": "100"},
|
145
|
+
"越南胡志明": {"code": "VNINDEX", "market": "100"},
|
146
|
+
"红筹指数": {"code": "HSCCI", "market": "124"},
|
147
|
+
"印尼雅加达综合": {"code": "JKSE", "market": "100"},
|
148
|
+
"希腊雅典ASE": {"code": "ASE", "market": "100"},
|
149
|
+
"墨西哥BOLSA": {"code": "MXX", "market": "100"},
|
150
|
+
"挪威OSEBX": {"code": "OSEBX", "market": "100"},
|
151
|
+
"巴西BOVESPA": {"code": "BVSP", "market": "100"},
|
152
|
+
"波兰WIG": {"code": "WIG", "market": "100"},
|
153
|
+
"印度孟买SENSEX": {"code": "SENSEX", "market": "100"},
|
154
|
+
"布拉格指数": {"code": "PX", "market": "100"},
|
155
|
+
"荷兰AEX": {"code": "AEX", "market": "100"},
|
156
|
+
"冰岛ICEX": {"code": "ICEXI", "market": "100"},
|
157
|
+
"斯里兰卡科伦坡": {"code": "CSEALL", "market": "100"},
|
158
|
+
"富时新加坡海峡时报": {"code": "STI", "market": "100"},
|
159
|
+
"富时意大利MIB": {"code": "MIB", "market": "100"},
|
160
|
+
"路透CRB商品指数": {"code": "CRB", "market": "100"},
|
161
|
+
"比利时BFX": {"code": "BFX", "market": "100"},
|
162
|
+
"富时AIM全股": {"code": "AXX", "market": "100"},
|
163
|
+
"新西兰50": {"code": "NZ50", "market": "100"},
|
164
|
+
"上证指数": {"code": "000001", "market": "1"},
|
165
|
+
"国企指数": {"code": "HSCEI", "market": "100"},
|
166
|
+
"沪深300": {"code": "000300", "market": "1"},
|
167
|
+
"英国富时100": {"code": "FTSE", "market": "100"},
|
168
|
+
"中小100": {"code": "399005", "market": "0"},
|
169
|
+
"瑞士SMI": {"code": "SSMI", "market": "100"},
|
170
|
+
"西班牙IBEX35": {"code": "IBEX", "market": "100"},
|
171
|
+
"瑞典OMXSPI": {"code": "OMXSPI", "market": "100"},
|
172
|
+
"爱尔兰综合": {"code": "ISEQ", "market": "100"},
|
173
|
+
"韩国KOSPI": {"code": "KS11", "market": "100"},
|
174
|
+
"深证成指": {"code": "399001", "market": "0"},
|
175
|
+
"韩国KOSPI200": {"code": "KOSPI200", "market": "100"},
|
176
|
+
"芬兰赫尔辛基": {"code": "HEX", "market": "100"},
|
177
|
+
"恒生指数": {"code": "HSI", "market": "100"},
|
178
|
+
"欧洲斯托克50": {"code": "SX5E", "market": "100"},
|
179
|
+
"美元指数": {"code": "UDI", "market": "100"},
|
180
|
+
"法国CAC40": {"code": "FCHI", "market": "100"},
|
181
|
+
"台湾加权": {"code": "TWII", "market": "100"},
|
182
|
+
"英国富时250": {"code": "MCX", "market": "100"},
|
183
|
+
"富时马来西亚KLCI": {"code": "KLSE", "market": "100"},
|
184
|
+
"OMX哥本哈根20": {"code": "OMXC20", "market": "100"},
|
185
|
+
"道琼斯": {"code": "DJIA", "market": "100"},
|
186
|
+
"奥地利ATX": {"code": "ATX", "market": "100"},
|
187
|
+
"加拿大S&P/TSX": {"code": "TSX", "market": "100"},
|
188
|
+
"德国DAX30": {"code": "GDAXI", "market": "100"},
|
189
|
+
"创业板指": {"code": "399006", "market": "0"},
|
190
|
+
"澳大利亚普通股": {"code": "AORD", "market": "100"},
|
191
|
+
"标普500": {"code": "SPX", "market": "100"},
|
192
|
+
"澳大利亚标普200": {"code": "AS51", "market": "100"},
|
193
|
+
"日经225": {"code": "N225", "market": "100"},
|
194
|
+
"纳斯达克": {"code": "NDX", "market": "100"},
|
91
195
|
}
|
@@ -0,0 +1,169 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# -*- coding:utf-8 -*-
|
3
|
+
"""
|
4
|
+
Date: 2025/3/7 17:00
|
5
|
+
Desc: 东方财富网-行情中心-全球指数
|
6
|
+
https://quote.eastmoney.com/center/gridlist.html#global_qtzs
|
7
|
+
"""
|
8
|
+
|
9
|
+
import pandas as pd
|
10
|
+
import requests
|
11
|
+
|
12
|
+
from akshare.index.cons import index_global_em_symbol_map
|
13
|
+
|
14
|
+
|
15
|
+
def index_global_spot_em() -> pd.DataFrame:
|
16
|
+
"""
|
17
|
+
东方财富网-行情中心-全球指数-实时行情数据
|
18
|
+
https://quote.eastmoney.com/center/gridlist.html#global_qtzs
|
19
|
+
:return: 实时行情数据
|
20
|
+
:rtype: pandas.DataFrame
|
21
|
+
"""
|
22
|
+
url = "https://push2.eastmoney.com/api/qt/clist/get"
|
23
|
+
params = {
|
24
|
+
"np": "2",
|
25
|
+
"fltt": "1",
|
26
|
+
"invt": "2",
|
27
|
+
"fs": "i:1.000001,i:0.399001,i:0.399005,i:0.399006,i:1.000300,i:100.HSI,i:100.HSCEI,i:124.HSCCI,"
|
28
|
+
"i:100.TWII,i:100.N225,i:100.KOSPI200,i:100.KS11,i:100.STI,i:100.SENSEX,i:100.KLSE,i:100.SET,"
|
29
|
+
"i:100.PSI,i:100.KSE100,i:100.VNINDEX,i:100.JKSE,i:100.CSEALL,i:100.SX5E,i:100.FTSE,i:100.MCX,"
|
30
|
+
"i:100.AXX,i:100.FCHI,i:100.GDAXI,i:100.RTS,i:100.IBEX,i:100.PSI20,i:100.OMXC20,i:100.BFX,"
|
31
|
+
"i:100.AEX,i:100.WIG,i:100.OMXSPI,i:100.SSMI,i:100.HEX,i:100.OSEBX,i:100.ATX,i:100.MIB,"
|
32
|
+
"i:100.ASE,i:100.ICEXI,i:100.PX,i:100.ISEQ,i:100.DJIA,i:100.SPX,i:100.NDX,i:100.TSX,"
|
33
|
+
"i:100.BVSP,i:100.MXX,i:100.AS51,i:100.AORD,i:100.NZ50,i:100.UDI,i:100.BDI,i:100.CRB",
|
34
|
+
"fields": "f12,f13,f14,f292,f1,f2,f4,f3,f152,f17,f18,f15,f16,f7,f124",
|
35
|
+
"fid": "f3",
|
36
|
+
"pn": "1",
|
37
|
+
"pz": "200",
|
38
|
+
"po": "1",
|
39
|
+
"dect": "1",
|
40
|
+
"ut": "fa5fd1943c7b386f172d6893dbfba10b",
|
41
|
+
"wbp2u": "|0|0|0|web",
|
42
|
+
"_": "1741340608118",
|
43
|
+
}
|
44
|
+
r = requests.get(url=url, params=params)
|
45
|
+
data_json = r.json()
|
46
|
+
temp_df = pd.DataFrame(data_json["data"]["diff"]).T
|
47
|
+
temp_df.reset_index(inplace=True)
|
48
|
+
temp_df["index"] = temp_df["index"].astype(int) + 1
|
49
|
+
temp_df.rename(
|
50
|
+
columns={
|
51
|
+
"index": "序号",
|
52
|
+
"f12": "代码",
|
53
|
+
"f14": "名称",
|
54
|
+
"f17": "最新价",
|
55
|
+
"f4": "涨跌额",
|
56
|
+
"f3": "涨跌幅",
|
57
|
+
"f2": "开盘价",
|
58
|
+
"f15": "最高价",
|
59
|
+
"f16": "最低价",
|
60
|
+
"f18": "昨收价",
|
61
|
+
"f7": "振幅",
|
62
|
+
"f124": "最新行情时间",
|
63
|
+
},
|
64
|
+
inplace=True,
|
65
|
+
)
|
66
|
+
temp_df = temp_df[
|
67
|
+
[
|
68
|
+
"序号",
|
69
|
+
"代码",
|
70
|
+
"名称",
|
71
|
+
"最新价",
|
72
|
+
"涨跌额",
|
73
|
+
"涨跌幅",
|
74
|
+
"开盘价",
|
75
|
+
"最高价",
|
76
|
+
"最低价",
|
77
|
+
"昨收价",
|
78
|
+
"振幅",
|
79
|
+
"最新行情时间",
|
80
|
+
]
|
81
|
+
]
|
82
|
+
temp_df["最新行情时间"] = pd.to_datetime(
|
83
|
+
temp_df["最新行情时间"], unit="s", utc=True, errors="coerce"
|
84
|
+
).dt.tz_convert("Asia/Shanghai")
|
85
|
+
temp_df["最新行情时间"] = temp_df["最新行情时间"].dt.strftime("%Y-%m-%d %H:%M:%S")
|
86
|
+
temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce") / 100
|
87
|
+
temp_df["涨跌额"] = pd.to_numeric(temp_df["涨跌额"], errors="coerce") / 100
|
88
|
+
temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce") / 100
|
89
|
+
temp_df["开盘价"] = pd.to_numeric(temp_df["开盘价"], errors="coerce") / 100
|
90
|
+
temp_df["最高价"] = pd.to_numeric(temp_df["最高价"], errors="coerce") / 100
|
91
|
+
temp_df["最低价"] = pd.to_numeric(temp_df["最低价"], errors="coerce") / 100
|
92
|
+
temp_df["昨收价"] = pd.to_numeric(temp_df["昨收价"], errors="coerce") / 100
|
93
|
+
temp_df["振幅"] = pd.to_numeric(temp_df["振幅"], errors="coerce") / 100
|
94
|
+
return temp_df
|
95
|
+
|
96
|
+
|
97
|
+
def index_global_hist_em(symbol: str = "美元指数") -> pd.DataFrame:
|
98
|
+
"""
|
99
|
+
东方财富网-行情中心-全球指数-历史行情数据
|
100
|
+
https://quote.eastmoney.com/gb/zsUDI.html
|
101
|
+
:param symbol: 指数名称;可以通过 ak.index_global_spot_em() 获取
|
102
|
+
:type symbol: str
|
103
|
+
:return: 历史行情数据
|
104
|
+
:rtype: pandas.DataFrame
|
105
|
+
"""
|
106
|
+
url = "https://push2his.eastmoney.com/api/qt/stock/kline/get"
|
107
|
+
params = {
|
108
|
+
"secid": f"{index_global_em_symbol_map[symbol]['market']}.{index_global_em_symbol_map[symbol]['code']}",
|
109
|
+
"klt": "101",
|
110
|
+
"fqt": "1",
|
111
|
+
"lmt": "50000",
|
112
|
+
"end": "20500000",
|
113
|
+
"iscca": "1",
|
114
|
+
"fields1": "f1,f2,f3,f4,f5,f6,f7,f8",
|
115
|
+
"fields2": "f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f62,f63,f64",
|
116
|
+
"ut": "f057cbcbce2a86e2866ab8877db1d059",
|
117
|
+
"forcect": "1",
|
118
|
+
}
|
119
|
+
r = requests.get(url=url, params=params)
|
120
|
+
data_json = r.json()
|
121
|
+
|
122
|
+
temp_df = pd.DataFrame([item.split(",") for item in data_json["data"]["klines"]])
|
123
|
+
temp_df["code"] = data_json["data"]["code"]
|
124
|
+
temp_df["name"] = data_json["data"]["name"]
|
125
|
+
temp_df.columns = [
|
126
|
+
"日期",
|
127
|
+
"今开",
|
128
|
+
"最新价",
|
129
|
+
"最高",
|
130
|
+
"最低",
|
131
|
+
"-",
|
132
|
+
"-",
|
133
|
+
"振幅",
|
134
|
+
"-",
|
135
|
+
"-",
|
136
|
+
"-",
|
137
|
+
"-",
|
138
|
+
"-",
|
139
|
+
"-",
|
140
|
+
"代码",
|
141
|
+
"名称",
|
142
|
+
]
|
143
|
+
temp_df = temp_df[
|
144
|
+
[
|
145
|
+
"日期",
|
146
|
+
"代码",
|
147
|
+
"名称",
|
148
|
+
"今开",
|
149
|
+
"最新价",
|
150
|
+
"最高",
|
151
|
+
"最低",
|
152
|
+
"振幅",
|
153
|
+
]
|
154
|
+
]
|
155
|
+
temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
|
156
|
+
temp_df["今开"] = pd.to_numeric(temp_df["今开"], errors="coerce")
|
157
|
+
temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
|
158
|
+
temp_df["最高"] = pd.to_numeric(temp_df["最高"], errors="coerce")
|
159
|
+
temp_df["最低"] = pd.to_numeric(temp_df["最低"], errors="coerce")
|
160
|
+
temp_df["振幅"] = pd.to_numeric(temp_df["振幅"], errors="coerce")
|
161
|
+
return temp_df
|
162
|
+
|
163
|
+
|
164
|
+
if __name__ == "__main__":
|
165
|
+
index_global_spot_em_df = index_global_spot_em()
|
166
|
+
print(index_global_spot_em_df)
|
167
|
+
|
168
|
+
index_global_hist_em_df = index_global_hist_em(symbol="美元指数")
|
169
|
+
print(index_global_hist_em_df)
|
@@ -0,0 +1,82 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# -*- coding:utf-8 -*-
|
3
|
+
"""
|
4
|
+
Date: 2025/3/7 17:00
|
5
|
+
Desc: 新浪财经-行情中心-环球市场
|
6
|
+
https://finance.sina.com.cn/stock/globalindex/quotes/UKX
|
7
|
+
"""
|
8
|
+
|
9
|
+
import pandas as pd
|
10
|
+
import requests
|
11
|
+
|
12
|
+
from akshare.index.cons import index_global_sina_symbol_map
|
13
|
+
|
14
|
+
|
15
|
+
def index_global_name_table() -> pd.DataFrame:
|
16
|
+
"""
|
17
|
+
新浪财经-行情中心-环球市场-名称代码映射表
|
18
|
+
https://finance.sina.com.cn/stock/globalindex/quotes/UKX
|
19
|
+
:return: 名称代码映射表
|
20
|
+
:rtype: pandas.DataFrame
|
21
|
+
"""
|
22
|
+
temp_df = pd.DataFrame.from_dict(
|
23
|
+
index_global_sina_symbol_map, orient="index", columns=["代码"]
|
24
|
+
)
|
25
|
+
temp_df.index.name = "指数名称"
|
26
|
+
temp_df.reset_index(inplace=True)
|
27
|
+
return temp_df
|
28
|
+
|
29
|
+
|
30
|
+
def index_global_hist_sina(symbol: str = "OMX") -> pd.DataFrame:
|
31
|
+
"""
|
32
|
+
新浪财经-行情中心-环球市场-历史行情
|
33
|
+
https://finance.sina.com.cn/stock/globalindex/quotes/UKX
|
34
|
+
:param symbol: 指数名称;可以通过 ak.index_global_name_table() 获取
|
35
|
+
:type symbol: str
|
36
|
+
:return: 环球市场历史行情
|
37
|
+
:rtype: pandas.DataFrame
|
38
|
+
"""
|
39
|
+
url = "https://gi.finance.sina.com.cn/hq/daily"
|
40
|
+
params = {
|
41
|
+
"symbol": index_global_sina_symbol_map[symbol],
|
42
|
+
"num": "10000",
|
43
|
+
}
|
44
|
+
r = requests.get(url=url, params=params)
|
45
|
+
data_json = r.json()
|
46
|
+
temp_df = pd.DataFrame(data_json["result"]["data"])
|
47
|
+
temp_df.rename(
|
48
|
+
columns={
|
49
|
+
"d": "date",
|
50
|
+
"o": "open",
|
51
|
+
"h": "high",
|
52
|
+
"l": "low",
|
53
|
+
"c": "close",
|
54
|
+
"v": "volume",
|
55
|
+
},
|
56
|
+
inplace=True,
|
57
|
+
)
|
58
|
+
temp_df = temp_df[
|
59
|
+
[
|
60
|
+
"date",
|
61
|
+
"open",
|
62
|
+
"high",
|
63
|
+
"low",
|
64
|
+
"close",
|
65
|
+
"volume",
|
66
|
+
]
|
67
|
+
]
|
68
|
+
temp_df["date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
|
69
|
+
temp_df["open"] = pd.to_numeric(temp_df["open"], errors="coerce")
|
70
|
+
temp_df["high"] = pd.to_numeric(temp_df["high"], errors="coerce")
|
71
|
+
temp_df["low"] = pd.to_numeric(temp_df["low"], errors="coerce")
|
72
|
+
temp_df["close"] = pd.to_numeric(temp_df["close"], errors="coerce")
|
73
|
+
temp_df["volume"] = pd.to_numeric(temp_df["volume"], errors="coerce")
|
74
|
+
return temp_df
|
75
|
+
|
76
|
+
|
77
|
+
if __name__ == "__main__":
|
78
|
+
index_global_name_table_df = index_global_name_table()
|
79
|
+
print(index_global_name_table_df)
|
80
|
+
|
81
|
+
index_global_hist_sina_df = index_global_hist_sina(symbol="瑞士股票指数")
|
82
|
+
print(index_global_hist_sina_df)
|
akshare/news/news_baidu.py
CHANGED
@@ -1,16 +1,13 @@
|
|
1
1
|
# -*- coding:utf-8 -*-
|
2
2
|
# !/usr/bin/env python
|
3
3
|
"""
|
4
|
-
Date:
|
4
|
+
Date: 2025/3/7 20:30
|
5
5
|
Desc: 百度股市通-经济数据
|
6
6
|
https://gushitong.baidu.com/calendar
|
7
7
|
"""
|
8
8
|
|
9
|
-
import http.client
|
10
|
-
import json
|
11
|
-
from urllib.parse import urlencode
|
12
|
-
|
13
9
|
import pandas as pd
|
10
|
+
import requests
|
14
11
|
|
15
12
|
|
16
13
|
def news_economic_baidu(date: str = "20241107") -> pd.DataFrame:
|
@@ -24,7 +21,7 @@ def news_economic_baidu(date: str = "20241107") -> pd.DataFrame:
|
|
24
21
|
"""
|
25
22
|
start_date = "-".join([date[:4], date[4:6], date[6:]])
|
26
23
|
end_date = "-".join([date[:4], date[4:6], date[6:]])
|
27
|
-
|
24
|
+
url = "https://finance.pae.baidu.com/api/financecalendar"
|
28
25
|
params = {
|
29
26
|
"start_date": start_date,
|
30
27
|
"end_date": end_date,
|
@@ -32,12 +29,8 @@ def news_economic_baidu(date: str = "20241107") -> pd.DataFrame:
|
|
32
29
|
"cate": "economic_data",
|
33
30
|
"finClientType": "pc",
|
34
31
|
}
|
35
|
-
|
36
|
-
|
37
|
-
conn.request(method="GET", url=url)
|
38
|
-
r = conn.getresponse()
|
39
|
-
data = r.read()
|
40
|
-
data_json = json.loads(data)
|
32
|
+
r = requests.get(url=url, params=params)
|
33
|
+
data_json = r.json()
|
41
34
|
big_df = pd.DataFrame()
|
42
35
|
for item in data_json["Result"]:
|
43
36
|
if not item["list"] == []:
|
@@ -90,7 +83,7 @@ def news_trade_notify_suspend_baidu(date: str = "20241107") -> pd.DataFrame:
|
|
90
83
|
"""
|
91
84
|
start_date = "-".join([date[:4], date[4:6], date[6:]])
|
92
85
|
end_date = "-".join([date[:4], date[4:6], date[6:]])
|
93
|
-
|
86
|
+
url = "https://finance.pae.baidu.com/api/financecalendar"
|
94
87
|
params = {
|
95
88
|
"start_date": start_date,
|
96
89
|
"end_date": end_date,
|
@@ -98,12 +91,8 @@ def news_trade_notify_suspend_baidu(date: str = "20241107") -> pd.DataFrame:
|
|
98
91
|
"cate": "notify_suspend",
|
99
92
|
"finClientType": "pc",
|
100
93
|
}
|
101
|
-
|
102
|
-
|
103
|
-
conn.request(method="GET", url=url)
|
104
|
-
r = conn.getresponse()
|
105
|
-
data = r.read()
|
106
|
-
data_json = json.loads(data)
|
94
|
+
r = requests.get(url=url, params=params)
|
95
|
+
data_json = r.json()
|
107
96
|
big_df = pd.DataFrame()
|
108
97
|
for item in data_json["Result"]:
|
109
98
|
if not item["list"] == []:
|
@@ -151,7 +140,7 @@ def news_trade_notify_dividend_baidu(date: str = "20241107") -> pd.DataFrame:
|
|
151
140
|
"""
|
152
141
|
start_date = "-".join([date[:4], date[4:6], date[6:]])
|
153
142
|
end_date = "-".join([date[:4], date[4:6], date[6:]])
|
154
|
-
|
143
|
+
url = "https://finance.pae.baidu.com/api/financecalendar"
|
155
144
|
params = {
|
156
145
|
"start_date": start_date,
|
157
146
|
"end_date": end_date,
|
@@ -160,12 +149,8 @@ def news_trade_notify_dividend_baidu(date: str = "20241107") -> pd.DataFrame:
|
|
160
149
|
"rn": 500,
|
161
150
|
"pn": 0,
|
162
151
|
}
|
163
|
-
|
164
|
-
|
165
|
-
conn.request(method="GET", url=url)
|
166
|
-
r = conn.getresponse()
|
167
|
-
data = r.read()
|
168
|
-
data_json = json.loads(data)
|
152
|
+
r = requests.get(url=url, params=params)
|
153
|
+
data_json = r.json()
|
169
154
|
big_df = pd.DataFrame()
|
170
155
|
for item in data_json["Result"]:
|
171
156
|
if not item["list"] == []:
|
@@ -223,7 +208,7 @@ def news_report_time_baidu(date: str = "20241107") -> pd.DataFrame:
|
|
223
208
|
"""
|
224
209
|
start_date = "-".join([date[:4], date[4:6], date[6:]])
|
225
210
|
end_date = "-".join([date[:4], date[4:6], date[6:]])
|
226
|
-
|
211
|
+
url = "https://finance.pae.baidu.com/api/financecalendar"
|
227
212
|
params = {
|
228
213
|
"start_date": start_date,
|
229
214
|
"end_date": end_date,
|
@@ -231,12 +216,8 @@ def news_report_time_baidu(date: str = "20241107") -> pd.DataFrame:
|
|
231
216
|
"cate": "report_time",
|
232
217
|
"finClientType": "pc",
|
233
218
|
}
|
234
|
-
|
235
|
-
|
236
|
-
conn.request(method="GET", url=url)
|
237
|
-
r = conn.getresponse()
|
238
|
-
data = r.read()
|
239
|
-
data_json = json.loads(data)
|
219
|
+
r = requests.get(url=url, params=params)
|
220
|
+
data_json = r.json()
|
240
221
|
big_df = pd.DataFrame()
|
241
222
|
for item in data_json["Result"]:
|
242
223
|
if not item["list"] == []:
|
@@ -265,7 +246,7 @@ def news_report_time_baidu(date: str = "20241107") -> pd.DataFrame:
|
|
265
246
|
|
266
247
|
|
267
248
|
if __name__ == "__main__":
|
268
|
-
news_economic_baidu_df = news_economic_baidu(date="
|
249
|
+
news_economic_baidu_df = news_economic_baidu(date="20250307")
|
269
250
|
print(news_economic_baidu_df)
|
270
251
|
|
271
252
|
news_trade_notify_suspend_baidu_df = news_trade_notify_suspend_baidu(
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: akshare
|
3
|
-
Version: 1.16.
|
3
|
+
Version: 1.16.32
|
4
4
|
Summary: AKShare is an elegant and simple financial data interface library for Python, built for human beings!
|
5
5
|
Home-page: https://github.com/akfamily/akshare
|
6
6
|
Author: AKFamily
|
@@ -59,7 +59,7 @@ Dynamic: summary
|
|
59
59
|
详情请关注【数据科学实战】公众号,查看更多课程信息!
|
60
60
|
|
61
61
|
**广告推广**:期魔方是一款非常专业本地化期货量化终端,无需部署或搭建环境,可直接调用及时和历史数据做回测实盘,
|
62
|
-
支持开箱即用的机器学习训练,策略投研、回测均免费,详情请[访问期魔方官网](https://qmfquant.com)
|
62
|
+
支持开箱即用的机器学习训练,策略投研、回测均免费,详情请[访问期魔方官网](https://qmfquant.com)。
|
63
63
|
|
64
64
|

|
65
65
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
akshare/__init__.py,sha256=
|
1
|
+
akshare/__init__.py,sha256=dcNGHEfoPmloF34FYwbkqeaWyqPMW0Ak39QTrXr11xw,190182
|
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
|
@@ -154,13 +154,15 @@ akshare/fx/fx_quote_baidu.py,sha256=wEffLm-b5QiFsuE9KAsNPUsqDZ-JMQmfwOO9wOlex8E,
|
|
154
154
|
akshare/hf/__init__.py,sha256=UefLnc-fLMPvh05YWo43n3058k7txmCEafhuz3hpsjg,82
|
155
155
|
akshare/hf/hf_sp500.py,sha256=Ak8y_14CQtjeMCsuIP5JV4Od_RSAGEGriSg0PbcBmKQ,1206
|
156
156
|
akshare/index/__init__.py,sha256=RMTf1bT5EOE3ttWpn3hGu1LtUmsVxDoa0W7W0gXHOy8,81
|
157
|
-
akshare/index/cons.py,sha256=
|
157
|
+
akshare/index/cons.py,sha256=sstxvhtdG3m2inIhE2geZZnHqNLXrK6GuhcqfI_zE6Q,7789
|
158
158
|
akshare/index/index_cflp.py,sha256=iPn_0kePK74eScwC7rj0IhC-3w-kGQWtWlwsW-J0nbs,4422
|
159
159
|
akshare/index/index_cni.py,sha256=qravLXiETWlegIMV_EIUTDbGQfdC2zsj4LykWzC8Lko,8563
|
160
160
|
akshare/index/index_cons.py,sha256=exCYkXauu3u_liWS5Y0W89F19eSwt6gJmlBciM86txQ,7616
|
161
161
|
akshare/index/index_cx.py,sha256=aAmsIKkswKFNOhAsW0QOhp-q6q1aFOSBtqcDaZhIh6A,16775
|
162
162
|
akshare/index/index_drewry.py,sha256=BM7V6P8K4QUFQArsdaWRu5qJUZaCoyNz97_b8dmLeCw,2937
|
163
163
|
akshare/index/index_eri.py,sha256=7X0KNDBntEkE_qSb2jb6IBv-S8PsevLFdxGT8nKT3W0,2111
|
164
|
+
akshare/index/index_global_em.py,sha256=bNSwv_zYyXn3eRQ4BU7IKXu7ENhSszH3RBv2F8yYePs,5992
|
165
|
+
akshare/index/index_global_sina.py,sha256=fFJeW-u6Jo1iiuRMVaGJaUZBUA6wUT0L0u6KT3vkJ4I,2494
|
164
166
|
akshare/index/index_hog.py,sha256=kb867BVagt70_ycZMn22ks5Z9jlVbMiuTsvq5ygjeig,1657
|
165
167
|
akshare/index/index_kq_fz.py,sha256=Y-cbxWLpRyGcFcMSDxZZQXdAuD85IuQH5xC2rhtGbRc,3395
|
166
168
|
akshare/index/index_kq_ss.py,sha256=m4hAMNnzHk8JNAnKjkYYVeyG4zUC5zR5i0-u-OxmaGU,3333
|
@@ -185,7 +187,7 @@ akshare/movie/jm.js,sha256=od-zfkhbVDzBOXP0kMR53gVsnXMxI4INZrGRsEiBSUk,117172
|
|
185
187
|
akshare/movie/movie_yien.py,sha256=BP3eGmGeTJerlIIF-sOq-TsssZiKM-DiX3vwV3dwi8o,13574
|
186
188
|
akshare/movie/video_yien.py,sha256=2JsyKTwiP4RTuDNzQR6d9V9fzMnByH2ATJFzdtPyXSQ,3524
|
187
189
|
akshare/news/__init__.py,sha256=wMQSX_sI4rN8LxN8pTxQ2m7AJDkrYykmNFKSponTt0I,83
|
188
|
-
akshare/news/news_baidu.py,sha256=
|
190
|
+
akshare/news/news_baidu.py,sha256=WjrRWkPZRdJ00o4w3M_rB8s2Yxd2OWdDRCJm8QCIOeU,8276
|
189
191
|
akshare/news/news_cctv.py,sha256=MRODE1qilypQijyCZedgC1Ctju_3ySdJlhT2nuJcuwc,7389
|
190
192
|
akshare/news/news_stock.py,sha256=m70qTKYl1gwbXZe6rCETituyOBlmjzUa8h8TaN_OBls,2896
|
191
193
|
akshare/nlp/__init__.py,sha256=F-1D7ifZQ4RiE2zsQuPc4Aj_C7RhqxGPvObcRNcLPGs,79
|
@@ -386,8 +388,8 @@ akshare/utils/token_process.py,sha256=K4rGXjh_tgugbRcyOK2h2x0jP3PT65IIK7nxhUKhOe
|
|
386
388
|
akshare/utils/tqdm.py,sha256=MuPNwcswkOGjwWQOMWXi9ZvQ_RmW4obCWRj2i7HM7FE,847
|
387
389
|
tests/__init__.py,sha256=gNzhlO0UPjFq6Ieb38kaVIODXv4cTDByrdohAZnDYt4,82
|
388
390
|
tests/test_func.py,sha256=j1MGYbZI2if2j_LY1S4FLsf4qfq4NwVqD5wmRlv5Log,832
|
389
|
-
akshare-1.16.
|
390
|
-
akshare-1.16.
|
391
|
-
akshare-1.16.
|
392
|
-
akshare-1.16.
|
393
|
-
akshare-1.16.
|
391
|
+
akshare-1.16.32.dist-info/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
|
392
|
+
akshare-1.16.32.dist-info/METADATA,sha256=BZYfY19c10fPWzEIbBcAFMchnzrimBdfKNW65XDE8cs,13653
|
393
|
+
akshare-1.16.32.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
394
|
+
akshare-1.16.32.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
|
395
|
+
akshare-1.16.32.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|