akshare 1.13.46__py3-none-any.whl → 1.17.99__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 (388) hide show
  1. akshare/__init__.py +757 -161
  2. akshare/air/air_hebei.py +79 -53
  3. akshare/air/air_zhenqi.py +3 -7
  4. akshare/air/cons.py +1 -0
  5. akshare/air/crypto.js +1 -1
  6. akshare/air/outcrypto.js +1 -1
  7. akshare/air/sunrise_tad.py +32 -17
  8. akshare/article/cons.py +1 -0
  9. akshare/article/epu_index.py +4 -3
  10. akshare/article/ff_factor.py +19 -8
  11. akshare/article/fred_md.py +4 -1
  12. akshare/article/risk_rv.py +3 -8
  13. akshare/bank/bank_cbirc_2020.py +11 -11
  14. akshare/bank/cons.py +7 -6
  15. akshare/bond/bond_buy_back_em.py +228 -0
  16. akshare/bond/bond_cb_sina.py +1 -0
  17. akshare/bond/bond_cb_ths.py +17 -9
  18. akshare/bond/bond_cbond.py +19 -14
  19. akshare/bond/bond_china.py +38 -39
  20. akshare/bond/bond_china_money.py +75 -48
  21. akshare/bond/bond_convert.py +10 -9
  22. akshare/bond/bond_em.py +37 -17
  23. akshare/bond/bond_info_cm.py +28 -8
  24. akshare/bond/bond_issue_cninfo.py +73 -30
  25. akshare/bond/bond_summary.py +38 -37
  26. akshare/bond/bond_zh_cov.py +31 -40
  27. akshare/bond/bond_zh_sina.py +61 -51
  28. akshare/bond/cons.py +14 -11
  29. akshare/cal/__init__.py +0 -0
  30. akshare/cal/rv.py +170 -0
  31. akshare/cost/cost_living.py +7 -5
  32. akshare/crypto/__init__.py +1 -1
  33. akshare/crypto/crypto_bitcoin_cme.py +9 -7
  34. akshare/crypto/crypto_hold.py +4 -2
  35. akshare/currency/currency.py +1 -0
  36. akshare/currency/currency_china_bank_sina.py +11 -6
  37. akshare/currency/currency_safe.py +7 -6
  38. akshare/data/__init__.py +1 -1
  39. akshare/data/cninfo.js +1 -1
  40. akshare/datasets.py +10 -21
  41. akshare/economic/cons.py +10 -3
  42. akshare/economic/macro_australia.py +74 -69
  43. akshare/economic/macro_bank.py +95 -653
  44. akshare/economic/macro_canada.py +92 -81
  45. akshare/economic/macro_china.py +163 -117
  46. akshare/economic/macro_china_hk.py +0 -1
  47. akshare/economic/macro_china_nbs.py +24 -7
  48. akshare/economic/macro_euro.py +103 -56
  49. akshare/economic/macro_finance_ths.py +135 -0
  50. akshare/economic/macro_germany.py +1 -1
  51. akshare/economic/macro_info_ws.py +100 -0
  52. akshare/economic/macro_japan.py +0 -1
  53. akshare/economic/macro_other.py +1 -6
  54. akshare/economic/macro_swiss.py +2 -3
  55. akshare/economic/macro_uk.py +1 -1
  56. akshare/economic/macro_usa.py +7 -9
  57. akshare/economic/marco_cnbs.py +11 -6
  58. akshare/energy/energy_carbon.py +94 -126
  59. akshare/energy/energy_oil_em.py +1 -2
  60. akshare/event/cons.py +1 -0
  61. akshare/event/migration.py +3 -2
  62. akshare/exceptions.py +43 -0
  63. akshare/file_fold/calendar.json +245 -2
  64. akshare/forex/__init__.py +0 -0
  65. akshare/forex/cons.py +192 -0
  66. akshare/forex/forex_em.py +149 -0
  67. akshare/fortune/fortune_500.py +15 -48
  68. akshare/fortune/fortune_bloomberg.py +6 -3
  69. akshare/fortune/fortune_forbes_500.py +3 -6
  70. akshare/fortune/fortune_hurun.py +2 -1
  71. akshare/fortune/fortune_xincaifu_500.py +17 -14
  72. akshare/fund/fund_amac.py +38 -15
  73. akshare/fund/fund_announcement_em.py +145 -0
  74. akshare/fund/fund_aum_em.py +49 -35
  75. akshare/fund/fund_em.py +251 -220
  76. akshare/fund/fund_etf_em.py +44 -35
  77. akshare/fund/fund_etf_sina.py +76 -27
  78. akshare/fund/fund_etf_ths.py +95 -0
  79. akshare/fund/fund_fee_em.py +172 -0
  80. akshare/fund/fund_fhsp_em.py +42 -32
  81. akshare/fund/fund_init_em.py +8 -5
  82. akshare/fund/fund_lof_em.py +12 -19
  83. akshare/fund/fund_manager.py +25 -11
  84. akshare/fund/fund_overview_em.py +42 -0
  85. akshare/fund/fund_portfolio_em.py +78 -66
  86. akshare/fund/fund_position_lg.py +19 -8
  87. akshare/fund/fund_rank_em.py +90 -84
  88. akshare/fund/fund_rating.py +33 -12
  89. akshare/fund/fund_report_cninfo.py +63 -48
  90. akshare/fund/fund_scale_em.py +24 -13
  91. akshare/fund/fund_scale_sina.py +20 -10
  92. akshare/fund/fund_xq.py +3 -2
  93. akshare/futures/cons.py +141 -46
  94. akshare/futures/cot.py +89 -88
  95. akshare/futures/futures_basis.py +99 -33
  96. akshare/futures/futures_comex_em.py +1 -0
  97. akshare/futures/futures_comm_ctp.py +13 -2
  98. akshare/futures/futures_contract_detail.py +59 -9
  99. akshare/futures/futures_daily_bar.py +75 -62
  100. akshare/futures/futures_foreign.py +14 -8
  101. akshare/futures/futures_hf_em.py +215 -61
  102. akshare/futures/futures_hist_em.py +191 -0
  103. akshare/futures/futures_hq_sina.py +79 -61
  104. akshare/futures/futures_index_ccidx.py +24 -82
  105. akshare/futures/futures_inventory_99.py +70 -272
  106. akshare/futures/futures_inventory_em.py +14 -11
  107. akshare/futures/futures_news_shmet.py +2 -2
  108. akshare/futures/futures_roll_yield.py +11 -24
  109. akshare/futures/futures_rule.py +7 -3
  110. akshare/futures/futures_rule_em.py +38 -0
  111. akshare/futures/futures_settlement_price_sgx.py +21 -6
  112. akshare/futures/futures_stock_js.py +1 -2
  113. akshare/futures/futures_to_spot.py +43 -39
  114. akshare/futures/futures_warehouse_receipt.py +53 -48
  115. akshare/futures/futures_zh_sina.py +4 -4
  116. akshare/futures/receipt.py +298 -165
  117. akshare/futures/requests_fun.py +16 -3
  118. akshare/futures/symbol_var.py +32 -13
  119. akshare/futures_derivative/cons.py +100 -103
  120. akshare/futures_derivative/futures_contract_info_cffex.py +55 -39
  121. akshare/futures_derivative/futures_contract_info_czce.py +2 -0
  122. akshare/futures_derivative/futures_contract_info_dce.py +43 -17
  123. akshare/futures_derivative/futures_contract_info_gfex.py +43 -31
  124. akshare/futures_derivative/futures_contract_info_ine.py +43 -34
  125. akshare/futures_derivative/futures_contract_info_shfe.py +7 -8
  126. akshare/futures_derivative/futures_cot_sina.py +28 -19
  127. akshare/futures_derivative/futures_index_sina.py +25 -13
  128. akshare/fx/cons.py +12 -7
  129. akshare/fx/currency_investing.py +19 -285
  130. akshare/fx/fx_c_swap_cm.py +62 -0
  131. akshare/fx/fx_quote.py +3 -2
  132. akshare/fx/fx_quote_baidu.py +2 -1
  133. akshare/hf/__init__.py +1 -1
  134. akshare/hf/hf_sp500.py +8 -7
  135. akshare/index/cons.py +132 -28
  136. akshare/index/index_cflp.py +29 -26
  137. akshare/index/index_cni.py +89 -91
  138. akshare/index/index_cons.py +26 -10
  139. akshare/index/index_csindex.py +68 -0
  140. akshare/index/index_cx.py +263 -62
  141. akshare/index/index_drewry.py +17 -16
  142. akshare/index/index_eri.py +1 -0
  143. akshare/index/index_global_em.py +167 -0
  144. akshare/index/index_global_sina.py +82 -0
  145. akshare/index/index_kq_fz.py +17 -14
  146. akshare/index/index_kq_ss.py +1 -0
  147. akshare/index/index_option_qvix.py +351 -16
  148. akshare/index/index_research_sw.py +38 -38
  149. akshare/index/index_spot.py +9 -5
  150. akshare/index/index_stock_hk.py +6 -10
  151. akshare/index/index_stock_us_sina.py +1 -1
  152. akshare/index/index_stock_zh.py +193 -101
  153. akshare/index/index_stock_zh_csindex.py +15 -369
  154. akshare/index/index_sugar.py +18 -4
  155. akshare/index/index_sw.py +62 -34
  156. akshare/index/index_yw.py +53 -75
  157. akshare/index/index_zh_em.py +15 -82
  158. akshare/interest_rate/interbank_rate_em.py +14 -10
  159. akshare/movie/artist_yien.py +32 -5
  160. akshare/movie/jm.js +0 -1
  161. akshare/movie/movie_yien.py +92 -18
  162. akshare/movie/video_yien.py +28 -5
  163. akshare/news/__init__.py +1 -1
  164. akshare/news/news_baidu.py +395 -220
  165. akshare/news/news_cctv.py +38 -38
  166. akshare/news/news_stock.py +49 -13
  167. akshare/nlp/nlp_interface.py +7 -8
  168. akshare/option/cons.py +12 -12
  169. akshare/option/option_comm_qihuo.py +86 -0
  170. akshare/option/option_commodity.py +355 -211
  171. akshare/option/option_commodity_sina.py +22 -26
  172. akshare/option/option_contract_info_ctp.py +63 -0
  173. akshare/option/option_current_sse.py +61 -0
  174. akshare/option/option_current_szse.py +84 -0
  175. akshare/option/option_czce.py +37 -9
  176. akshare/option/option_daily_stats_sse_szse.py +145 -0
  177. akshare/option/option_em.py +4 -8
  178. akshare/option/option_finance.py +60 -12
  179. akshare/option/option_finance_sina.py +28 -26
  180. akshare/option/option_lhb_em.py +62 -57
  181. akshare/option/option_margin.py +62 -0
  182. akshare/option/option_premium_analysis_em.py +58 -53
  183. akshare/option/option_risk_analysis_em.py +11 -8
  184. akshare/option/option_risk_indicator_sse.py +18 -16
  185. akshare/option/option_value_analysis_em.py +62 -55
  186. akshare/other/__init__.py +1 -1
  187. akshare/other/other_car_cpca.py +20 -20
  188. akshare/pro/__init__.py +0 -1
  189. akshare/pro/client.py +6 -4
  190. akshare/pro/cons.py +3 -2
  191. akshare/pro/data_pro.py +6 -5
  192. akshare/qdii/__init__.py +0 -0
  193. akshare/qdii/qdii_jsl.py +233 -0
  194. akshare/qhkc/__init__.py +1 -6
  195. akshare/qhkc/qhkc_api.py +64 -22
  196. akshare/qhkc_web/__init__.py +1 -6
  197. akshare/qhkc_web/qhkc_fund.py +10 -6
  198. akshare/qhkc_web/qhkc_index.py +28 -14
  199. akshare/qhkc_web/qhkc_tool.py +62 -59
  200. akshare/rate/__init__.py +1 -1
  201. akshare/rate/repo_rate.py +36 -32
  202. akshare/reits/__init__.py +1 -1
  203. akshare/reits/reits_basic.py +149 -13
  204. akshare/request.py +117 -0
  205. akshare/spot/__init__.py +1 -1
  206. akshare/spot/spot_hog_soozhu.py +232 -0
  207. akshare/spot/spot_price_qh.py +121 -0
  208. akshare/spot/spot_sge.py +70 -9
  209. akshare/stock/cons.py +60 -23
  210. akshare/stock/stock_allotment_cninfo.py +10 -9
  211. akshare/stock/stock_ask_bid_em.py +3 -78
  212. akshare/stock/stock_board_concept_em.py +160 -35
  213. akshare/stock/stock_board_industry_em.py +163 -70
  214. akshare/stock/stock_cg_equity_mortgage.py +15 -11
  215. akshare/stock/stock_cg_guarantee.py +41 -51
  216. akshare/stock/stock_cg_lawsuit.py +36 -35
  217. akshare/stock/stock_dividend_cninfo.py +36 -16
  218. akshare/stock/stock_dzjy_em.py +347 -260
  219. akshare/stock/stock_fund_em.py +73 -64
  220. akshare/stock/stock_fund_hold.py +1 -2
  221. akshare/stock/stock_gsrl_em.py +1 -0
  222. akshare/stock/stock_hk_comparison_em.py +175 -0
  223. akshare/stock/stock_hk_famous.py +107 -0
  224. akshare/stock/stock_hk_fhpx_ths.py +2 -1
  225. akshare/stock/stock_hk_hot_rank_em.py +1 -0
  226. akshare/stock/stock_hk_sina.py +91 -42
  227. akshare/stock/stock_hold_control_cninfo.py +100 -15
  228. akshare/stock/stock_hold_control_em.py +4 -5
  229. akshare/stock/stock_hold_num_cninfo.py +18 -12
  230. akshare/stock/stock_hot_rank_em.py +4 -1
  231. akshare/stock/stock_hot_search_baidu.py +32 -19
  232. akshare/stock/stock_hot_up_em.py +4 -1
  233. akshare/stock/stock_hsgt_em.py +155 -0
  234. akshare/stock/stock_industry.py +1 -0
  235. akshare/stock/stock_industry_cninfo.py +25 -20
  236. akshare/stock/stock_industry_pe_cninfo.py +45 -31
  237. akshare/stock/stock_industry_sw.py +5 -9
  238. akshare/stock/stock_info.py +31 -19
  239. akshare/stock/stock_info_em.py +17 -11
  240. akshare/stock/stock_intraday_em.py +9 -80
  241. akshare/stock/stock_intraday_sina.py +2 -2
  242. akshare/stock/stock_ipo_summary_cninfo.py +25 -10
  243. akshare/stock/stock_new_cninfo.py +32 -19
  244. akshare/stock/stock_news_cx.py +39 -0
  245. akshare/stock/stock_profile_cninfo.py +9 -8
  246. akshare/stock/stock_profile_em.py +302 -0
  247. akshare/stock/stock_rank_forecast.py +8 -6
  248. akshare/stock/stock_repurchase_em.py +7 -2
  249. akshare/stock/stock_share_changes_cninfo.py +18 -14
  250. akshare/stock/stock_share_hold.py +24 -20
  251. akshare/stock/stock_stop.py +6 -6
  252. akshare/stock/stock_summary.py +153 -417
  253. akshare/stock/stock_us_famous.py +19 -11
  254. akshare/stock/stock_us_js.py +3 -2
  255. akshare/stock/stock_us_pink.py +38 -27
  256. akshare/stock/stock_us_sina.py +15 -12
  257. akshare/stock/stock_weibo_nlp.py +18 -20
  258. akshare/stock/stock_xq.py +36 -9
  259. akshare/stock/stock_zh_a_sina.py +58 -80
  260. akshare/stock/stock_zh_a_special.py +240 -243
  261. akshare/stock/stock_zh_a_tick_tx.py +11 -3
  262. akshare/stock/stock_zh_ah_tx.py +23 -26
  263. akshare/stock/stock_zh_b_sina.py +32 -55
  264. akshare/stock/stock_zh_comparison_em.py +250 -0
  265. akshare/stock/stock_zh_kcb_report.py +11 -9
  266. akshare/stock/stock_zh_kcb_sina.py +67 -64
  267. akshare/stock_a/__init__.py +0 -0
  268. akshare/stock_a/stock_board_concept_name_em.py +170 -0
  269. akshare/stock_a/stock_individual_fund_flow_rank.py +258 -0
  270. akshare/stock_a/stock_zh_a_spot.py +212 -0
  271. akshare/stock_feature/cons.py +1 -0
  272. akshare/stock_feature/stock_a_below_net_asset_statistics.py +5 -2
  273. akshare/stock_feature/stock_a_high_low.py +5 -2
  274. akshare/stock_feature/stock_a_indicator.py +15 -57
  275. akshare/stock_feature/stock_a_pe_and_pb.py +39 -9
  276. akshare/stock_feature/stock_account_em.py +0 -1
  277. akshare/stock_feature/stock_all_pb.py +2 -1
  278. akshare/stock_feature/stock_analyst_em.py +36 -30
  279. akshare/stock_feature/stock_board_concept_ths.py +144 -252
  280. akshare/stock_feature/stock_board_industry_ths.py +137 -401
  281. akshare/stock_feature/stock_buffett_index_lg.py +10 -8
  282. akshare/stock_feature/stock_classify_sina.py +3 -6
  283. akshare/stock_feature/stock_comment_em.py +81 -144
  284. akshare/stock_feature/stock_concept_futu.py +183 -0
  285. akshare/stock_feature/stock_congestion_lg.py +2 -1
  286. akshare/stock_feature/stock_cyq_em.py +5 -11
  287. akshare/stock_feature/stock_disclosure_cninfo.py +20 -10
  288. akshare/stock_feature/stock_dxsyl_em.py +121 -74
  289. akshare/stock_feature/stock_ebs_lg.py +5 -4
  290. akshare/stock_feature/stock_esg_sina.py +33 -15
  291. akshare/stock_feature/stock_fhps_em.py +62 -26
  292. akshare/stock_feature/stock_fhps_ths.py +34 -7
  293. akshare/stock_feature/stock_fund_flow.py +38 -25
  294. akshare/stock_feature/stock_gddh_em.py +19 -11
  295. akshare/stock_feature/stock_gdfx_em.py +226 -113
  296. akshare/stock_feature/stock_gdhs.py +75 -50
  297. akshare/stock_feature/stock_gdzjc_em.py +21 -10
  298. akshare/stock_feature/stock_gpzy_em.py +78 -46
  299. akshare/stock_feature/stock_gxl_lg.py +3 -2
  300. akshare/stock_feature/stock_hist_em.py +158 -237
  301. akshare/stock_feature/stock_hist_tx.py +13 -10
  302. akshare/stock_feature/stock_hk_valuation_baidu.py +20 -8
  303. akshare/stock_feature/stock_hot_xq.py +4 -6
  304. akshare/stock_feature/stock_hsgt_em.py +269 -97
  305. akshare/stock_feature/stock_hsgt_exchange_rate.py +115 -87
  306. akshare/stock_feature/stock_hsgt_min_em.py +13 -16
  307. akshare/stock_feature/stock_info.py +8 -81
  308. akshare/stock_feature/stock_inner_trade_xq.py +38 -31
  309. akshare/stock_feature/stock_irm_cninfo.py +32 -9
  310. akshare/stock_feature/stock_jgdy_em.py +43 -40
  311. akshare/stock_feature/stock_lh_yybpm.py +36 -37
  312. akshare/stock_feature/stock_lhb_em.py +165 -35
  313. akshare/stock_feature/stock_lhb_sina.py +93 -46
  314. akshare/stock_feature/stock_margin_em.py +101 -0
  315. akshare/stock_feature/{stock_sse_margin.py → stock_margin_sse.py} +21 -17
  316. akshare/stock_feature/{stock_szse_margin.py → stock_margin_szse.py} +7 -7
  317. akshare/stock_feature/stock_market_legu.py +4 -2
  318. akshare/stock_feature/stock_pankou_em.py +71 -35
  319. akshare/stock_feature/stock_qsjy_em.py +13 -4
  320. akshare/stock_feature/stock_report_em.py +152 -8
  321. akshare/stock_feature/stock_research_report_em.py +55 -20
  322. akshare/stock_feature/stock_sns_sseinfo.py +15 -12
  323. akshare/stock_feature/stock_sy_em.py +20 -15
  324. akshare/stock_feature/stock_technology_ths.py +152 -120
  325. akshare/stock_feature/stock_tfp_em.py +37 -14
  326. akshare/stock_feature/stock_three_report_em.py +120 -78
  327. akshare/stock_feature/stock_ttm_lyr.py +18 -9
  328. akshare/stock_feature/stock_value_em.py +83 -0
  329. akshare/stock_feature/stock_yjbb_em.py +58 -32
  330. akshare/stock_feature/stock_yjyg_cninfo.py +6 -2
  331. akshare/stock_feature/stock_yjyg_em.py +1 -1
  332. akshare/stock_feature/stock_yzxdr_em.py +24 -22
  333. akshare/stock_feature/stock_zdhtmx_em.py +20 -6
  334. akshare/stock_feature/stock_zh_valuation_baidu.py +3 -2
  335. akshare/stock_feature/stock_zh_vote_baidu.py +4 -1
  336. akshare/stock_feature/stock_ztb_em.py +39 -24
  337. akshare/stock_fundamental/__init__.py +1 -1
  338. akshare/stock_fundamental/stock_basic_info_xq.py +119 -0
  339. akshare/stock_fundamental/{stock_finance_hk.py → stock_finance_hk_em.py} +23 -16
  340. akshare/stock_fundamental/{stock_finance.py → stock_finance_sina.py} +203 -59
  341. akshare/stock_fundamental/stock_finance_ths.py +524 -57
  342. akshare/stock_fundamental/stock_finance_us_em.py +268 -0
  343. akshare/stock_fundamental/stock_gbjg_em.py +80 -0
  344. akshare/stock_fundamental/stock_hold.py +26 -17
  345. akshare/stock_fundamental/stock_ipo_declare.py +1 -0
  346. akshare/stock_fundamental/stock_kcb_detail_sse.py +10 -10
  347. akshare/stock_fundamental/stock_kcb_sse.py +26 -25
  348. akshare/stock_fundamental/stock_notice.py +41 -18
  349. akshare/stock_fundamental/stock_profit_forecast_em.py +31 -13
  350. akshare/stock_fundamental/stock_profit_forecast_hk_etnet.py +64 -41
  351. akshare/stock_fundamental/stock_profit_forecast_ths.py +86 -35
  352. akshare/stock_fundamental/stock_recommend.py +20 -4
  353. akshare/stock_fundamental/stock_register_em.py +448 -0
  354. akshare/stock_fundamental/stock_zygc.py +5 -62
  355. akshare/tool/trade_date_hist.py +1 -1
  356. akshare/utils/context.py +43 -0
  357. akshare/utils/demjson.py +2009 -1338
  358. akshare/utils/func.py +49 -2
  359. akshare/utils/multi_decrypt.py +53 -0
  360. akshare/utils/token_process.py +6 -5
  361. akshare/utils/tqdm.py +13 -3
  362. {akshare-1.13.46.dist-info → akshare-1.17.99.dist-info}/METADATA +56 -86
  363. akshare-1.17.99.dist-info/RECORD +409 -0
  364. {akshare-1.13.46.dist-info → akshare-1.17.99.dist-info}/WHEEL +1 -1
  365. {akshare-1.13.46.dist-info → akshare-1.17.99.dist-info/licenses}/LICENSE +1 -1
  366. tests/test_func.py +3 -5
  367. akshare/bond/bond_futures.py +0 -50
  368. akshare/bond/bond_investing.py +0 -139
  369. akshare/crypto/crypto_hist_investing.py +0 -249
  370. akshare/fortune/fortune_it_juzi.py +0 -123
  371. akshare/fund/fund_announcement.py +0 -56
  372. akshare/futures/futures_international.py +0 -170
  373. akshare/futures/futures_news_baidu.py +0 -54
  374. akshare/futures/inventory_data.py +0 -100
  375. akshare/futures_derivative/futures_index_price_nh.py +0 -61
  376. akshare/futures_derivative/futures_index_return_nh.py +0 -47
  377. akshare/futures_derivative/futures_index_volatility_nh.py +0 -51
  378. akshare/futures_derivative/futures_other_index_nh.py +0 -145
  379. akshare/index/index_fear_greed_funddb.py +0 -78
  380. akshare/index/index_investing.py +0 -232
  381. akshare/sport/__init__.py +0 -6
  382. akshare/sport/sport_olympic.py +0 -27
  383. akshare/sport/sport_olympic_winter.py +0 -39
  384. akshare/stock_feature/stock_wencai.py +0 -104
  385. akshare/stock_fundamental/stock_mda_ym.py +0 -40
  386. akshare/stock_fundamental/stock_register.py +0 -292
  387. akshare-1.13.46.dist-info/RECORD +0 -380
  388. {akshare-1.13.46.dist-info → akshare-1.17.99.dist-info}/top_level.txt +0 -0
