akshare 1.12.99__py3-none-any.whl → 1.15.73__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.

Potentially problematic release.


This version of akshare might be problematic. Click here for more details.

Files changed (236) hide show
  1. akshare/__init__.py +442 -138
  2. akshare/air/air_hebei.py +79 -53
  3. akshare/air/air_zhenqi.py +29 -43
  4. akshare/air/sunrise_tad.py +32 -17
  5. akshare/bank/bank_cbirc_2020.py +12 -9
  6. akshare/bond/bond_cb_ths.py +17 -9
  7. akshare/bond/bond_china.py +38 -39
  8. akshare/bond/bond_china_money.py +75 -48
  9. akshare/bond/bond_info_cm.py +28 -8
  10. akshare/bond/bond_issue_cninfo.py +73 -30
  11. akshare/bond/bond_zh_cov.py +1 -1
  12. akshare/bond/bond_zh_sina.py +57 -51
  13. akshare/cal/__init__.py +0 -0
  14. akshare/cal/rv.py +170 -0
  15. akshare/cost/cost_living.py +7 -5
  16. akshare/currency/currency_safe.py +7 -6
  17. akshare/data/cninfo.js +15 -0
  18. akshare/datasets.py +10 -21
  19. akshare/economic/macro_bank.py +95 -653
  20. akshare/economic/macro_china.py +772 -1024
  21. akshare/economic/macro_china_hk.py +65 -243
  22. akshare/economic/macro_china_nbs.py +24 -7
  23. akshare/economic/macro_constitute.py +17 -12
  24. akshare/economic/macro_euro.py +13 -6
  25. akshare/economic/macro_finance_ths.py +133 -0
  26. akshare/economic/macro_info_ws.py +100 -0
  27. akshare/economic/macro_japan.py +5 -4
  28. akshare/economic/macro_other.py +12 -9
  29. akshare/economic/macro_usa.py +376 -1940
  30. akshare/economic/marco_cnbs.py +11 -6
  31. akshare/energy/energy_carbon.py +94 -125
  32. akshare/event/migration.py +3 -2
  33. akshare/exceptions.py +43 -0
  34. akshare/file_fold/calendar.json +245 -2
  35. akshare/fortune/fortune_500.py +15 -48
  36. akshare/fund/fund_amac.py +157 -75
  37. akshare/fund/fund_em.py +191 -184
  38. akshare/fund/fund_etf_em.py +16 -15
  39. akshare/fund/fund_etf_sina.py +71 -23
  40. akshare/fund/fund_etf_ths.py +93 -0
  41. akshare/fund/fund_fee_em.py +98 -0
  42. akshare/fund/fund_portfolio_em.py +60 -50
  43. akshare/fund/fund_rank_em.py +91 -82
  44. akshare/fund/fund_report_cninfo.py +63 -48
  45. akshare/fund/fund_scale_sina.py +20 -10
  46. akshare/fund/fund_xq.py +139 -109
  47. akshare/futures/cons.py +8 -31
  48. akshare/futures/cot.py +185 -137
  49. akshare/futures/futures_basis.py +97 -32
  50. akshare/futures/futures_comm_ctp.py +37 -0
  51. akshare/futures/futures_comm_qihuo.py +74 -45
  52. akshare/futures/futures_daily_bar.py +121 -184
  53. akshare/futures/futures_hf_em.py +66 -61
  54. akshare/futures/futures_hq_sina.py +79 -61
  55. akshare/futures/futures_index_ccidx.py +6 -3
  56. akshare/futures/futures_inventory_99.py +61 -272
  57. akshare/futures/futures_news_shmet.py +4 -2
  58. akshare/futures/futures_roll_yield.py +12 -25
  59. akshare/futures/futures_spot_stock_em.py +19 -13
  60. akshare/futures/futures_stock_js.py +14 -12
  61. akshare/futures/futures_to_spot.py +38 -33
  62. akshare/futures/futures_warehouse_receipt.py +75 -71
  63. akshare/futures/futures_zh_sina.py +5 -5
  64. akshare/futures/symbol_var.py +18 -13
  65. akshare/futures_derivative/futures_contract_info_czce.py +60 -52
  66. akshare/futures_derivative/futures_contract_info_ine.py +43 -34
  67. akshare/futures_derivative/futures_contract_info_shfe.py +46 -35
  68. akshare/futures_derivative/futures_cot_sina.py +26 -19
  69. akshare/futures_derivative/futures_spot_sys.py +21 -8
  70. akshare/fx/currency_investing.py +19 -285
  71. akshare/index/index_cflp.py +29 -26
  72. akshare/index/index_cni.py +86 -88
  73. akshare/index/index_cons.py +26 -10
  74. akshare/index/index_cx.py +248 -47
  75. akshare/index/index_drewry.py +17 -16
  76. akshare/index/index_option_qvix.py +329 -0
  77. akshare/index/index_research_fund_sw.py +134 -0
  78. akshare/index/{index_sw_research.py → index_research_sw.py} +122 -58
  79. akshare/index/index_spot.py +9 -5
  80. akshare/index/index_stock_hk.py +35 -16
  81. akshare/index/index_stock_us_sina.py +1 -1
  82. akshare/index/index_stock_zh.py +180 -89
  83. akshare/index/index_stock_zh_csindex.py +15 -369
  84. akshare/index/index_sw.py +62 -34
  85. akshare/index/index_yw.py +46 -23
  86. akshare/index/index_zh_a_scope.py +48 -0
  87. akshare/index/index_zh_em.py +6 -4
  88. akshare/interest_rate/interbank_rate_em.py +14 -9
  89. akshare/movie/artist_yien.py +32 -5
  90. akshare/movie/movie_yien.py +92 -18
  91. akshare/movie/video_yien.py +28 -5
  92. akshare/news/news_baidu.py +78 -44
  93. akshare/news/news_cctv.py +38 -38
  94. akshare/news/news_stock.py +6 -3
  95. akshare/nlp/nlp_interface.py +7 -8
  96. akshare/option/cons.py +11 -11
  97. akshare/option/option_comm_qihuo.py +86 -0
  98. akshare/option/option_commodity.py +178 -51
  99. akshare/option/option_daily_stats_sse_szse.py +146 -0
  100. akshare/option/option_em.py +147 -138
  101. akshare/option/option_finance_sina.py +160 -137
  102. akshare/option/option_lhb_em.py +62 -56
  103. akshare/option/option_risk_indicator_sse.py +17 -14
  104. akshare/other/other_car_cpca.py +934 -0
  105. akshare/other/{other_car.py → other_car_gasgoo.py} +15 -54
  106. akshare/qdii/__init__.py +0 -0
  107. akshare/qdii/qdii_jsl.py +233 -0
  108. akshare/request.py +117 -0
  109. akshare/spot/spot_hog_soozhu.py +232 -0
  110. akshare/spot/spot_price_qh.py +121 -0
  111. akshare/spot/spot_sge.py +63 -10
  112. akshare/stock/stock_allotment_cninfo.py +10 -9
  113. akshare/stock/stock_board_concept_em.py +23 -14
  114. akshare/stock/stock_board_industry_em.py +40 -34
  115. akshare/stock/stock_cg_equity_mortgage.py +15 -11
  116. akshare/stock/stock_cg_guarantee.py +41 -51
  117. akshare/stock/stock_cg_lawsuit.py +36 -35
  118. akshare/stock/stock_dividend_cninfo.py +12 -6
  119. akshare/stock/stock_dzjy_em.py +347 -260
  120. akshare/stock/stock_fund_em.py +332 -84
  121. akshare/stock/stock_hk_famous.py +108 -0
  122. akshare/stock/stock_hk_sina.py +8 -7
  123. akshare/stock/stock_hold_control_cninfo.py +100 -15
  124. akshare/stock/stock_hold_control_em.py +4 -3
  125. akshare/stock/stock_hold_num_cninfo.py +18 -12
  126. akshare/stock/stock_hot_rank_em.py +2 -1
  127. akshare/stock/stock_hot_search_baidu.py +5 -2
  128. akshare/stock/stock_industry_cninfo.py +24 -18
  129. akshare/stock/stock_industry_pe_cninfo.py +45 -31
  130. akshare/stock/stock_industry_sw.py +9 -10
  131. akshare/stock/stock_info.py +25 -15
  132. akshare/stock/stock_info_em.py +5 -2
  133. akshare/stock/stock_intraday_em.py +5 -2
  134. akshare/stock/stock_intraday_sina.py +22 -18
  135. akshare/stock/stock_ipo_summary_cninfo.py +25 -10
  136. akshare/stock/stock_new_cninfo.py +32 -19
  137. akshare/stock/stock_news_cx.py +39 -0
  138. akshare/stock/stock_profile_cninfo.py +9 -8
  139. akshare/stock/stock_rank_forecast.py +8 -6
  140. akshare/stock/stock_share_changes_cninfo.py +18 -14
  141. akshare/stock/stock_share_hold.py +24 -19
  142. akshare/stock/stock_summary.py +54 -26
  143. akshare/stock/stock_us_famous.py +15 -6
  144. akshare/stock/stock_us_pink.py +7 -5
  145. akshare/stock/stock_us_sina.py +15 -12
  146. akshare/stock/stock_xq.py +38 -12
  147. akshare/stock/stock_zh_a_sina.py +53 -78
  148. akshare/stock/stock_zh_b_sina.py +32 -55
  149. akshare/stock/stock_zh_kcb_report.py +11 -9
  150. akshare/stock/stock_zh_kcb_sina.py +67 -64
  151. akshare/stock_feature/stock_a_below_net_asset_statistics.py +5 -2
  152. akshare/stock_feature/stock_a_high_low.py +5 -2
  153. akshare/stock_feature/stock_a_indicator.py +12 -9
  154. akshare/stock_feature/stock_a_pe_and_pb.py +27 -6
  155. akshare/stock_feature/stock_account_em.py +58 -40
  156. akshare/stock_feature/stock_analyst_em.py +36 -27
  157. akshare/stock_feature/stock_board_industry_ths.py +136 -400
  158. akshare/stock_feature/stock_comment_em.py +118 -85
  159. akshare/stock_feature/stock_concept_futu.py +183 -0
  160. akshare/stock_feature/stock_cyq_em.py +58 -54
  161. akshare/stock_feature/stock_disclosure_cninfo.py +147 -102
  162. akshare/stock_feature/stock_esg_sina.py +216 -11
  163. akshare/stock_feature/stock_fhps_em.py +60 -25
  164. akshare/stock_feature/stock_fhps_ths.py +25 -6
  165. akshare/stock_feature/stock_fund_flow.py +38 -25
  166. akshare/stock_feature/stock_gdfx_em.py +180 -95
  167. akshare/stock_feature/stock_gdhs.py +73 -49
  168. akshare/stock_feature/stock_gpzy_em.py +78 -46
  169. akshare/stock_feature/stock_hist_em.py +55 -23
  170. akshare/stock_feature/stock_hk_valuation_baidu.py +20 -8
  171. akshare/stock_feature/stock_hsgt_em.py +184 -452
  172. akshare/stock_feature/stock_info.py +52 -29
  173. akshare/stock_feature/stock_inner_trade_xq.py +39 -31
  174. akshare/stock_feature/stock_irm_cninfo.py +32 -9
  175. akshare/stock_feature/stock_jgdy_em.py +41 -38
  176. akshare/stock_feature/stock_lh_yybpm.py +36 -37
  177. akshare/stock_feature/stock_lhb_em.py +135 -71
  178. akshare/stock_feature/stock_lhb_sina.py +93 -46
  179. akshare/stock_feature/stock_margin_em.py +102 -0
  180. akshare/stock_feature/{stock_sse_margin.py → stock_margin_sse.py} +21 -15
  181. akshare/stock_feature/{stock_szse_margin.py → stock_margin_szse.py} +23 -19
  182. akshare/stock_feature/stock_market_legu.py +13 -8
  183. akshare/stock_feature/stock_pankou_em.py +72 -34
  184. akshare/stock_feature/stock_report_em.py +244 -54
  185. akshare/stock_feature/stock_research_report_em.py +48 -19
  186. akshare/stock_feature/stock_sns_sseinfo.py +15 -12
  187. akshare/stock_feature/stock_sy_em.py +86 -33
  188. akshare/stock_feature/stock_technology_ths.py +152 -120
  189. akshare/stock_feature/stock_tfp_em.py +35 -13
  190. akshare/stock_feature/stock_three_report_em.py +119 -77
  191. akshare/stock_feature/stock_ttm_lyr.py +4 -7
  192. akshare/stock_feature/stock_value_em.py +83 -0
  193. akshare/stock_feature/stock_wencai.py +21 -9
  194. akshare/stock_feature/stock_yjyg_em.py +63 -28
  195. akshare/stock_feature/stock_zf_pg.py +61 -38
  196. akshare/stock_feature/stock_zh_valuation_baidu.py +3 -2
  197. akshare/stock_feature/stock_ztb_em.py +62 -40
  198. akshare/stock_fundamental/stock_finance.py +150 -58
  199. akshare/stock_fundamental/stock_finance_ths.py +116 -31
  200. akshare/stock_fundamental/stock_mda_ym.py +5 -3
  201. akshare/stock_fundamental/stock_notice.py +29 -15
  202. akshare/stock_fundamental/stock_profit_forecast_em.py +31 -13
  203. akshare/stock_fundamental/stock_profit_forecast_ths.py +19 -10
  204. akshare/stock_fundamental/stock_register_em.py +448 -0
  205. akshare/stock_fundamental/stock_restricted_em.py +79 -32
  206. akshare/stock_fundamental/stock_zygc.py +10 -8
  207. akshare/stock_fundamental/stock_zyjs_ths.py +5 -3
  208. akshare/tool/trade_date_hist.py +4 -3
  209. akshare/utils/cons.py +10 -0
  210. akshare/utils/context.py +43 -0
  211. akshare/utils/demjson.py +2 -2
  212. akshare/utils/func.py +26 -0
  213. akshare/utils/tqdm.py +13 -3
  214. {akshare-1.12.99.dist-info → akshare-1.15.73.dist-info}/METADATA +52 -69
  215. akshare-1.15.73.dist-info/RECORD +385 -0
  216. {akshare-1.12.99.dist-info → akshare-1.15.73.dist-info}/WHEEL +1 -1
  217. tests/test_func.py +3 -5
  218. akshare/bond/bond_futures.py +0 -50
  219. akshare/bond/bond_investing.py +0 -139
  220. akshare/crypto/crypto_hist_investing.py +0 -249
  221. akshare/fortune/fortune_it_juzi.py +0 -123
  222. akshare/futures/futures_international.py +0 -170
  223. akshare/futures/futures_news_baidu.py +0 -54
  224. akshare/futures/inventory_data.py +0 -100
  225. akshare/futures_derivative/futures_index_price_nh.py +0 -61
  226. akshare/futures_derivative/futures_index_return_nh.py +0 -47
  227. akshare/futures_derivative/futures_index_volatility_nh.py +0 -51
  228. akshare/futures_derivative/futures_other_index_nh.py +0 -145
  229. akshare/index/index_fear_greed_funddb.py +0 -71
  230. akshare/index/index_investing.py +0 -232
  231. akshare/sport/sport_olympic_winter.py +0 -39
  232. akshare/stock_feature/stock_board_concept_ths.py +0 -422
  233. akshare/stock_fundamental/stock_register.py +0 -292
  234. akshare-1.12.99.dist-info/RECORD +0 -374
  235. {akshare-1.12.99.dist-info → akshare-1.15.73.dist-info}/LICENSE +0 -0
  236. {akshare-1.12.99.dist-info → akshare-1.15.73.dist-info}/top_level.txt +0 -0
