akshare 1.16.64__py3-none-any.whl → 1.16.65__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 +2 -1
- akshare/air/cons.py +1 -0
- akshare/air/crypto.js +1 -1
- akshare/air/outcrypto.js +1 -1
- akshare/article/cons.py +1 -0
- akshare/article/epu_index.py +4 -3
- akshare/article/ff_factor.py +19 -8
- akshare/article/fred_md.py +4 -1
- akshare/article/risk_rv.py +3 -8
- akshare/bond/bond_cb_sina.py +1 -0
- akshare/bond/bond_cbond.py +19 -14
- akshare/bond/bond_em.py +34 -15
- akshare/bond/bond_summary.py +38 -37
- akshare/bond/bond_zh_cov.py +0 -6
- akshare/bond/cons.py +14 -11
- akshare/crypto/__init__.py +1 -1
- akshare/crypto/crypto_bitcoin_cme.py +7 -7
- akshare/crypto/crypto_hold.py +4 -1
- akshare/currency/currency.py +1 -0
- akshare/currency/currency_china_bank_sina.py +6 -3
- akshare/data/__init__.py +1 -1
- akshare/data/cninfo.js +1 -1
- akshare/economic/cons.py +10 -3
- akshare/economic/macro_australia.py +0 -7
- akshare/economic/macro_canada.py +92 -81
- akshare/economic/macro_china.py +0 -34
- akshare/economic/macro_china_hk.py +0 -1
- akshare/economic/macro_euro.py +103 -56
- akshare/economic/macro_germany.py +1 -1
- akshare/economic/macro_japan.py +0 -1
- akshare/economic/macro_other.py +1 -6
- akshare/economic/macro_swiss.py +2 -3
- akshare/economic/macro_uk.py +1 -1
- akshare/economic/macro_usa.py +0 -2
- akshare/energy/energy_carbon.py +0 -1
- akshare/energy/energy_oil_em.py +1 -2
- akshare/event/cons.py +1 -0
- akshare/forex/forex_em.py +0 -1
- akshare/fortune/fortune_bloomberg.py +6 -3
- akshare/fortune/fortune_forbes_500.py +3 -6
- akshare/fortune/fortune_hurun.py +2 -1
- akshare/fortune/fortune_xincaifu_500.py +17 -14
- akshare/fund/fund_announcement.py +1 -0
- akshare/fund/fund_aum_em.py +47 -35
- akshare/fund/fund_em.py +0 -7
- akshare/fund/fund_etf_em.py +0 -5
- akshare/fund/fund_fhsp_em.py +27 -20
- akshare/fund/fund_init_em.py +8 -5
- akshare/fund/fund_lof_em.py +0 -5
- akshare/fund/fund_manager.py +18 -7
- akshare/fund/fund_portfolio_em.py +0 -1
- akshare/fund/fund_position_lg.py +19 -8
- akshare/fund/fund_rank_em.py +0 -3
- akshare/fund/fund_rating.py +28 -9
- akshare/fund/fund_scale_em.py +24 -13
- akshare/futures/futures_comex_em.py +1 -0
- akshare/futures/futures_contract_detail.py +11 -8
- akshare/futures/futures_inventory_em.py +0 -2
- akshare/futures/futures_rule.py +5 -1
- akshare/futures/futures_settlement_price_sgx.py +21 -6
- akshare/futures/futures_stock_js.py +0 -1
- akshare/futures/receipt.py +279 -153
- akshare/futures/requests_fun.py +16 -3
- akshare/futures_derivative/cons.py +100 -103
- akshare/futures_derivative/futures_contract_info_cffex.py +53 -39
- akshare/futures_derivative/futures_contract_info_dce.py +16 -9
- akshare/futures_derivative/futures_contract_info_gfex.py +43 -31
- akshare/futures_derivative/futures_index_sina.py +25 -13
- akshare/fx/cons.py +12 -7
- akshare/fx/fx_quote.py +1 -0
- akshare/fx/fx_quote_baidu.py +2 -1
- akshare/hf/__init__.py +1 -1
- akshare/hf/hf_sp500.py +8 -7
- akshare/index/index_eri.py +1 -0
- akshare/index/index_global_em.py +0 -1
- akshare/index/index_kq_fz.py +17 -14
- akshare/index/index_kq_ss.py +1 -0
- akshare/index/index_stock_hk.py +0 -1
- akshare/index/index_stock_zh.py +0 -3
- akshare/index/index_sugar.py +18 -4
- akshare/index/index_zh_em.py +0 -15
- akshare/interest_rate/interbank_rate_em.py +0 -1
- akshare/movie/jm.js +0 -1
- akshare/news/__init__.py +1 -1
- akshare/news/news_stock.py +0 -1
- akshare/option/option_commodity_sina.py +22 -26
- akshare/option/option_daily_stats_sse_szse.py +0 -1
- akshare/option/option_em.py +0 -1
- akshare/option/option_lhb_em.py +0 -1
- akshare/option/option_risk_indicator_sse.py +0 -1
- akshare/other/__init__.py +1 -1
- akshare/pro/__init__.py +0 -1
- akshare/pro/client.py +6 -4
- akshare/pro/cons.py +3 -2
- akshare/pro/data_pro.py +6 -5
- akshare/qhkc/qhkc_api.py +63 -21
- akshare/qhkc_web/qhkc_fund.py +1 -0
- akshare/qhkc_web/qhkc_index.py +1 -0
- akshare/qhkc_web/qhkc_tool.py +55 -54
- akshare/rate/__init__.py +1 -1
- akshare/rate/repo_rate.py +36 -32
- akshare/reits/__init__.py +1 -1
- akshare/reits/reits_basic.py +44 -2
- akshare/sport/__init__.py +1 -1
- akshare/sport/sport_olympic.py +1 -0
- akshare/spot/__init__.py +1 -1
- akshare/stock/cons.py +19 -12
- akshare/stock/stock_board_concept_em.py +0 -6
- akshare/stock/stock_board_industry_em.py +0 -6
- akshare/stock/stock_dzjy_em.py +1 -1
- akshare/stock/stock_fund_em.py +0 -2
- akshare/stock/stock_fund_hold.py +1 -2
- akshare/stock/stock_gsrl_em.py +1 -0
- akshare/stock/stock_hk_famous.py +0 -1
- akshare/stock/stock_hk_fhpx_ths.py +2 -1
- akshare/stock/stock_hk_hot_rank_em.py +1 -0
- akshare/stock/stock_hold_control_em.py +0 -2
- akshare/stock/stock_hot_up_em.py +4 -1
- akshare/stock/stock_hsgt_em.py +0 -2
- akshare/stock/stock_industry.py +1 -0
- akshare/stock/stock_info.py +0 -2
- akshare/stock/stock_info_em.py +0 -1
- akshare/stock/stock_repurchase_em.py +7 -2
- akshare/stock/stock_share_hold.py +0 -1
- akshare/stock/stock_stop.py +0 -1
- akshare/stock/stock_summary.py +0 -2
- akshare/stock/stock_us_famous.py +0 -1
- akshare/stock/stock_us_js.py +3 -2
- akshare/stock/stock_us_pink.py +0 -1
- akshare/stock/stock_weibo_nlp.py +18 -20
- akshare/stock/stock_zh_a_special.py +0 -3
- akshare/stock/stock_zh_a_tick_tx.py +11 -3
- akshare/stock_a/stock_board_concept_name_em.py +0 -1
- akshare/stock_a/stock_zh_a_spot.py +0 -1
- akshare/stock_feature/cons.py +1 -0
- akshare/stock_feature/stock_account_em.py +0 -1
- akshare/stock_feature/stock_all_pb.py +2 -1
- akshare/stock_feature/stock_analyst_em.py +0 -3
- akshare/stock_feature/stock_buffett_index_lg.py +7 -6
- akshare/stock_feature/stock_classify_sina.py +3 -6
- akshare/stock_feature/stock_comment_em.py +0 -2
- akshare/stock_feature/stock_congestion_lg.py +2 -1
- akshare/stock_feature/stock_dxsyl_em.py +116 -71
- akshare/stock_feature/stock_gdzjc_em.py +16 -5
- akshare/stock_feature/stock_gxl_lg.py +3 -2
- akshare/stock_feature/stock_hist_em.py +0 -20
- akshare/stock_feature/stock_hist_tx.py +10 -8
- akshare/stock_feature/stock_hot_xq.py +4 -6
- akshare/stock_feature/stock_hsgt_em.py +0 -2
- akshare/stock_feature/stock_hsgt_exchange_rate.py +0 -2
- akshare/stock_feature/stock_hsgt_min_em.py +13 -16
- akshare/stock_feature/stock_inner_trade_xq.py +0 -1
- akshare/stock_feature/stock_lhb_em.py +0 -1
- akshare/stock_feature/stock_margin_em.py +0 -1
- akshare/stock_feature/stock_margin_sse.py +0 -2
- akshare/stock_feature/stock_pankou_em.py +0 -2
- akshare/stock_feature/stock_qsjy_em.py +13 -4
- akshare/stock_feature/stock_research_report_em.py +0 -1
- akshare/stock_feature/stock_yjyg_cninfo.py +4 -1
- akshare/stock_feature/stock_zh_vote_baidu.py +4 -1
- akshare/stock_feature/stock_ztb_em.py +0 -6
- akshare/stock_fundamental/__init__.py +1 -1
- akshare/stock_fundamental/stock_hold.py +26 -17
- akshare/stock_fundamental/stock_ipo_declare.py +1 -0
- akshare/stock_fundamental/stock_kcb_detail_sse.py +10 -10
- akshare/stock_fundamental/stock_kcb_sse.py +26 -25
- akshare/stock_fundamental/stock_profit_forecast_hk_etnet.py +64 -41
- akshare/stock_fundamental/stock_recommend.py +20 -4
- akshare/utils/demjson.py +2005 -1334
- akshare/utils/token_process.py +6 -5
- {akshare-1.16.64.dist-info → akshare-1.16.65.dist-info}/METADATA +3 -8
- {akshare-1.16.64.dist-info → akshare-1.16.65.dist-info}/RECORD +175 -175
- {akshare-1.16.64.dist-info → akshare-1.16.65.dist-info}/WHEEL +0 -0
- {akshare-1.16.64.dist-info → akshare-1.16.65.dist-info}/licenses/LICENSE +0 -0
- {akshare-1.16.64.dist-info → akshare-1.16.65.dist-info}/top_level.txt +0 -0
@@ -4,6 +4,7 @@
|
|
4
4
|
Date: 2022/11/5 17:08
|
5
5
|
Desc: 东方财富-德国-经济数据
|
6
6
|
"""
|
7
|
+
|
7
8
|
import pandas as pd
|
8
9
|
import requests
|
9
10
|
|
@@ -31,7 +32,6 @@ def macro_germany_core(symbol: str = "EMG00179154") -> pd.DataFrame:
|
|
31
32
|
"p": "1",
|
32
33
|
"pageNo": "1",
|
33
34
|
"pageNum": "1",
|
34
|
-
"_": "1667639896816",
|
35
35
|
}
|
36
36
|
r = requests.get(url, params=params)
|
37
37
|
data_json = r.json()
|
akshare/economic/macro_japan.py
CHANGED
akshare/economic/macro_other.py
CHANGED
@@ -5,7 +5,6 @@ Date: 2024/4/3 16:36
|
|
5
5
|
Desc: 金十数据-其他-加密货币实时行情
|
6
6
|
"""
|
7
7
|
|
8
|
-
import time
|
9
8
|
from datetime import datetime
|
10
9
|
|
11
10
|
import pandas as pd
|
@@ -19,9 +18,6 @@ def crypto_js_spot() -> pd.DataFrame:
|
|
19
18
|
:return: pandas.DataFrame
|
20
19
|
"""
|
21
20
|
url = "https://datacenter-api.jin10.com/crypto_currency/list"
|
22
|
-
params = {
|
23
|
-
"_": "1672141224307",
|
24
|
-
}
|
25
21
|
headers = {
|
26
22
|
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
27
23
|
"Chrome/107.0.0.0 Safari/537.36",
|
@@ -29,7 +25,7 @@ def crypto_js_spot() -> pd.DataFrame:
|
|
29
25
|
"x-csrf-token": "x-csrf-token",
|
30
26
|
"x-version": "1.0.0",
|
31
27
|
}
|
32
|
-
r = requests.get(url,
|
28
|
+
r = requests.get(url, headers=headers)
|
33
29
|
data_json = r.json()
|
34
30
|
data_df = pd.DataFrame(data_json["data"])
|
35
31
|
data_df["reported_at"] = pd.to_datetime(data_df["reported_at"])
|
@@ -79,7 +75,6 @@ def macro_fx_sentiment(
|
|
79
75
|
"start_date": start_date,
|
80
76
|
"end_date": end_date,
|
81
77
|
"currency_pair": "",
|
82
|
-
"_": int(time.time() * 1000),
|
83
78
|
}
|
84
79
|
headers = {
|
85
80
|
"accept": "*/*",
|
akshare/economic/macro_swiss.py
CHANGED
@@ -5,9 +5,9 @@ Date: 2022/11/8 10:00
|
|
5
5
|
Desc: 东方财富-经济数据-瑞士
|
6
6
|
http://data.eastmoney.com/cjsj/foreign_2_0.html
|
7
7
|
"""
|
8
|
+
|
8
9
|
import pandas as pd
|
9
10
|
import requests
|
10
|
-
from akshare.utils import demjson
|
11
11
|
|
12
12
|
|
13
13
|
def macro_swiss_core(symbol: str = "EMG00341602") -> pd.DataFrame:
|
@@ -33,7 +33,6 @@ def macro_swiss_core(symbol: str = "EMG00341602") -> pd.DataFrame:
|
|
33
33
|
"p": "1",
|
34
34
|
"pageNo": "1",
|
35
35
|
"pageNum": "1",
|
36
|
-
"_": "1667639896816",
|
37
36
|
}
|
38
37
|
r = requests.get(url, params=params)
|
39
38
|
data_json = r.json()
|
@@ -139,7 +138,7 @@ def macro_swiss_gbd_bank_rate():
|
|
139
138
|
return temp_df
|
140
139
|
|
141
140
|
|
142
|
-
if __name__ ==
|
141
|
+
if __name__ == "__main__":
|
143
142
|
macro_swiss_svme_df = macro_swiss_svme()
|
144
143
|
print(macro_swiss_svme_df)
|
145
144
|
|
akshare/economic/macro_uk.py
CHANGED
@@ -5,6 +5,7 @@ Date: 2022/11/12 17:14
|
|
5
5
|
Desc: 东方财富-经济数据-英国
|
6
6
|
https://data.eastmoney.com/cjsj/foreign_4_0.html
|
7
7
|
"""
|
8
|
+
|
8
9
|
import pandas as pd
|
9
10
|
import requests
|
10
11
|
|
@@ -32,7 +33,6 @@ def macro_uk_core(symbol: str = "EMG00010348") -> pd.DataFrame:
|
|
32
33
|
"p": "1",
|
33
34
|
"pageNo": "1",
|
34
35
|
"pageNum": "1",
|
35
|
-
"_": "1667639896816",
|
36
36
|
}
|
37
37
|
r = requests.get(url, params=params)
|
38
38
|
data_json = r.json()
|
akshare/economic/macro_usa.py
CHANGED
@@ -97,7 +97,6 @@ def macro_usa_phs() -> pd.DataFrame:
|
|
97
97
|
"p": "1",
|
98
98
|
"pageNo": "1",
|
99
99
|
"pageNum": "1",
|
100
|
-
"_": "1669047266881",
|
101
100
|
}
|
102
101
|
r = requests.get(url, params=params)
|
103
102
|
data_json = r.json()
|
@@ -143,7 +142,6 @@ def macro_usa_cpi_yoy() -> pd.DataFrame:
|
|
143
142
|
"sortTypes": "-1",
|
144
143
|
"source": "WEB",
|
145
144
|
"client": "WEB",
|
146
|
-
"_": "1689320600161",
|
147
145
|
}
|
148
146
|
r = requests.get(url, params=params)
|
149
147
|
data_json = r.json()
|
akshare/energy/energy_carbon.py
CHANGED
akshare/energy/energy_oil_em.py
CHANGED
@@ -5,6 +5,7 @@ Date: 2024/1/20 23:00
|
|
5
5
|
Desc: 东方财富-数据中心-中国油价
|
6
6
|
https://data.eastmoney.com/cjsj/oil_default.html
|
7
7
|
"""
|
8
|
+
|
8
9
|
import pandas as pd
|
9
10
|
import requests
|
10
11
|
|
@@ -29,7 +30,6 @@ def energy_oil_hist() -> pd.DataFrame:
|
|
29
30
|
"p": "1",
|
30
31
|
"pageNo": "1",
|
31
32
|
"pageNum": "1",
|
32
|
-
"_": "1652959763351",
|
33
33
|
}
|
34
34
|
r = requests.get(url, params=params)
|
35
35
|
data_json = r.json()
|
@@ -66,7 +66,6 @@ def energy_oil_detail(date: str = "20220517") -> pd.DataFrame:
|
|
66
66
|
"pageNumber": "1",
|
67
67
|
"pageSize": "1000",
|
68
68
|
"source": "WEB",
|
69
|
-
"_": "1652959763351",
|
70
69
|
}
|
71
70
|
r = requests.get(url, params=params)
|
72
71
|
data_json = r.json()
|
akshare/event/cons.py
CHANGED
akshare/forex/forex_em.py
CHANGED
@@ -5,6 +5,7 @@ Date: 2022/4/10 18:24
|
|
5
5
|
Desc: 彭博亿万富豪指数
|
6
6
|
https://www.bloomberg.com/billionaires/
|
7
7
|
"""
|
8
|
+
|
8
9
|
import pandas as pd
|
9
10
|
import requests
|
10
11
|
from bs4 import BeautifulSoup
|
@@ -34,8 +35,8 @@ def index_bloomberg_billionaires_hist(year: str = "2021") -> pd.DataFrame:
|
|
34
35
|
for dic_key in dic_keys:
|
35
36
|
dic[dic_key] = []
|
36
37
|
|
37
|
-
for
|
38
|
-
item =
|
38
|
+
for ll in trs:
|
39
|
+
item = ll.findAll("td")
|
39
40
|
for i in range(len(item)):
|
40
41
|
v = item[i].text
|
41
42
|
if i == 0 and not v.isdigit():
|
@@ -110,5 +111,7 @@ if __name__ == "__main__":
|
|
110
111
|
index_bloomberg_billionaires_df = index_bloomberg_billionaires()
|
111
112
|
print(index_bloomberg_billionaires_df)
|
112
113
|
|
113
|
-
index_bloomberg_billionaires_hist_df = index_bloomberg_billionaires_hist(
|
114
|
+
index_bloomberg_billionaires_hist_df = index_bloomberg_billionaires_hist(
|
115
|
+
year="2021"
|
116
|
+
)
|
114
117
|
print(index_bloomberg_billionaires_hist_df)
|
@@ -5,6 +5,7 @@ Date: 2022/1/26 15:10
|
|
5
5
|
Desc: 福布斯中国-榜单
|
6
6
|
https://www.forbeschina.com/lists
|
7
7
|
"""
|
8
|
+
|
8
9
|
import pandas as pd
|
9
10
|
import requests
|
10
11
|
from bs4 import BeautifulSoup
|
@@ -24,8 +25,7 @@ def forbes_rank(symbol: str = "2021福布斯中国创投人100") -> pd.DataFrame
|
|
24
25
|
r = requests.get(url, verify=False)
|
25
26
|
soup = BeautifulSoup(r.text, "lxml")
|
26
27
|
need_list = [
|
27
|
-
item.find_all("a")
|
28
|
-
for item in soup.find_all("div", attrs={"class": "col-sm-4"})
|
28
|
+
item.find_all("a") for item in soup.find_all("div", attrs={"class": "col-sm-4"})
|
29
29
|
]
|
30
30
|
all_list = []
|
31
31
|
for item in need_list:
|
@@ -33,10 +33,7 @@ def forbes_rank(symbol: str = "2021福布斯中国创投人100") -> pd.DataFrame
|
|
33
33
|
name_url_dict = dict(
|
34
34
|
zip(
|
35
35
|
[item.text.strip() for item in all_list],
|
36
|
-
[
|
37
|
-
"https://www.forbeschina.com" + item["href"]
|
38
|
-
for item in all_list
|
39
|
-
],
|
36
|
+
["https://www.forbeschina.com" + item["href"] for item in all_list],
|
40
37
|
)
|
41
38
|
)
|
42
39
|
r = requests.get(name_url_dict[symbol], verify=False)
|
akshare/fortune/fortune_hurun.py
CHANGED
@@ -5,6 +5,7 @@ Date: 2023/12/22 20:00
|
|
5
5
|
Desc: 胡润排行榜
|
6
6
|
https://www.hurun.net/
|
7
7
|
"""
|
8
|
+
|
8
9
|
import warnings
|
9
10
|
|
10
11
|
import pandas as pd
|
@@ -76,7 +77,7 @@ def hurun_rank(indicator: str = "胡润百富榜", year: str = "2023") -> pd.Dat
|
|
76
77
|
temp_df = pd.DataFrame(data_json["rows"])
|
77
78
|
offset = offset + 20
|
78
79
|
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
79
|
-
except requests.exceptions.JSONDecodeError
|
80
|
+
except requests.exceptions.JSONDecodeError:
|
80
81
|
offset = offset + 40
|
81
82
|
continue
|
82
83
|
big_df.rename(
|
@@ -5,6 +5,7 @@ Date: 2022/10/30 21:12
|
|
5
5
|
Desc: 新财富 500 人富豪榜
|
6
6
|
http://www.xcf.cn/zhuanti/ztzz/hdzt1/500frb/index.html
|
7
7
|
"""
|
8
|
+
|
8
9
|
import json
|
9
10
|
|
10
11
|
import pandas as pd
|
@@ -32,26 +33,28 @@ def xincaifu_rank(year: str = "2022") -> pd.DataFrame:
|
|
32
33
|
"year": year,
|
33
34
|
"pageNo": "1",
|
34
35
|
"from": "jsonp",
|
35
|
-
"_": "1604722171732",
|
36
36
|
}
|
37
37
|
r = requests.get(url, params=params)
|
38
38
|
data_text = r.text
|
39
39
|
data_json = json.loads(data_text[data_text.find("{") : -1])
|
40
40
|
temp_df = pd.DataFrame(data_json["data"]["rows"])
|
41
41
|
temp_df.columns
|
42
|
-
temp_df.rename(
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
42
|
+
temp_df.rename(
|
43
|
+
columns={
|
44
|
+
"assets": "财富",
|
45
|
+
"year": "年份",
|
46
|
+
"sex": "性别",
|
47
|
+
"name": "姓名",
|
48
|
+
"rank": "排名",
|
49
|
+
"company": "主要公司",
|
50
|
+
"industry": "相关行业",
|
51
|
+
"id": "-",
|
52
|
+
"addr": "公司总部",
|
53
|
+
"rankLst": "-",
|
54
|
+
"age": "年龄",
|
55
|
+
},
|
56
|
+
inplace=True,
|
57
|
+
)
|
55
58
|
temp_df = temp_df[
|
56
59
|
[
|
57
60
|
"排名",
|
akshare/fund/fund_aum_em.py
CHANGED
@@ -4,6 +4,7 @@
|
|
4
4
|
Date: 2023/11/11 16:30
|
5
5
|
Desc: 东方财富-基金
|
6
6
|
"""
|
7
|
+
|
7
8
|
from io import StringIO
|
8
9
|
|
9
10
|
import pandas as pd
|
@@ -17,22 +18,27 @@ def fund_aum_em() -> pd.DataFrame:
|
|
17
18
|
:return: 基金公司排名列表
|
18
19
|
:rtype: pandas.DataFrame
|
19
20
|
"""
|
20
|
-
url =
|
21
|
-
params = {
|
22
|
-
'fundType': '0'
|
23
|
-
}
|
21
|
+
url = "https://fund.eastmoney.com/Company/home/gspmlist"
|
22
|
+
params = {"fundType": "0"}
|
24
23
|
r = requests.get(url, params=params)
|
25
24
|
temp_df = pd.read_html(StringIO(r.text))[0]
|
26
|
-
del temp_df[
|
27
|
-
del temp_df[
|
28
|
-
temp_df.columns = [
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
25
|
+
del temp_df["相关链接"]
|
26
|
+
del temp_df["天相评级"]
|
27
|
+
temp_df.columns = [
|
28
|
+
"序号",
|
29
|
+
"基金公司",
|
30
|
+
"成立时间",
|
31
|
+
"全部管理规模",
|
32
|
+
"全部基金数",
|
33
|
+
"全部经理数",
|
34
|
+
]
|
35
|
+
expanded_df = temp_df["全部管理规模"].str.split(" ", expand=True)
|
36
|
+
temp_df["全部管理规模"] = expanded_df.iloc[:, 0].str.replace(",", "")
|
37
|
+
temp_df["更新日期"] = expanded_df.iloc[:, 1]
|
38
|
+
temp_df["全部管理规模"] = pd.to_numeric(temp_df["全部管理规模"], errors="coerce")
|
39
|
+
temp_df["全部基金数"] = pd.to_numeric(temp_df["全部基金数"], errors="coerce")
|
40
|
+
temp_df["全部经理数"] = pd.to_numeric(temp_df["全部经理数"], errors="coerce")
|
41
|
+
temp_df["成立时间"] = pd.to_datetime(temp_df["成立时间"], errors="coerce").dt.date
|
36
42
|
return temp_df
|
37
43
|
|
38
44
|
|
@@ -43,17 +49,15 @@ def fund_aum_trend_em() -> pd.DataFrame:
|
|
43
49
|
:return: 基金市场管理规模走势图
|
44
50
|
:rtype: pandas.DataFrame
|
45
51
|
"""
|
46
|
-
url =
|
47
|
-
payload = {
|
48
|
-
'fundType': '0'
|
49
|
-
}
|
52
|
+
url = "https://fund.eastmoney.com/Company/home/GetFundTotalScaleForChart"
|
53
|
+
payload = {"fundType": "0"}
|
50
54
|
r = requests.get(url, data=payload)
|
51
55
|
data_json = r.json()
|
52
56
|
temp_df = pd.DataFrame()
|
53
|
-
temp_df[
|
54
|
-
temp_df[
|
55
|
-
temp_df[
|
56
|
-
temp_df[
|
57
|
+
temp_df["date"] = data_json["x"]
|
58
|
+
temp_df["value"] = data_json["y"]
|
59
|
+
temp_df["date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
|
60
|
+
temp_df["value"] = pd.to_numeric(temp_df["value"], errors="coerce")
|
57
61
|
return temp_df
|
58
62
|
|
59
63
|
|
@@ -64,24 +68,32 @@ def fund_aum_hist_em(year: str = "2023") -> pd.DataFrame:
|
|
64
68
|
:return: 基金公司历年管理规模排行列表
|
65
69
|
:rtype: pandas.DataFrame
|
66
70
|
"""
|
67
|
-
url =
|
68
|
-
params = {
|
69
|
-
'year': year
|
70
|
-
}
|
71
|
+
url = "https://fund.eastmoney.com/Company/home/HistoryScaleTable"
|
72
|
+
params = {"year": year}
|
71
73
|
r = requests.get(url, params=params)
|
72
74
|
temp_df = pd.read_html(StringIO(r.text))[0]
|
73
|
-
temp_df.columns = [
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
75
|
+
temp_df.columns = [
|
76
|
+
"序号",
|
77
|
+
"基金公司",
|
78
|
+
"总规模",
|
79
|
+
"股票型",
|
80
|
+
"混合型",
|
81
|
+
"债券型",
|
82
|
+
"指数型",
|
83
|
+
"QDII",
|
84
|
+
"货币型",
|
85
|
+
]
|
86
|
+
temp_df["总规模"] = pd.to_numeric(temp_df["总规模"], errors="coerce")
|
87
|
+
temp_df["股票型"] = pd.to_numeric(temp_df["股票型"], errors="coerce")
|
88
|
+
temp_df["混合型"] = pd.to_numeric(temp_df["混合型"], errors="coerce")
|
89
|
+
temp_df["债券型"] = pd.to_numeric(temp_df["债券型"], errors="coerce")
|
90
|
+
temp_df["指数型"] = pd.to_numeric(temp_df["指数型"], errors="coerce")
|
91
|
+
temp_df["QDII"] = pd.to_numeric(temp_df["QDII"], errors="coerce")
|
92
|
+
temp_df["货币型"] = pd.to_numeric(temp_df["货币型"], errors="coerce")
|
81
93
|
return temp_df
|
82
94
|
|
83
95
|
|
84
|
-
if __name__ ==
|
96
|
+
if __name__ == "__main__":
|
85
97
|
fund_aum_em_df = fund_aum_em()
|
86
98
|
print(fund_aum_em_df)
|
87
99
|
|
akshare/fund/fund_em.py
CHANGED
@@ -42,7 +42,6 @@ def fund_purchase_em() -> pd.DataFrame:
|
|
42
42
|
"page": "1,50000",
|
43
43
|
"js": "reData",
|
44
44
|
"sort": "fcode,asc",
|
45
|
-
"_": "1641528557742",
|
46
45
|
}
|
47
46
|
r = requests.get(url, params=params, headers=headers)
|
48
47
|
data_text = r.text
|
@@ -160,7 +159,6 @@ def fund_info_index_em(
|
|
160
159
|
"fr1": indicator_map[indicator],
|
161
160
|
"fl": "0",
|
162
161
|
"isab": "1",
|
163
|
-
"_": "1658888335885",
|
164
162
|
}
|
165
163
|
else:
|
166
164
|
params = {
|
@@ -180,7 +178,6 @@ def fund_info_index_em(
|
|
180
178
|
"fr1": indicator_map[indicator],
|
181
179
|
"fl": "0",
|
182
180
|
"isab": "1",
|
183
|
-
"_": "1658888335885",
|
184
181
|
}
|
185
182
|
headers = {
|
186
183
|
"Accept": "*/*",
|
@@ -432,7 +429,6 @@ def fund_open_fund_info_em(
|
|
432
429
|
"fundCode": symbol,
|
433
430
|
"indexcode": "000300",
|
434
431
|
"type": period_map[period],
|
435
|
-
"_": "1704012866899",
|
436
432
|
}
|
437
433
|
r = requests.get(url, params=params, headers=headers)
|
438
434
|
data_json = r.json()
|
@@ -640,7 +636,6 @@ def fund_financial_fund_daily_em() -> pd.DataFrame:
|
|
640
636
|
"AttentionCodes": "",
|
641
637
|
"cycle": "",
|
642
638
|
"OnlySale": "1",
|
643
|
-
"_": "1588248310234",
|
644
639
|
}
|
645
640
|
r = requests.get(url, params=params, headers=headers)
|
646
641
|
data_json = r.json()
|
@@ -1099,7 +1094,6 @@ def fund_hk_fund_hist_em(
|
|
1099
1094
|
"pagesize": "1000",
|
1100
1095
|
"date1": "",
|
1101
1096
|
"date2": "",
|
1102
|
-
"_": "1611131371333",
|
1103
1097
|
}
|
1104
1098
|
r = requests.get(url, params=params, headers=headers)
|
1105
1099
|
data_json = r.json()
|
@@ -1136,7 +1130,6 @@ def fund_hk_fund_hist_em(
|
|
1136
1130
|
"pagesize": "1000",
|
1137
1131
|
"date1": "",
|
1138
1132
|
"date2": "",
|
1139
|
-
"_": "1611131371333",
|
1140
1133
|
}
|
1141
1134
|
r = requests.get(url, params=params, headers=headers)
|
1142
1135
|
data_json = r.json()
|
akshare/fund/fund_etf_em.py
CHANGED
@@ -35,7 +35,6 @@ def _fund_etf_code_id_map_em() -> dict:
|
|
35
35
|
"fid": "f3",
|
36
36
|
"fs": "b:MK0021,b:MK0022,b:MK0023,b:MK0024",
|
37
37
|
"fields": "f3,f12,f13",
|
38
|
-
"_": "1672806290972",
|
39
38
|
}
|
40
39
|
temp_df = fetch_paginated_data(url, params)
|
41
40
|
temp_dict = dict(zip(temp_df["f12"], temp_df["f13"]))
|
@@ -69,7 +68,6 @@ def fund_etf_spot_em() -> pd.DataFrame:
|
|
69
68
|
"f72,f75,f78,f81,f84,f87,f115,f124,f128,"
|
70
69
|
"f136,f152,f184,f297,f402,f441"
|
71
70
|
),
|
72
|
-
"_": "1672806290972",
|
73
71
|
}
|
74
72
|
temp_df = fetch_paginated_data(url, params)
|
75
73
|
temp_df.rename(
|
@@ -254,7 +252,6 @@ def fund_etf_hist_em(
|
|
254
252
|
"fqt": adjust_dict[adjust],
|
255
253
|
"beg": start_date,
|
256
254
|
"end": end_date,
|
257
|
-
"_": "1623766962675",
|
258
255
|
}
|
259
256
|
try:
|
260
257
|
market_id = code_id_dict[symbol]
|
@@ -351,7 +348,6 @@ def fund_etf_hist_min_em(
|
|
351
348
|
"ndays": "5",
|
352
349
|
"iscr": "0",
|
353
350
|
"secid": f"{code_id_dict[symbol]}.{symbol}",
|
354
|
-
"_": "1623766962675",
|
355
351
|
}
|
356
352
|
r = requests.get(url, timeout=15, params=params)
|
357
353
|
data_json = r.json()
|
@@ -391,7 +387,6 @@ def fund_etf_hist_min_em(
|
|
391
387
|
"secid": f"{code_id_dict[symbol]}.{symbol}",
|
392
388
|
"beg": "0",
|
393
389
|
"end": "20500000",
|
394
|
-
"_": "1630930917857",
|
395
390
|
}
|
396
391
|
r = requests.get(url, timeout=15, params=params)
|
397
392
|
data_json = r.json()
|
akshare/fund/fund_fhsp_em.py
CHANGED
@@ -5,6 +5,7 @@ Date: 2022/12/13 14:18
|
|
5
5
|
Desc: 天天基金网-基金数据-分红送配
|
6
6
|
https://fund.eastmoney.com/data/fundfenhong.html
|
7
7
|
"""
|
8
|
+
|
8
9
|
import pandas as pd
|
9
10
|
import requests
|
10
11
|
from tqdm import tqdm
|
@@ -29,14 +30,14 @@ def fund_fh_em() -> pd.DataFrame:
|
|
29
30
|
}
|
30
31
|
r = requests.get(url, params=params)
|
31
32
|
data_text = r.text
|
32
|
-
total_page = eval(data_text[data_text.find("=") + 1: data_text.find(";")])[0]
|
33
|
+
total_page = eval(data_text[data_text.find("=") + 1 : data_text.find(";")])[0]
|
33
34
|
big_df = pd.DataFrame()
|
34
35
|
for page in tqdm(range(1, total_page + 1), leave=False):
|
35
36
|
params.update({"page": page})
|
36
37
|
r = requests.get(url, params=params)
|
37
38
|
data_text = r.text
|
38
39
|
temp_list = eval(
|
39
|
-
data_text[data_text.find("[["): data_text.find(";var jjfh_jjgs")]
|
40
|
+
data_text[data_text.find("[[") : data_text.find(";var jjfh_jjgs")]
|
40
41
|
)
|
41
42
|
temp_df = pd.DataFrame(temp_list)
|
42
43
|
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
@@ -52,11 +53,13 @@ def fund_fh_em() -> pd.DataFrame:
|
|
52
53
|
"分红发放日",
|
53
54
|
"-",
|
54
55
|
]
|
55
|
-
big_df = big_df[
|
56
|
-
|
57
|
-
|
58
|
-
big_df[
|
59
|
-
big_df[
|
56
|
+
big_df = big_df[
|
57
|
+
["序号", "基金代码", "基金简称", "权益登记日", "除息日期", "分红", "分红发放日"]
|
58
|
+
]
|
59
|
+
big_df["权益登记日"] = pd.to_datetime(big_df["权益登记日"]).dt.date
|
60
|
+
big_df["除息日期"] = pd.to_datetime(big_df["除息日期"]).dt.date
|
61
|
+
big_df["分红发放日"] = pd.to_datetime(big_df["分红发放日"]).dt.date
|
62
|
+
big_df["分红"] = pd.to_numeric(big_df["分红"])
|
60
63
|
return big_df
|
61
64
|
|
62
65
|
|
@@ -79,20 +82,20 @@ def fund_cf_em() -> pd.DataFrame:
|
|
79
82
|
}
|
80
83
|
r = requests.get(url, params=params)
|
81
84
|
data_text = r.text
|
82
|
-
total_page = eval(data_text[data_text.find("=") + 1: data_text.find(";")])[0]
|
85
|
+
total_page = eval(data_text[data_text.find("=") + 1 : data_text.find(";")])[0]
|
83
86
|
big_df = pd.DataFrame()
|
84
87
|
for page in tqdm(range(1, total_page + 1), leave=False):
|
85
88
|
params.update({"page": page})
|
86
89
|
r = requests.get(url, params=params)
|
87
90
|
data_text = r.text
|
88
|
-
temp_str = data_text[data_text.find("[["): data_text.find(";var jjcf_jjgs")]
|
91
|
+
temp_str = data_text[data_text.find("[[") : data_text.find(";var jjcf_jjgs")]
|
89
92
|
if temp_str:
|
90
93
|
temp_list = eval(temp_str)
|
91
94
|
temp_df = pd.DataFrame(temp_list)
|
92
95
|
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
93
96
|
|
94
97
|
big_df.reset_index(inplace=True)
|
95
|
-
big_df.loc[:,
|
98
|
+
big_df.loc[:, "index"] = big_df["index"] + 1
|
96
99
|
big_df.columns = [
|
97
100
|
"序号",
|
98
101
|
"基金代码",
|
@@ -102,9 +105,11 @@ def fund_cf_em() -> pd.DataFrame:
|
|
102
105
|
"拆分折算",
|
103
106
|
"-",
|
104
107
|
]
|
105
|
-
big_df = big_df[
|
106
|
-
|
107
|
-
|
108
|
+
big_df = big_df[
|
109
|
+
["序号", "基金代码", "基金简称", "拆分折算日", "拆分类型", "拆分折算"]
|
110
|
+
]
|
111
|
+
big_df["拆分折算日"] = pd.to_datetime(big_df["拆分折算日"]).dt.date
|
112
|
+
big_df["拆分折算"] = pd.to_numeric(big_df["拆分折算"], errors="coerce")
|
108
113
|
return big_df
|
109
114
|
|
110
115
|
|
@@ -127,14 +132,14 @@ def fund_fh_rank_em() -> pd.DataFrame:
|
|
127
132
|
}
|
128
133
|
r = requests.get(url, params=params)
|
129
134
|
data_text = r.text
|
130
|
-
total_page = eval(data_text[data_text.find("=") + 1: data_text.find(";")])[0]
|
135
|
+
total_page = eval(data_text[data_text.find("=") + 1 : data_text.find(";")])[0]
|
131
136
|
big_df = pd.DataFrame()
|
132
137
|
for page in tqdm(range(1, total_page + 1), leave=False):
|
133
138
|
params.update({"page": page})
|
134
139
|
r = requests.get(url, params=params)
|
135
140
|
data_text = r.text
|
136
141
|
temp_list = eval(
|
137
|
-
data_text[data_text.find("[["): data_text.find(";var fhph_jjgs")]
|
142
|
+
data_text[data_text.find("[[") : data_text.find(";var fhph_jjgs")]
|
138
143
|
)
|
139
144
|
temp_df = pd.DataFrame(temp_list)
|
140
145
|
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
@@ -150,14 +155,16 @@ def fund_fh_rank_em() -> pd.DataFrame:
|
|
150
155
|
"成立日期",
|
151
156
|
"-",
|
152
157
|
]
|
153
|
-
big_df = big_df[
|
154
|
-
|
155
|
-
|
156
|
-
big_df[
|
158
|
+
big_df = big_df[
|
159
|
+
["序号", "基金代码", "基金简称", "累计分红", "累计次数", "成立日期"]
|
160
|
+
]
|
161
|
+
big_df["成立日期"] = pd.to_datetime(big_df["成立日期"]).dt.date
|
162
|
+
big_df["累计分红"] = pd.to_numeric(big_df["累计分红"], errors="coerce")
|
163
|
+
big_df["累计次数"] = pd.to_numeric(big_df["累计次数"], errors="coerce")
|
157
164
|
return big_df
|
158
165
|
|
159
166
|
|
160
|
-
if __name__ ==
|
167
|
+
if __name__ == "__main__":
|
161
168
|
fund_fh_em_df = fund_fh_em()
|
162
169
|
print(fund_fh_em_df)
|
163
170
|
|