@@ -1,23 +1,26 @@
1
1
  # -*- coding:utf-8 -*-
2
2
  # !/usr/bin/env python
3
3
  """
4
- Date: 2022/12/13 14:18
4
+ Date: 2025/11/19 12:00
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
11
12
 
12
13
 
13
- def fund_fh_em() -> pd.DataFrame:
14
+ def fund_fh_em(year: str = "2025") -> pd.DataFrame:
14
15
  """
15
16
  天天基金网-基金数据-分红送配-基金分红
16
17
  https://fund.eastmoney.com/data/fundfenhong.html#DJR,desc,1,,,
18
+ :param year: 查询年份
19
+ :type year: str
17
20
  :return: 基金分红
18
21
  :rtype: pandas.DataFrame
19
22
  """
20
- url = "http://fund.eastmoney.com/Data/funddataIndex_Interface.aspx"
23
+ url = "https://fund.eastmoney.com/Data/funddataIndex_Interface.aspx"
21
24
  params = {
22
25
  "dt": "8",
23
26
  "page": "1",
@@ -25,21 +28,21 @@ def fund_fh_em() -> pd.DataFrame:
25
28
  "sort": "asc",
26
29
  "gs": "",
27
30
  "ftype": "",
28
- "year": "",
31
+ "year": year,
29
32
  }
30
33
  r = requests.get(url, params=params)
31
34
  data_text = r.text
32
35
  total_page = eval(data_text[data_text.find("=") + 1: data_text.find(";")])[0]
33
36
  big_df = pd.DataFrame()
34
37
  for page in tqdm(range(1, total_page + 1), leave=False):
35
- params.update({"page": page})
38
+ params.update({"page": str(page)})
36
39
  r = requests.get(url, params=params)
37
40
  data_text = r.text
38
41
  temp_list = eval(
39
42
  data_text[data_text.find("[["): data_text.find(";var jjfh_jjgs")]
40
43
  )
41
44
  temp_df = pd.DataFrame(temp_list)
42
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
45
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
43
46
  big_df.reset_index(inplace=True)
44
47
  big_df["index"] = big_df.index + 1
45
48
  big_df.columns = [
@@ -52,22 +55,26 @@ def fund_fh_em() -> pd.DataFrame:
52
55
  "分红发放日",
53
56
  "-",
54
57
  ]
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['分红'])
58
+ big_df = big_df[
59
+ ["序号", "基金代码", "基金简称", "权益登记日", "除息日期", "分红", "分红发放日"]
60
+ ]
61
+ big_df["权益登记日"] = pd.to_datetime(big_df["权益登记日"]).dt.date
62
+ big_df["除息日期"] = pd.to_datetime(big_df["除息日期"]).dt.date
63
+ big_df["分红发放日"] = pd.to_datetime(big_df["分红发放日"]).dt.date
64
+ big_df["分红"] = pd.to_numeric(big_df["分红"])
60
65
  return big_df
61
66
 
62
67
 
63
- def fund_cf_em() -> pd.DataFrame:
68
+ def fund_cf_em(year: str = "2025") -> pd.DataFrame:
64
69
  """