@@ -1,13 +1,14 @@
1
1
  # -*- coding:utf-8 -*-
2
2
  # !/usr/bin/env python
3
3
  """
4
- Date: 2023/6/13 16:12
4
+ Date: 2024/7/24 23:30
5
5
  Desc: 巨潮资讯-数据中心-专题统计-基金报表
6
- http://webapi.cninfo.com.cn/#/thematicStatistics
6
+ https://webapi.cninfo.com.cn/#/thematicStatistics
7
7
  """
8
+
8
9
  import pandas as pd
10
+ import py_mini_racer
9
11
  import requests
10
- from py_mini_racer import py_mini_racer
11
12
 
12
13
  from akshare.datasets import get_ths_js
13
14
 
@@ -21,7 +22,7 @@ def _get_file_content_cninfo(file: str = "cninfo.js") -> str:
21
22
  :rtype: str
22
23
  """
23
24
  setting_file_path = get_ths_js(file)
24
- with open(setting_file_path) as f:
25
+ with open(setting_file_path, encoding="utf-8") as f:
25
26
  file_data = f.read()
26
27
  return file_data
27
28
 
@@ -29,13 +30,13 @@ def _get_file_content_cninfo(file: str = "cninfo.js") -> str:
29
30
  def fund_report_stock_cninfo(date: str = "20210630") -> pd.DataFrame:
30
31
  """
