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.
Files changed (175) hide show
  1. akshare/__init__.py +2 -1
  2. akshare/air/cons.py +1 -0
  3. akshare/air/crypto.js +1 -1
  4. akshare/air/outcrypto.js +1 -1
  5. akshare/article/cons.py +1 -0
  6. akshare/article/epu_index.py +4 -3
  7. akshare/article/ff_factor.py +19 -8
  8. akshare/article/fred_md.py +4 -1
  9. akshare/article/risk_rv.py +3 -8
  10. akshare/bond/bond_cb_sina.py +1 -0
  11. akshare/bond/bond_cbond.py +19 -14
  12. akshare/bond/bond_em.py +34 -15
  13. akshare/bond/bond_summary.py +38 -37
  14. akshare/bond/bond_zh_cov.py +0 -6
  15. akshare/bond/cons.py +14 -11
  16. akshare/crypto/__init__.py +1 -1
  17. akshare/crypto/crypto_bitcoin_cme.py +7 -7
  18. akshare/crypto/crypto_hold.py +4 -1
  19. akshare/currency/currency.py +1 -0
  20. akshare/currency/currency_china_bank_sina.py +6 -3
  21. akshare/data/__init__.py +1 -1
  22. akshare/data/cninfo.js +1 -1
  23. akshare/economic/cons.py +10 -3
  24. akshare/economic/macro_australia.py +0 -7
  25. akshare/economic/macro_canada.py +92 -81
  26. akshare/economic/macro_china.py +0 -34
  27. akshare/economic/macro_china_hk.py +0 -1
  28. akshare/economic/macro_euro.py +103 -56
  29. akshare/economic/macro_germany.py +1 -1
  30. akshare/economic/macro_japan.py +0 -1
  31. akshare/economic/macro_other.py +1 -6
  32. akshare/economic/macro_swiss.py +2 -3
  33. akshare/economic/macro_uk.py +1 -1
  34. akshare/economic/macro_usa.py +0 -2
  35. akshare/energy/energy_carbon.py +0 -1
  36. akshare/energy/energy_oil_em.py +1 -2
  37. akshare/event/cons.py +1 -0
  38. akshare/forex/forex_em.py +0 -1
  39. akshare/fortune/fortune_bloomberg.py +6 -3
  40. akshare/fortune/fortune_forbes_500.py +3 -6
  41. akshare/fortune/fortune_hurun.py +2 -1
  42. akshare/fortune/fortune_xincaifu_500.py +17 -14
  43. akshare/fund/fund_announcement.py +1 -0
  44. akshare/fund/fund_aum_em.py +47 -35
  45. akshare/fund/fund_em.py +0 -7
  46. akshare/fund/fund_etf_em.py +0 -5
  47. akshare/fund/fund_fhsp_em.py +27 -20
  48. akshare/fund/fund_init_em.py +8 -5
  49. akshare/fund/fund_lof_em.py +0 -5
  50. akshare/fund/fund_manager.py +18 -7
  51. akshare/fund/fund_portfolio_em.py +0 -1
  52. akshare/fund/fund_position_lg.py +19 -8
  53. akshare/fund/fund_rank_em.py +0 -3
  54. akshare/fund/fund_rating.py +28 -9
  55. akshare/fund/fund_scale_em.py +24 -13
  56. akshare/futures/futures_comex_em.py +1 -0
  57. akshare/futures/futures_contract_detail.py +11 -8
  58. akshare/futures/futures_inventory_em.py +0 -2
  59. akshare/futures/futures_rule.py +5 -1
  60. akshare/futures/futures_settlement_price_sgx.py +21 -6
  61. akshare/futures/futures_stock_js.py +0 -1
  62. akshare/futures/receipt.py +279 -153
  63. akshare/futures/requests_fun.py +16 -3
  64. akshare/futures_derivative/cons.py +100 -103
  65. akshare/futures_derivative/futures_contract_info_cffex.py +53 -39
  66. akshare/futures_derivative/futures_contract_info_dce.py +16 -9
  67. akshare/futures_derivative/futures_contract_info_gfex.py +43 -31
  68. akshare/futures_derivative/futures_index_sina.py +25 -13
  69. akshare/fx/cons.py +12 -7
  70. akshare/fx/fx_quote.py +1 -0
  71. akshare/fx/fx_quote_baidu.py +2 -1
  72. akshare/hf/__init__.py +1 -1
  73. akshare/hf/hf_sp500.py +8 -7
  74. akshare/index/index_eri.py +1 -0
  75. akshare/index/index_global_em.py +0 -1
  76. akshare/index/index_kq_fz.py +17 -14
  77. akshare/index/index_kq_ss.py +1 -0
  78. akshare/index/index_stock_hk.py +0 -1
  79. akshare/index/index_stock_zh.py +0 -3
  80. akshare/index/index_sugar.py +18 -4
  81. akshare/index/index_zh_em.py +0 -15
  82. akshare/interest_rate/interbank_rate_em.py +0 -1
  83. akshare/movie/jm.js +0 -1
  84. akshare/news/__init__.py +1 -1
  85. akshare/news/news_stock.py +0 -1
  86. akshare/option/option_commodity_sina.py +22 -26
  87. akshare/option/option_daily_stats_sse_szse.py +0 -1
  88. akshare/option/option_em.py +0 -1
  89. akshare/option/option_lhb_em.py +0 -1
  90. akshare/option/option_risk_indicator_sse.py +0 -1
  91. akshare/other/__init__.py +1 -1
  92. akshare/pro/__init__.py +0 -1
  93. akshare/pro/client.py +6 -4
  94. akshare/pro/cons.py +3 -2
  95. akshare/pro/data_pro.py +6 -5
  96. akshare/qhkc/qhkc_api.py +63 -21
  97. akshare/qhkc_web/qhkc_fund.py +1 -0
  98. akshare/qhkc_web/qhkc_index.py +1 -0
  99. akshare/qhkc_web/qhkc_tool.py +55 -54
  100. akshare/rate/__init__.py +1 -1
  101. akshare/rate/repo_rate.py +36 -32
  102. akshare/reits/__init__.py +1 -1
  103. akshare/reits/reits_basic.py +44 -2
  104. akshare/sport/__init__.py +1 -1
  105. akshare/sport/sport_olympic.py +1 -0
  106. akshare/spot/__init__.py +1 -1
  107. akshare/stock/cons.py +19 -12
  108. akshare/stock/stock_board_concept_em.py +0 -6
  109. akshare/stock/stock_board_industry_em.py +0 -6
  110. akshare/stock/stock_dzjy_em.py +1 -1
  111. akshare/stock/stock_fund_em.py +0 -2
  112. akshare/stock/stock_fund_hold.py +1 -2
  113. akshare/stock/stock_gsrl_em.py +1 -0
  114. akshare/stock/stock_hk_famous.py +0 -1
  115. akshare/stock/stock_hk_fhpx_ths.py +2 -1
  116. akshare/stock/stock_hk_hot_rank_em.py +1 -0
  117. akshare/stock/stock_hold_control_em.py +0 -2
  118. akshare/stock/stock_hot_up_em.py +4 -1
  119. akshare/stock/stock_hsgt_em.py +0 -2
  120. akshare/stock/stock_industry.py +1 -0
  121. akshare/stock/stock_info.py +0 -2
  122. akshare/stock/stock_info_em.py +0 -1
  123. akshare/stock/stock_repurchase_em.py +7 -2
  124. akshare/stock/stock_share_hold.py +0 -1
  125. akshare/stock/stock_stop.py +0 -1
  126. akshare/stock/stock_summary.py +0 -2
  127. akshare/stock/stock_us_famous.py +0 -1
  128. akshare/stock/stock_us_js.py +3 -2
  129. akshare/stock/stock_us_pink.py +0 -1
  130. akshare/stock/stock_weibo_nlp.py +18 -20
  131. akshare/stock/stock_zh_a_special.py +0 -3
  132. akshare/stock/stock_zh_a_tick_tx.py +11 -3
  133. akshare/stock_a/stock_board_concept_name_em.py +0 -1
  134. akshare/stock_a/stock_zh_a_spot.py +0 -1
  135. akshare/stock_feature/cons.py +1 -0
  136. akshare/stock_feature/stock_account_em.py +0 -1
  137. akshare/stock_feature/stock_all_pb.py +2 -1
  138. akshare/stock_feature/stock_analyst_em.py +0 -3
  139. akshare/stock_feature/stock_buffett_index_lg.py +7 -6
  140. akshare/stock_feature/stock_classify_sina.py +3 -6
  141. akshare/stock_feature/stock_comment_em.py +0 -2
  142. akshare/stock_feature/stock_congestion_lg.py +2 -1
  143. akshare/stock_feature/stock_dxsyl_em.py +116 -71
  144. akshare/stock_feature/stock_gdzjc_em.py +16 -5
  145. akshare/stock_feature/stock_gxl_lg.py +3 -2
  146. akshare/stock_feature/stock_hist_em.py +0 -20
  147. akshare/stock_feature/stock_hist_tx.py +10 -8
  148. akshare/stock_feature/stock_hot_xq.py +4 -6
  149. akshare/stock_feature/stock_hsgt_em.py +0 -2
  150. akshare/stock_feature/stock_hsgt_exchange_rate.py +0 -2
  151. akshare/stock_feature/stock_hsgt_min_em.py +13 -16
  152. akshare/stock_feature/stock_inner_trade_xq.py +0 -1
  153. akshare/stock_feature/stock_lhb_em.py +0 -1
  154. akshare/stock_feature/stock_margin_em.py +0 -1
  155. akshare/stock_feature/stock_margin_sse.py +0 -2
  156. akshare/stock_feature/stock_pankou_em.py +0 -2
  157. akshare/stock_feature/stock_qsjy_em.py +13 -4
  158. akshare/stock_feature/stock_research_report_em.py +0 -1
  159. akshare/stock_feature/stock_yjyg_cninfo.py +4 -1
  160. akshare/stock_feature/stock_zh_vote_baidu.py +4 -1
  161. akshare/stock_feature/stock_ztb_em.py +0 -6
  162. akshare/stock_fundamental/__init__.py +1 -1
  163. akshare/stock_fundamental/stock_hold.py +26 -17
  164. akshare/stock_fundamental/stock_ipo_declare.py +1 -0
  165. akshare/stock_fundamental/stock_kcb_detail_sse.py +10 -10
  166. akshare/stock_fundamental/stock_kcb_sse.py +26 -25
  167. akshare/stock_fundamental/stock_profit_forecast_hk_etnet.py +64 -41
  168. akshare/stock_fundamental/stock_recommend.py +20 -4
  169. akshare/utils/demjson.py +2005 -1334
  170. akshare/utils/token_process.py +6 -5
  171. {akshare-1.16.64.dist-info → akshare-1.16.65.dist-info}/METADATA +3 -8
  172. {akshare-1.16.64.dist-info → akshare-1.16.65.dist-info}/RECORD +175 -175
  173. {akshare-1.16.64.dist-info → akshare-1.16.65.dist-info}/WHEEL +0 -0
  174. {akshare-1.16.64.dist-info → akshare-1.16.65.dist-info}/licenses/LICENSE +0 -0
  175. {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()
@@ -33,7 +33,6 @@ def macro_japan_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()
@@ -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, params=params, headers=headers)
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": "*/*",
@@ -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__ == '__main__':
141
+ if __name__ == "__main__":
143
142
  macro_swiss_svme_df = macro_swiss_svme()
144
143
  print(macro_swiss_svme_df)
145
144
 
@@ -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()
@@ -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()
@@ -43,7 +43,6 @@ def energy_carbon_domestic(symbol: str = "湖北") -> pd.DataFrame:
43
43
  params = {
44
44
  "lcnK": "53f75bfcefff58e4046ccfa42171636c",
45
45
  "brand": "TAN",
46
- "_": "1626773022063",
47
46
  }
48
47
  r = requests.get(url, params=params)
49
48
  data_text = r.text
@@ -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
@@ -4,6 +4,7 @@
4
4
  Date: 2023/9/24 15:22
5
5
  Desc: 百度地图慧眼-迁徙城市代码映射
6
6
  """
7
+
7
8
  province_dict = {
8
9
  "820000": "澳门",
9
10
  "810000": "香港",
akshare/forex/forex_em.py CHANGED
@@ -33,7 +33,6 @@ def forex_spot_em() -> pd.DataFrame:
33
33
  "dect": "1",
34
34
  "ut": "fa5fd1943c7b386f172d6893dbfba10b",
35
35
  "wbp2u": "|0|0|0|web",
36
- "_": "1741252811876",
37
36
  }
38
37
  r = requests.get(url, params=params)
39
38
  data_json = r.json()
@@ -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 l in trs:
38
- item = l.findAll("td")
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(year="2021")
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)
@@ -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 as e:
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(columns={
43
- 'assets': "财富",
44
- 'year': "年份",
45
- 'sex': "性别",
46
- 'name': "姓名",
47
- 'rank': "排名",
48
- 'company': "主要公司",
49
- 'industry': "相关行业",
50
- 'id': "-",
51
- 'addr': "公司总部",
52
- 'rankLst': "-",
53
- 'age': "年龄",
54
- }, inplace=True)
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
  "排名",
@@ -5,6 +5,7 @@ Date: 2023/7/19 17:40
5
5
  Desc: 东方财富网站-天天基金网-基金档案-基金公告-人事调整
6
6
  https://fundf10.eastmoney.com/jjgg_000001.html
7
7
  """
8
+
8
9
  import time
9
10
 
10
11
  import pandas as pd
@@ -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 = 'https://fund.eastmoney.com/Company/home/gspmlist'
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
- expanded_df = temp_df['全部管理规模'].str.split(' ', expand=True)
30
- temp_df['全部管理规模'] = expanded_df.iloc[:, 0].str.replace(",", "")
31
- temp_df['更新日期'] = expanded_df.iloc[:, 1]
32
- temp_df['全部管理规模'] = pd.to_numeric(temp_df['全部管理规模'], errors="coerce")
33
- temp_df['全部基金数'] = pd.to_numeric(temp_df['全部基金数'], errors="coerce")
34
- temp_df['全部经理数'] = pd.to_numeric(temp_df['全部经理数'], errors="coerce")
35
- temp_df['成立时间'] = pd.to_datetime(temp_df['成立时间'], errors="coerce").dt.date
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 = 'https://fund.eastmoney.com/Company/home/GetFundTotalScaleForChart'
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['date'] = data_json['x']
54
- temp_df['value'] = data_json['y']
55
- temp_df['date'] = pd.to_datetime(temp_df['date'], errors="coerce").dt.date
56
- temp_df['value'] = pd.to_numeric(temp_df['value'], errors="coerce")
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 = 'https://fund.eastmoney.com/Company/home/HistoryScaleTable'
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 = ['序号', '基金公司', '总规模', '股票型', '混合型', '债券型', '指数型', 'QDII', '货币型']
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(temp_df['指数型'], errors="coerce")
79
- temp_df['QDII'] = pd.to_numeric(temp_df['QDII'], errors="coerce")
80
- temp_df['货币型'] = pd.to_numeric(temp_df['货币型'], errors="coerce")
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__ == '__main__':
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()
@@ -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()
@@ -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
- big_df['权益登记日'] = pd.to_datetime(big_df['权益登记日']).dt.date
57
- big_df['除息日期'] = pd.to_datetime(big_df['除息日期']).dt.date
58
- big_df['分红发放日'] = pd.to_datetime(big_df['分红发放日']).dt.date
59
- big_df['分红'] = pd.to_numeric(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[:, 'index'] = big_df['index'] + 1
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
- big_df['拆分折算日'] = pd.to_datetime(big_df['拆分折算日']).dt.date
107
- big_df['拆分折算'] = pd.to_numeric(big_df['拆分折算'], errors="coerce")
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
- big_df['成立日期'] = pd.to_datetime(big_df['成立日期']).dt.date
155
- big_df['累计分红'] = pd.to_numeric(big_df['累计分红'], errors="coerce")
156
- big_df['累计次数'] = pd.to_numeric(big_df['累计次数'], errors="coerce")
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__ == '__main__':
167
+ if __name__ == "__main__":
161
168
  fund_fh_em_df = fund_fh_em()
162
169
  print(fund_fh_em_df)
163
170