65
70
  天天基金网-基金数据-分红送配-基金拆分
66
71
  https://fund.eastmoney.com/data/fundchaifen.html#FSRQ,desc,1,,,
72
+ :param year: 查询年份
73
+ :type year: str
67
74
  :return: 基金拆分
68
75
  :rtype: pandas.DataFrame
69
76
  """
70
- url = "http://fund.eastmoney.com/Data/funddataIndex_Interface.aspx"
77
+ url = "https://fund.eastmoney.com/Data/funddataIndex_Interface.aspx"
71
78
  params = {
72
79
  "dt": "9",
73
80
  "page": "1",
@@ -75,24 +82,24 @@ def fund_cf_em() -> pd.DataFrame:
75
82
  "sort": "desc",
76
83
  "gs": "",
77
84
  "ftype": "",
78
- "year": "",
85
+ "year": year,
79
86
  }
80
87
  r = requests.get(url, params=params)
81
88
  data_text = r.text
82
89
  total_page = eval(data_text[data_text.find("=") + 1: data_text.find(";")])[0]
83
90
  big_df = pd.DataFrame()
84
91
  for page in tqdm(range(1, total_page + 1), leave=False):
85
- params.update({"page": page})
92
+ params.update({"page": str(page)})
86
93
  r = requests.get(url, params=params)
87
94
  data_text = r.text
88
95
  temp_str = data_text[data_text.find("[["): data_text.find(";var jjcf_jjgs")]
89
96
  if temp_str:
90
97
  temp_list = eval(temp_str)
91
98
  temp_df = pd.DataFrame(temp_list)
92
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
99
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
93
100
 
94
101
  big_df.reset_index(inplace=True)
95
- big_df.loc[:, 'index'] = big_df['index'] + 1
102
+ big_df.loc[:, "index"] = big_df["index"] + 1
96
103
  big_df.columns = [
97
104
  "序号",
98
105
  "基金代码",
@@ -102,9 +109,11 @@ def fund_cf_em() -> pd.DataFrame:
102
109
  "拆分折算",
103
110
  "-",
104
111
  ]
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")
112
+ big_df = big_df[
113
+ ["序号", "基金代码", "基金简称", "拆分折算日", "拆分类型", "拆分折算"]
114
+ ]
115
+ big_df["拆分折算日"] = pd.to_datetime(big_df["拆分折算日"]).dt.date
116
+ big_df["拆分折算"] = pd.to_numeric(big_df["拆分折算"], errors="coerce")
108
117
  return big_df
109
118
 
110
119
 
@@ -115,7 +124,7 @@ def fund_fh_rank_em() -> pd.DataFrame:
115
124
  :return: 基金分红排行
116
125
  :rtype: pandas.DataFrame
117
126
  """