31
32
  巨潮资讯-数据中心-专题统计-基金报表-基金重仓股
32
- http://webapi.cninfo.com.cn/#/thematicStatistics
33
+ https://webapi.cninfo.com.cn/#/thematicStatistics
33
34
  :param date: 报告时间; choice of {"XXXX0331", "XXXX0630", "XXXX0930", "XXXX1231"}
34
35
  :type date: str
35
36
  :return: 基金重仓股
36
37
  :rtype: pandas.DataFrame
37
38
  """
38
- url = "http://webapi.cninfo.com.cn/api/sysapi/p_sysapi1112"
39
+ url = "https://webapi.cninfo.com.cn/api/sysapi/p_sysapi1112"
39
40
  js_code = py_mini_racer.MiniRacer()
40
41
  js_content = _get_file_content_cninfo("cninfo.js")
41
42
  js_code.eval(js_content)
@@ -48,11 +49,12 @@ def fund_report_stock_cninfo(date: str = "20210630") -> pd.DataFrame:
48
49
  "Cache-Control": "no-cache",
49
50
  "Content-Length": "0",
50
51
  "Host": "webapi.cninfo.com.cn",
51
- "Origin": "http://webapi.cninfo.com.cn",
52
+ "Origin": "https://webapi.cninfo.com.cn",
52
53
  "Pragma": "no-cache",
53
54
  "Proxy-Connection": "keep-alive",
54
- "Referer": "http://webapi.cninfo.com.cn/",
55
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36",
55
+ "Referer": "https://webapi.cninfo.com.cn/",
56
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
57
+ "Chrome/93.0.4577.63 Safari/537.36",
56
58
  "X-Requested-With": "XMLHttpRequest",
57
59
  }
58
60
  params = {
@@ -88,19 +90,20 @@ def fund_report_stock_cninfo(date: str = "20210630") -> pd.DataFrame:
88
90
  temp_df["持股总数"] = pd.to_numeric(temp_df["持股总数"], errors="coerce")
89
91
  temp_df["持股总市值"] = pd.to_numeric(temp_df["持股总市值"], errors="coerce")
90
92
  temp_df["基金覆盖家数"] = pd.to_numeric(temp_df["基金覆盖家数"], errors="coerce")
93
+ temp_df["序号"] = range(1, len(temp_df) + 1)
91
94
  return temp_df
92
95
 
93
96
 
94
97
  def fund_report_industry_allocation_cninfo(date: str = "20210630") -> pd.DataFrame:
95
98
  """
96
99
  巨潮资讯-数据中心-专题统计-基金报表-基金行业配置
97
- http://webapi.cninfo.com.cn/#/thematicStatistics
100
+ https://webapi.cninfo.com.cn/#/thematicStatistics
98
101
  :param date: 报告时间; choice of {"XXXX0331", "XXXX0630", "XXXX0930", "XXXX1231"}, 从 2017 年开始
99
102
  :type date: str
100
103
  :return: 基金行业配置
101
104
  :rtype: pandas.DataFrame
102
105
  """
103
- url = "http://webapi.cninfo.com.cn/api/sysapi/p_sysapi1113"
106
+ url = "https://webapi.cninfo.com.cn/api/sysapi/p_sysapi1113"
104
107
  js_code = py_mini_racer.MiniRacer()
105
108
  js_content = _get_file_content_cninfo("cninfo.js")
106
109
  js_code.eval(js_content)
@@ -113,11 +116,12 @@ def fund_report_industry_allocation_cninfo(date: str = "20210630") -> pd.DataFra
113
116
  "Cache-Control": "no-cache",
114
117
  "Content-Length": "0",
115
118
  "Host": "webapi.cninfo.com.cn",
116
- "Origin": "http://webapi.cninfo.com.cn",
119
+ "Origin": "https://webapi.cninfo.com.cn",
117
120
  "Pragma": "no-cache",
118
121
  "Proxy-Connection": "keep-alive",
119
- "Referer": "http://webapi.cninfo.com.cn/",
120
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36",
122
+ "Referer": "https://webapi.cninfo.com.cn/",
123
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
124
+ "Chrome/93.0.4577.63 Safari/537.36",
121
125
  "X-Requested-With": "XMLHttpRequest",
122
126
  }
123
127
  params = {
@@ -128,23 +132,23 @@ def fund_report_industry_allocation_cninfo(date: str = "20210630") -> pd.DataFra
128
132
  temp_df = pd.DataFrame(data_json["records"])
129
133
  temp_df.rename(
130
134
  columns={
131
- 'F004N': '行业规模',
132
- 'F003N': '基金覆盖家数',
133
- 'F002V': '证监会行业名称',
134
- 'F001V': '行业编码',
135
- 'ENDDATE': '报告期',
136
- 'F005N': '占净资产比例'
135
+ "F004N": "行业规模",
136
+ "F003N": "基金覆盖家数",
137
+ "F002V": "证监会行业名称",
138
+ "F001V": "行业编码",
139
+ "ENDDATE": "报告期",
140
+ "F005N": "占净资产比例",
137
141
  },
138
142
  inplace=True,
139
143
  )
140
144
  temp_df = temp_df[
141
145
  [
142
- '行业编码',
143
- '证监会行业名称',
144
- '报告期',
145
- '基金覆盖家数',
146
- '行业规模',
147
- '占净资产比例',
146
+ "行业编码",
147
+ "证监会行业名称",
148
+ "报告期",
149
+ "基金覆盖家数",
150
+ "行业规模",
151
+ "占净资产比例",
148
152
  ]
149
153
  ]
150
154
  temp_df["报告期"] = pd.to_datetime(temp_df["报告期"], errors="coerce").dt.date
@@ -157,11 +161,11 @@ def fund_report_industry_allocation_cninfo(date: str = "20210630") -> pd.DataFra
157
161
  def fund_report_asset_allocation_cninfo() -> pd.DataFrame:
158
162
  """