118
- url = "http://fund.eastmoney.com/Data/funddataIndex_Interface.aspx"
127
+ url = "https://fund.eastmoney.com/Data/funddataIndex_Interface.aspx"
119
128
  params = {
120
129
  "dt": "10",
121
130
  "page": "1",
@@ -123,24 +132,23 @@ def fund_fh_rank_em() -> pd.DataFrame:
123
132
  "sort": "desc",
124
133
  "gs": "",
125
134
  "ftype": "",
126
- "year": "",
127
135
  }
128
136
  r = requests.get(url, params=params)
129
137
  data_text = r.text
130
138
  total_page = eval(data_text[data_text.find("=") + 1: data_text.find(";")])[0]
131
139
  big_df = pd.DataFrame()
132
140
  for page in tqdm(range(1, total_page + 1), leave=False):
133
- params.update({"page": page})
141
+ params.update({"page": str(page)})
134
142
  r = requests.get(url, params=params)
135
143
  data_text = r.text
136
144
  temp_list = eval(
137
145
  data_text[data_text.find("[["): data_text.find(";var fhph_jjgs")]
138
146
  )
139
147
  temp_df = pd.DataFrame(temp_list)
140
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
148
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
141
149
 
142
150
  big_df.reset_index(inplace=True)
143
- big_df.loc[:, "index"] = big_df.index + 1
151
+ big_df["index"] = big_df.index + 1
144
152
  big_df.columns = [
145
153
  "序号",
146
154
  "基金代码",
@@ -150,18 +158,20 @@ def fund_fh_rank_em() -> pd.DataFrame:
150
158
  "成立日期",
151
159
  "-",
152
160
  ]
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")
161
+ big_df = big_df[
162
+ ["序号", "基金代码", "基金简称", "累计分红", "累计次数", "成立日期"]
163
+ ]
164
+ big_df["成立日期"] = pd.to_datetime(big_df["成立日期"]).dt.date
165
+ big_df["累计分红"] = pd.to_numeric(big_df["累计分红"], errors="coerce")
166
+ big_df["累计次数"] = pd.to_numeric(big_df["累计次数"], errors="coerce")
157
167
  return big_df