159
163
  巨潮资讯-数据中心-专题统计-基金报表-基金资产配置
160
- http://webapi.cninfo.com.cn/#/thematicStatistics
164
+ https://webapi.cninfo.com.cn/#/thematicStatistics
161
165
  :return: 基金资产配置
162
166
  :rtype: pandas.DataFrame
163
167
  """
164
- url = "http://webapi.cninfo.com.cn/api/sysapi/p_sysapi1114"
168
+ url = "https://webapi.cninfo.com.cn/api/sysapi/p_sysapi1114"
165
169
  js_code = py_mini_racer.MiniRacer()
166
170
  js_content = _get_file_content_cninfo("cninfo.js")
167
171
  js_code.eval(js_content)
@@ -174,11 +178,12 @@ def fund_report_asset_allocation_cninfo() -> pd.DataFrame:
174
178
  "Cache-Control": "no-cache",
175
179
  "Content-Length": "0",
176
180
  "Host": "webapi.cninfo.com.cn",
177
- "Origin": "http://webapi.cninfo.com.cn",
181
+ "Origin": "https://webapi.cninfo.com.cn",
178
182
  "Pragma": "no-cache",
179
183
  "Proxy-Connection": "keep-alive",
180
- "Referer": "http://webapi.cninfo.com.cn/",
181
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36",
184
+ "Referer": "https://webapi.cninfo.com.cn/",
185
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
186
+ "Chrome/93.0.4577.63 Safari/537.36",
182
187
  "X-Requested-With": "XMLHttpRequest",
183
188
  }
184
189
  r = requests.post(url, headers=headers)
@@ -186,31 +191,39 @@ def fund_report_asset_allocation_cninfo() -> pd.DataFrame:
186
191
  temp_df = pd.DataFrame(data_json["records"])
187
192
  temp_df.rename(
188
193
  columns={
189
- 'F001N': '基金覆盖家数',
190
- 'F008N': '现金货币类占净资产比例',
191
- 'F007N': '债券固定收益类占净资产比例',
192
- 'F006N': '股票权益类占净资产比例',
193
- 'ENDDATE': '报告期',
194
- 'F005N': '基金市场净资产规模'
194
+ "F001N": "基金覆盖家数",
195
+ "F008N": "现金货币类占净资产比例",
196
+ "F007N": "债券固定收益类占净资产比例",
197
+ "F006N": "股票权益类占净资产比例",
198
+ "ENDDATE": "报告期",
199
+ "F005N": "基金市场净资产规模",
195
200
  },
196
201
  inplace=True,
197
202
  )
198
203
  temp_df = temp_df[
199
204
  [
200
- '报告期',
201
- '基金覆盖家数',
202
- '股票权益类占净资产比例',
203
- '债券固定收益类占净资产比例',
204
- '现金货币类占净资产比例',
205
- '基金市场净资产规模',
205
+ "报告期",
206
+ "基金覆盖家数",
207
+ "股票权益类占净资产比例",
208
+ "债券固定收益类占净资产比例",
209
+ "现金货币类占净资产比例",
210
+ "基金市场净资产规模",
206
211
  ]
207
212
  ]
208
213
  temp_df["报告期"] = pd.to_datetime(temp_df["报告期"], errors="coerce").dt.date
209
214
  temp_df["基金覆盖家数"] = pd.to_numeric(temp_df["基金覆盖家数"], errors="coerce")
210
- temp_df["股票权益类占净资产比例"] = pd.to_numeric(temp_df["股票权益类占净资产比例"], errors="coerce")
211
- temp_df["债券固定收益类占净资产比例"] = pd.to_numeric(temp_df["债券固定收益类占净资产比例"], errors="coerce")
212
- temp_df["现金货币类占净资产比例"] = pd.to_numeric(temp_df["现金货币类占净资产比例"], errors="coerce")
213
- temp_df["基金市场净资产规模"] = pd.to_numeric(temp_df["基金市场净资产规模"], errors="coerce")
215
+ temp_df["股票权益类占净资产比例"] = pd.to_numeric(
216
+ temp_df["股票权益类占净资产比例"], errors="coerce"
217
+ )
218
+ temp_df["债券固定收益类占净资产比例"] = pd.to_numeric(
219
+ temp_df["债券固定收益类占净资产比例"], errors="coerce"
220
+ )
221
+ temp_df["现金货币类占净资产比例"] = pd.to_numeric(
222
+ temp_df["现金货币类占净资产比例"], errors="coerce"
223
+ )
224
+ temp_df["基金市场净资产规模"] = pd.to_numeric(
225
+ temp_df["基金市场净资产规模"], errors="coerce"
226
+ )
214
227
  return temp_df
215
228
 
216
229
 
@@ -218,7 +231,9 @@ if __name__ == "__main__":
218
231
  fund_report_stock_cninfo_df = fund_report_stock_cninfo(date="20210630")
219
232
  print(fund_report_stock_cninfo_df)
220
233
 
221
- fund_report_industry_allocation_cninfo_df = fund_report_industry_allocation_cninfo(date="20210930")
234
+ fund_report_industry_allocation_cninfo_df = fund_report_industry_allocation_cninfo(
235
+ date="20210930"
236
+ )
222
237
  print(fund_report_industry_allocation_cninfo_df)
223
238
 
224
239
  fund_report_asset_allocation_cninfo_df = fund_report_asset_allocation_cninfo()
@@ -1,10 +1,11 @@
1
1
  # -*- coding:utf-8 -*-
2
2
  # !/usr/bin/env python
3
3
  """
4
- Date: 2023/11/7 18:30
4
+ Date: 2024/9/1 16:20
5
5
  Desc: 新浪财经-基金规模
6
6
  https://vip.stock.finance.sina.com.cn/fund_center/index.html#jjgmall
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
@@ -27,7 +28,10 @@ def fund_scale_open_sina(symbol: str = "股票型基金") -> pd.DataFrame:
27
28
  "货币型基金": "5",
28
29
  "QDII基金": "6",
29
30
  }
30
- url = "http://vip.stock.finance.sina.com.cn/fund_center/data/jsonp.php/IO.XSRV2.CallbackList['J2cW8KXheoWKdSHc']/NetValueReturn_Service.NetValueReturnOpen"
31
+ url = (
32
+ "http://vip.stock.finance.sina.com.cn/fund_center/data/jsonp.php/IO.XSRV2."
33
+ "CallbackList['J2cW8KXheoWKdSHc']/NetValueReturn_Service.NetValueReturnOpen"
34
+ )
31
35
  params = {
32
36
  "page": "1",
33
37
  "num": "10000",
@@ -39,7 +43,7 @@ def fund_scale_open_sina(symbol: str = "股票型基金") -> pd.DataFrame:
39
43
  }
40
44
  r = requests.get(url, params=params)
41
45
  data_text = r.text