158
168
 
159
169
 
160
- if __name__ == '__main__':
161
- fund_fh_em_df = fund_fh_em()
170
+ if __name__ == "__main__":
171
+ fund_fh_em_df = fund_fh_em(year="2025")
162
172
  print(fund_fh_em_df)
163
173
 
164
- fund_cf_em_df = fund_cf_em()
174
+ fund_cf_em_df = fund_cf_em(year="2025")
165
175
  print(fund_cf_em_df)
166
176
 
167
177
  fund_fh_rank_em_df = fund_fh_rank_em()
@@ -5,6 +5,7 @@ Date: 2023/11/7 18:30
5
5
  Desc: 基金数据-新发基金-新成立基金
6
6
  https://fund.eastmoney.com/data/xinfound.html
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
@@ -67,11 +68,13 @@ def fund_new_found_em() -> pd.DataFrame:
67
68
  "优惠费率",
68
69
  ]
69
70
  ]
70
- temp_df['募集份额'] = pd.to_numeric(temp_df['募集份额'], errors="coerce")
71
- temp_df['成立日期'] = pd.to_datetime(temp_df['成立日期'], errors="coerce").dt.date
72
- temp_df['成立来涨幅'] = pd.to_numeric(temp_df['成立来涨幅'].str.replace(',', ''), errors="coerce")
73
- temp_df['优惠费率'] = temp_df['优惠费率'].str.strip("%")
74
- temp_df['优惠费率'] = pd.to_numeric(temp_df['优惠费率'], errors="coerce")
71
+ temp_df["募集份额"] = pd.to_numeric(temp_df["募集份额"], errors="coerce")
72
+ temp_df["成立日期"] = pd.to_datetime(temp_df["成立日期"], errors="coerce").dt.date
73
+ temp_df["成立来涨幅"] = pd.to_numeric(
74
+ temp_df["成立来涨幅"].str.replace(",", ""), errors="coerce"
75
+ )
76
+ temp_df["优惠费率"] = temp_df["优惠费率"].str.strip("%")
77
+ temp_df["优惠费率"] = pd.to_numeric(temp_df["优惠费率"], errors="coerce")
75
78
  return temp_df