42
- data_json = demjson.decode(data_text[data_text.find("({") + 1: -2])
46
+ data_json = demjson.decode(data_text[data_text.find("({") + 1 : -2])
43
47
  temp_df = pd.DataFrame(data_json["data"])
44
48
  temp_df.reset_index(inplace=True)
45
49
  temp_df["index"] = range(1, len(temp_df) + 1)
@@ -95,19 +99,22 @@ def fund_scale_close_sina() -> pd.DataFrame:
95
99
  :return: 基金规模
96
100
  :rtype: pandas.DataFrame
97
101
  """
98
- url = "http://vip.stock.finance.sina.com.cn/fund_center/data/jsonp.php/IO.XSRV2.CallbackList['_bjN6KvXOkfPy2Bu']/NetValueReturn_Service.NetValueReturnClose"
102
+ url = (
103
+ "http://vip.stock.finance.sina.com.cn/fund_center/data/jsonp.php/IO.XSRV2."
104
+ "CallbackList['_bjN6KvXOkfPy2Bu']/NetValueReturn_Service.NetValueReturnClose"
105
+ )
99
106
  params = {
100
107
  "page": "1",
101
108
  "num": "1000",
102
109
  "sort": "zmjgm",
103
110
  "asc": "0",
104
111
  "ccode": "",
105
- "type2": '',
112
+ "type2": "",
106
113
  "type3": "",
107
114
  }
108
115
  r = requests.get(url, params=params)
109
116
  data_text = r.text
110
- data_json = demjson.decode(data_text[data_text.find("({") + 1: -2])
117
+ data_json = demjson.decode(data_text[data_text.find("({") + 1 : -2])
111
118
  temp_df = pd.DataFrame(data_json["data"])
112
119
  temp_df.reset_index(inplace=True)
113
120
  temp_df["index"] = range(1, len(temp_df) + 1)
@@ -163,19 +170,22 @@ def fund_scale_structured_sina() -> pd.DataFrame:
163
170
  :return: 基金规模
164
171
  :rtype: pandas.DataFrame
165
172
  """
166
- url = "http://vip.stock.finance.sina.com.cn/fund_center/data/jsonp.php/IO.XSRV2.CallbackList['cRrwseM7NWX68rDa']/NetValueReturn_Service.NetValueReturnCX"
173
+ url = (
174
+ "http://vip.stock.finance.sina.com.cn/fund_center/data/jsonp.php/IO.XSRV2."
175
+ "CallbackList['cRrwseM7NWX68rDa']/NetValueReturn_Service.NetValueReturnCX"
176
+ )
167
177
  params = {
168
178
  "page": "1",
169
179
  "num": "1000",
170
180
  "sort": "zmjgm",
171
181
  "asc": "0",
172
182
  "ccode": "",
173
- "type2": '',
183
+ "type2": "",
174
184
  "type3": "",
175
185
  }
176
186
  r = requests.get(url, params=params)
177
187
  data_text = r.text
178
- data_json = demjson.decode(data_text[data_text.find("({") + 1: -2])
188
+ data_json = demjson.decode(data_text[data_text.find("({") + 1 : -2])
179
189
  temp_df = pd.DataFrame(data_json["data"])
180
190
  temp_df.reset_index(inplace=True)
181
191
  temp_df["index"] = range(1, len(temp_df) + 1)
@@ -234,5 +244,5 @@ if __name__ == "__main__":
234
244
  fund_scale_structured_sina_df = fund_scale_structured_sina()
235
245
  print(fund_scale_structured_sina_df)
236
246
 
237
- fund_scale_open_sina_df = fund_scale_open_sina(symbol='股票型基金')
247
+ fund_scale_open_sina_df = fund_scale_open_sina(symbol="股票型基金")
238
248
  print(fund_scale_open_sina_df)