76
79
 
77
80
 
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/3/20 15:00
4
+ Date: 2025/3/11 17:00
5
5
  Desc: 东方财富-LOF 行情
6
6
  https://quote.eastmoney.com/center/gridlist.html#fund_lof
7
7
  https://quote.eastmoney.com/sz166009.html
@@ -12,6 +12,8 @@ from functools import lru_cache
12
12
  import pandas as pd
13
13
  import requests
14
14
 
15
+ from akshare.utils.func import fetch_paginated_data
16
+
15
17
 
16
18
  @lru_cache()
17
19
  def _fund_lof_code_id_map_em() -> dict:
@@ -24,21 +26,18 @@ def _fund_lof_code_id_map_em() -> dict:
24
26
  url = "https://2.push2.eastmoney.com/api/qt/clist/get"
25
27
  params = {
26
28
  "pn": "1",
27
- "pz": "5000",
29
+ "pz": "100",
28
30
  "po": "1",
29
31
  "np": "1",
30
32
  "ut": "bd1d9ddb04089700cf9c27f6f7426281",
31
33
  "fltt": "2",
32
34
  "invt": "2",
33
35
  "wbp2u": "|0|0|0|web",
34
- "fid": "f3",
36
+ "fid": "f12",
35
37
  "fs": "b:MK0404,b:MK0405,b:MK0406,b:MK0407",
36
- "fields": "f12,f13",
37
- "_": "1672806290972",
38
+ "fields": "f3,f12,f13",
38
39
  }
39
- r = requests.get(url, params=params)
40
- data_json = r.json()
41
- temp_df = pd.DataFrame(data_json["data"]["diff"])
40
+ temp_df = fetch_paginated_data(url, params)
42
41
  temp_dict = dict(zip(temp_df["f12"], temp_df["f13"]))
43
42
  return temp_dict
44
43
 
@@ -53,7 +52,7 @@ def fund_lof_spot_em() -> pd.DataFrame:
53
52
  url = "https://88.push2.eastmoney.com/api/qt/clist/get"
54
53
  params = {
55
54
  "pn": "1",
56
- "pz": "5000",
55
+ "pz": "100",
57
56
  "po": "1",
58
57
  "np": "1",
59
58
  "ut": "bd1d9ddb04089700cf9c27f6f7426281",
@@ -64,11 +63,8 @@ def fund_lof_spot_em() -> pd.DataFrame:
64
63
  "fs": "b:MK0404,b:MK0405,b:MK0406,b:MK0407",
65
64
  "fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,"
66
65
  "f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152",
67
- "_": "1672806290972",
68
66
  }
69
- r = requests.get(url, params=params)
70
- data_json = r.json()
71
- temp_df = pd.DataFrame(data_json["data"]["diff"])
67
+ temp_df = fetch_paginated_data(url, params)
72
68
  temp_df.rename(
73
69
  columns={
74
70
  "f12": "代码",
@@ -157,7 +153,6 @@ def fund_lof_hist_em(
157
153
  "secid": f"{code_id_dict[symbol]}.{symbol}",
158
154
  "beg": start_date,
159
155
  "end": end_date,
160
- "_": "1623766962675",
161
156
  }
162
157
  r = requests.get(url, params=params)
163
158
  data_json = r.json()
@@ -230,7 +225,6 @@ def fund_lof_hist_min_em(
230
225
  "ndays": "5",
231
226
  "iscr": "0",
232
227
  "secid": f"{code_id_dict[symbol]}.{symbol}",
233
- "_": "1623766962675",
234
228
  }
235
229
  r = requests.get(url, params=params)
236
230
  data_json = r.json()
@@ -270,7 +264,6 @@ def fund_lof_hist_min_em(
270
264
  "secid": f"{code_id_dict[symbol]}.{symbol}",
271
265
  "beg": "0",
272
266
  "end": "20500000",
273
- "_": "1630930917857",
274
267
  }
275
268
  r = requests.get(url, params=params)
276
269
  data_json = r.json()
@@ -348,7 +341,7 @@ if __name__ == "__main__":
348
341
  symbol="166009",
349
342
  period="daily",
350
343
  start_date="20000101",
351
- end_date="20230703",
344
+ end_date="20250311",
352
345
  adjust="hfq",
353
346
  )
354
347
  print(fund_lof_hist_em_df)
@@ -357,7 +350,7 @@ if __name__ == "__main__":
357
350
  symbol="166009",
358
351
  period="1",
359
352
  adjust="",
360
- start_date="2024-03-20 09:30:00",
361
- end_date="2024-03-20 14:40:00",
353
+ start_date="2025-03-11 09:30:00",
354
+ end_date="2025-03-11 14:40:00",
362
355
  )
363
356
  print(fund_lof_hist_min_em_df)
@@ -1,15 +1,16 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2023/11/5 20:00
4
+ Date: 2025/9/14 18:00
5
5
  Desc: 基金经理大全
6
6
  https://fund.eastmoney.com/manager/default.html
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
- from tqdm import tqdm
11
11
 
12
12
  from akshare.utils import demjson
13
+ from akshare.utils.tqdm import get_tqdm
13
14
 
14
15
 
15
16
  def fund_manager_em() -> pd.DataFrame:
@@ -34,10 +35,13 @@ def fund_manager_em() -> pd.DataFrame:
34
35
  data_text = r.text
35
36
  data_json = demjson.decode(data_text.strip("var returnjson= "))
36
37
  total_page = data_json["pages"]
38
+ tqdm = get_tqdm()
37
39
  for page in tqdm(range(1, total_page + 1), leave=False):
38
- params.update({
39
- "pi": page,
40
- })
40
+ params.update(
41
+ {
42
+ "pi": page,
43
+ }
44
+ )
41
45
  r = requests.get(url, params=params)
42
46
  data_text = r.text
43
47
  data_json = demjson.decode(data_text.strip("var returnjson= "))
@@ -51,7 +55,7 @@ def fund_manager_em() -> pd.DataFrame:
51
55
  "姓名",
52
56
  "_",
53
57
  "所属公司",
54
- "_",
58
+ "现任基金代码",
55
59
  "现任基金",
56
60
  "累计从业时间",
57
61
  "现任基金最佳回报",
@@ -65,19 +69,29 @@ def fund_manager_em() -> pd.DataFrame:
65
69
  "序号",
66
70
  "姓名",
67
71
  "所属公司",
72
+ "现任基金代码",
68
73
  "现任基金",
69
74
  "累计从业时间",
70
75
  "现任基金资产总规模",
71
76
  "现任基金最佳回报",
72
77
  ]
73
78
  ]
74
- big_df["现任基金最佳回报"] = big_df["现任基金最佳回报"].str.split("%", expand=True).iloc[:, 0]
75
- big_df["现任基金资产总规模"] = big_df["现任基金资产总规模"].str.split("亿元", expand=True).iloc[:, 0]
79
+ big_df["现任基金最佳回报"] = (
80
+ big_df["现任基金最佳回报"].str.split("%", expand=True).iloc[:, 0]
81
+ )
82
+ big_df["现任基金资产总规模"] = (
83
+ big_df["现任基金资产总规模"].str.split("亿元", expand=True).iloc[:, 0]
84
+ )
76
85
  big_df["累计从业时间"] = pd.to_numeric(big_df["累计从业时间"], errors="coerce")
77
- big_df["现任基金最佳回报"] = pd.to_numeric(big_df["现任基金最佳回报"], errors="coerce")
78
- big_df["现任基金资产总规模"] = pd.to_numeric(big_df["现任基金资产总规模"], errors="coerce")
86
+ big_df["现任基金最佳回报"] = pd.to_numeric(
87
+ big_df["现任基金最佳回报"], errors="coerce"
88
+ )
89
+ big_df["现任基金资产总规模"] = pd.to_numeric(
90
+ big_df["现任基金资产总规模"], errors="coerce"
91
+ )
92
+ big_df["现任基金代码"] = big_df["现任基金代码"].apply(lambda x: x.split(","))
79
93
  big_df["现任基金"] = big_df["现任基金"].apply(lambda x: x.split(","))
80
- big_df = big_df.explode(column="现任基金")
94
+ big_df = big_df.explode(column=["现任基金代码", "现任基金"])
81
95
  big_df.reset_index(drop=True, inplace=True)
82
96
  return big_df
83
97
 
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding:utf-8 -*-
3
+ """
4
+ Date: 2025/9/16 21:00
5
+ Desc: 天天基金-基金档案
6
+ https://fundf10.eastmoney.com/jbgk_015641.html
7
+ """
8
+ from io import StringIO
9
+
10
+ import pandas as pd
11
+ import requests
12
+
13
+
14
+ def fund_overview_em(symbol: str = "015641") -> pd.DataFrame:
15
+ """
16
+ 天天基金-基金档案-基本概况
17
+ https://fundf10.eastmoney.com/jbgk_015641.html
18
+ :param symbol: 基金代码
19
+ :type symbol: str
20
+ :return: 基本概况
21
+ :rtype: pandas.DataFrame
22
+ """
23
+ url = f"https://fundf10.eastmoney.com/jbgk_{symbol}.html"
24
+ r = requests.get(url)
25
+ html_content = pd.read_html(StringIO(r.text))
26
+
27
+ if len(html_content) == 0:
28
+ temp_df = pd.DataFrame([])
29
+ else:
30
+ df_dict = {}
31
+ # 最后一个表格的数据是我们想要的,按照Key-Value的形式存储
32
+ for _, row in html_content[-1].iterrows():
33
+ df_dict[row[0]] = row[1]
34
+ df_dict[row[2]] = row[3]
35
+ temp_df = pd.DataFrame([df_dict])
36
+
37
+ return temp_df
38
+
39
+
40
+ if __name__ == "__main__":
41
+ fund_overview_em_df = fund_overview_em(symbol="015641")
42
+ print(fund_overview_em_df)