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,10 +1,11 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/1/25 18:00
4
+ Date: 2024/6/7 20:00
5
5
  Desc: 天天基金网-基金档案-投资组合
6
6
  https://fundf10.eastmoney.com/ccmx_000001.html
7
7
  """
8
+
8
9
  from io import StringIO
9
10
 
10
11
  import pandas as pd
@@ -14,9 +15,7 @@ from bs4 import BeautifulSoup
14
15
  from akshare.utils import demjson
15
16
 
16
17
 
17
- def fund_portfolio_hold_em(
18
- symbol: str = "000001", date: str = "2023"
19
- ) -> pd.DataFrame:
18
+ def fund_portfolio_hold_em(symbol: str = "000001", date: str = "2024") -> pd.DataFrame:
20
19
  """
21
20
  天天基金网-基金档案-投资组合-基金持仓
22
21
  https://fundf10.eastmoney.com/ccmx_000001.html
@@ -27,7 +26,7 @@ def fund_portfolio_hold_em(
27
26
  :return: 基金持仓
28
27
  :rtype: pandas.DataFrame
29
28
  """
30
- url = "http://fundf10.eastmoney.com/FundArchivesDatas.aspx"
29
+ url = "https://fundf10.eastmoney.com/FundArchivesDatas.aspx"
31
30
  params = {
32
31
  "type": "jjcc",
33
32
  "code": symbol,
@@ -38,59 +37,70 @@ def fund_portfolio_hold_em(
38
37
  }
39
38
  r = requests.get(url, params=params)
40
39
  data_text = r.text
41
- data_json = demjson.decode(data_text[data_text.find("{"): -1])
42
- soup = BeautifulSoup(data_json["content"], "lxml")
40
+ data_json = demjson.decode(data_text[data_text.find("{") : -1])
41
+ soup = BeautifulSoup(data_json["content"], features="lxml")
43
42
  item_label = [
44
43
  item.text.split("\xa0\xa0")[1]
45
- for item in soup.find_all("h4", attrs={"class": "t"})
44
+ for item in soup.find_all(name="h4", attrs={"class": "t"})
46
45
  ]
47
- big_df = pd.DataFrame()
46
+
47
+ column_name = [
48
+ "序号",
49
+ "股票代码",
50
+ "股票名称",
51
+ "占净值比例",
52
+ "持股数",
53
+ "持仓市值",
54
+ "季度",
55
+ ]
56
+ big_df = pd.DataFrame(columns=column_name)
57
+
48
58
  for item in range(len(item_label)):
49
- temp_df = pd.read_html(StringIO(data_json["content"]), converters={"股票代码": str})[
50
- item
51
- ]
59
+ temp_df = pd.read_html(
60
+ StringIO(data_json["content"]), converters={"股票代码": str}
61
+ )[item]
52
62
  del temp_df["相关资讯"]
53
- temp_df.rename(
54
- columns={"占净值 比例": "占净值比例"}, inplace=True
55
- )
63
+ temp_df.rename(columns={"占净值 比例": "占净值比例"}, inplace=True)
56
64
  temp_df["占净值比例"] = (
57
65
  temp_df["占净值比例"].str.split("%", expand=True).iloc[:, 0]
58
66
  )
59
67
  temp_df.rename(
60
- columns={"持股数(万股)": "持股数", "持仓市值(万元)": "持仓市值"}, inplace=True
68
+ columns={"持股数(万股)": "持股数", "持仓市值(万元)": "持仓市值"},
69
+ inplace=True,
61
70
  )
62
71
  temp_df.rename(
63
- columns={"持股数 (万股)": "持股数", "持仓市值 (万元)": "持仓市值"}, inplace=True
72
+ columns={"持股数 (万股)": "持股数", "持仓市值 (万元)": "持仓市值"},
73
+ inplace=True,
64
74
  )
65
75
  temp_df.rename(
66
- columns={"持股数(万股)": "持股数", "持仓市值(万元人民币)": "持仓市值"}, inplace=True
76
+ columns={"持股数(万股)": "持股数", "持仓市值(万元人民币)": "持仓市值"},
77
+ inplace=True,
67
78
  )
68
79
  temp_df.rename(
69
- columns={"持股数 (万股)": "持股数", "持仓市值 (万元人民币)": "持仓市值"}, inplace=True
80
+ columns={
81
+ "持股数 (万股)": "持股数",
82
+ "持仓市值 (万元人民币)": "持仓市值",
83
+ },
84
+ inplace=True,
70
85
  )
71
86
 
72
87
  temp_df["季度"] = item_label[item]
73
- temp_df = temp_df[
74
- [
75
- "序号",
76
- "股票代码",
77
- "股票名称",
78
- "占净值比例",
79
- "持股数",
80
- "持仓市值",
81
- "季度",
82
- ]
83
- ]
84
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
85
- big_df["占净值比例"] = pd.to_numeric(big_df["占净值比例"], errors="coerce")
86
- big_df["持股数"] = pd.to_numeric(big_df["持股数"], errors="coerce")
87
- big_df["持仓市值"] = pd.to_numeric(big_df["持仓市值"], errors="coerce")
88
- big_df["序号"] = range(1, len(big_df) + 1)
88
+ temp_df = temp_df[column_name]
89
+ big_df = pd.concat(objs=[temp_df, big_df], ignore_index=True) if not big_df.empty else temp_df
90
+
91
+ if not big_df.empty:
92
+ big_df["占净值比例"] = pd.to_numeric(big_df["占净值比例"], errors="coerce")
93
+ big_df["持股数"] = pd.to_numeric(big_df["持股数"], errors="coerce")
94
+ big_df["持仓市值"] = pd.to_numeric(big_df["持仓市值"], errors="coerce")
95
+ del big_df["序号"]
96
+ big_df.reset_index(inplace=True, drop=False)
97
+ big_df["index"] = big_df["index"] + 1
98
+ big_df.rename(columns={"index": "序号"}, inplace=True)
89
99
  return big_df
90
100
 
91
101
 
92
102
  def fund_portfolio_bond_hold_em(
93
- symbol: str = "000001", date: str = "2023"
103
+ symbol: str = "000001", date: str = "2023"
94
104
  ) -> pd.DataFrame:
95
105
  """
96
106
  天天基金网-基金档案-投资组合-债券持仓
@@ -102,7 +112,7 @@ def fund_portfolio_bond_hold_em(
102
112
  :return: 债券持仓
103
113
  :rtype: pandas.DataFrame
104
114
  """
105
- url = "http://fundf10.eastmoney.com/FundArchivesDatas.aspx"
115
+ url = "https://fundf10.eastmoney.com/FundArchivesDatas.aspx"
106
116
  params = {
107
117
  "type": "zqcc",
108
118
  "code": symbol,
@@ -111,17 +121,17 @@ def fund_portfolio_bond_hold_em(
111
121
  }
112
122
  r = requests.get(url, params=params)
113
123
  data_text = r.text
114
- data_json = demjson.decode(data_text[data_text.find("{"): -1])
115
- soup = BeautifulSoup(data_json["content"], "lxml")
124
+ data_json = demjson.decode(data_text[data_text.find("{") : -1])
125
+ soup = BeautifulSoup(data_json["content"], features="lxml")
116
126
  item_label = [
117
127
  item.text.split("\xa0\xa0")[1]
118
- for item in soup.find_all("h4", attrs={"class": "t"})
128
+ for item in soup.find_all(name="h4", attrs={"class": "t"})
119
129
  ]
120
130
  big_df = pd.DataFrame()
121
131
  for item in range(len(item_label)):
122
- temp_df = pd.read_html(StringIO(data_json["content"]), converters={"债券代码": str})[
123
- item
124
- ]
132
+ temp_df = pd.read_html(
133
+ StringIO(data_json["content"]), converters={"债券代码": str}
134
+ )[item]
125
135
  temp_df["占净值比例"] = (
126
136
  temp_df["占净值比例"].str.split("%", expand=True).iloc[:, 0]
127
137
  )
@@ -137,7 +147,7 @@ def fund_portfolio_bond_hold_em(
137
147
  "季度",
138
148
  ]
139
149
  ]
140
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
150
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
141
151
  big_df["占净值比例"] = pd.to_numeric(big_df["占净值比例"], errors="coerce")
142
152
  big_df["持仓市值"] = pd.to_numeric(big_df["持仓市值"], errors="coerce")
143
153
  big_df["序号"] = range(1, len(big_df) + 1)
@@ -145,7 +155,7 @@ def fund_portfolio_bond_hold_em(
145
155
 
146
156
 
147
157
  def fund_portfolio_industry_allocation_em(
148
- symbol: str = "000001", date: str = "2023"
158
+ symbol: str = "000001", date: str = "2023"
149
159
  ) -> pd.DataFrame:
150
160
  """
151
161
  天天基金网-基金档案-投资组合-行业配置
@@ -157,7 +167,7 @@ def fund_portfolio_industry_allocation_em(
157
167
  :return: 行业配置
158
168
  :rtype: pandas.DataFrame
159
169
  """
160
- url = "http://api.fund.eastmoney.com/f10/HYPZ/"
170
+ url = "https://api.fund.eastmoney.com/f10/HYPZ/"
161
171
  headers = {
162
172
  "Accept": "*/*",
163
173
  "Accept-Encoding": "gzip, deflate",
@@ -166,18 +176,18 @@ def fund_portfolio_industry_allocation_em(
166
176
  "Connection": "keep-alive",
167
177
  "Host": "api.fund.eastmoney.com",
168
178
  "Pragma": "no-cache",
169
- "Referer": "http://fundf10.eastmoney.com/",
170
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36",
179
+ "Referer": "https://fundf10.eastmoney.com/",
180
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
181
+ "Chrome/99.0.4844.82 Safari/537.36",
171
182
  }
172
183
  params = {
173
184
  "fundCode": symbol,
174
185
  "year": date,
175
186
  "callback": "jQuery183006997159478989867_1648016188499",
176
- "_": "1648016377955",
177
187
  }
178
188
  r = requests.get(url, params=params, headers=headers)
179
189
  data_text = r.text
180
- data_json = demjson.decode(data_text[data_text.find("{"): -1])
190
+ data_json = demjson.decode(data_text[data_text.find("{") : -1])
181
191
  temp_list = []
182
192
  for item in data_json["Data"]["QuarterInfos"]:
183
193
  temp_list.extend(item["HYPZInfo"])
@@ -218,7 +228,7 @@ def fund_portfolio_industry_allocation_em(
218
228
 
219
229
 
220
230
  def fund_portfolio_change_em(
221
- symbol: str = "003567", indicator: str = "累计买入", date: str = "2023"
231
+ symbol: str = "003567", indicator: str = "累计买入", date: str = "2023"
222
232
  ) -> pd.DataFrame:
223
233
  """
224
234
  天天基金网-基金档案-投资组合-重大变动
@@ -236,7 +246,7 @@ def fund_portfolio_change_em(
236
246
  "累计买入": "1",
237
247
  "累计卖出": "2",
238
248
  }
239
- url = "http://fundf10.eastmoney.com/FundArchivesDatas.aspx"
249
+ url = "https://fundf10.eastmoney.com/FundArchivesDatas.aspx"
240
250
  params = {
241
251
  "type": "zdbd",
242
252
  "code": symbol,
@@ -246,20 +256,22 @@ def fund_portfolio_change_em(
246
256
  }
247
257
  r = requests.get(url, params=params)
248
258
  data_text = r.text
249
- data_json = demjson.decode(data_text[data_text.find("{"): -1])
250
- soup = BeautifulSoup(data_json["content"], "lxml")
259
+ data_json = demjson.decode(data_text[data_text.find("{") : -1])
260
+ soup = BeautifulSoup(data_json["content"], features="lxml")
251
261
  item_label = [
252
262
  item.text.split("\xa0\xa0")[1]
253
- for item in soup.find_all("h4", attrs={"class": "t"})
263
+ for item in soup.find_all(name="h4", attrs={"class": "t"})
254
264
  ]
255
265
  big_df = pd.DataFrame()
256
266
  for item in range(len(item_label)):
257
- temp_df = pd.read_html(StringIO(data_json["content"]), converters={"股票代码": str})[
258
- item
259
- ]
267
+ temp_df = pd.read_html(
268
+ StringIO(data_json["content"]), converters={"股票代码": str}
269
+ )[item]
260
270
  del temp_df["相关资讯"]
261
271
  temp_df["占期初基金资产净值比例(%)"] = (
262
- temp_df["占期初基金资产净值比例(%)"].str.split("%", expand=True).iloc[:, 0]
272
+ temp_df["占期初基金资产净值比例(%)"]
273
+ .str.split("%", expand=True)
274
+ .iloc[:, 0]
263
275
  )
264
276
  temp_df["季度"] = item_label[item]
265
277
  temp_df.columns = [
@@ -280,13 +292,15 @@ def fund_portfolio_change_em(
280
292
  "季度",
281
293
  ]
282
294
  ]
283
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
295
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
284
296
  del big_df["序号"]
285
297
  big_df.reset_index(inplace=True)
286
298
  big_df["index"] = big_df.index + 1
287
299
  big_df.rename(columns={"index": "序号"}, inplace=True)
288
300
 
289
- big_df["本期累计买入金额"] = pd.to_numeric(big_df["本期累计买入金额"], errors="coerce")
301
+ big_df["本期累计买入金额"] = pd.to_numeric(
302
+ big_df["本期累计买入金额"], errors="coerce"
303
+ )
290
304
  big_df["占期初基金资产净值比例"] = pd.to_numeric(
291
305
  big_df["占期初基金资产净值比例"], errors="coerce"
292
306
  )
@@ -294,9 +308,7 @@ def fund_portfolio_change_em(
294
308
 
295
309
 
296
310
  if __name__ == "__main__":
297
- fund_portfolio_hold_em_df = fund_portfolio_hold_em(
298
- symbol="011934", date="2023"
299
- )
311
+ fund_portfolio_hold_em_df = fund_portfolio_hold_em(symbol="000001", date="2024")
300
312
  print(fund_portfolio_hold_em_df)
301
313
 
302
314
  fund_portfolio_bond_hold_em_df = fund_portfolio_bond_hold_em(
@@ -304,8 +316,8 @@ if __name__ == "__main__":
304
316
  )
305
317
  print(fund_portfolio_bond_hold_em_df)
306
318
 
307
- fund_portfolio_industry_allocation_em_df = (
308
- fund_portfolio_industry_allocation_em(symbol="000001", date="2023")
319
+ fund_portfolio_industry_allocation_em_df = fund_portfolio_industry_allocation_em(
320
+ symbol="000001", date="2023"
309
321
  )
310
322
  print(fund_portfolio_industry_allocation_em_df)
311
323
 
@@ -5,6 +5,7 @@ Date: 2023/4/5 22:05
5
5
  Desc: 乐咕乐股-基金仓位
6
6
  https://legulegu.com/stockdata/fund-position/pos-stock
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
@@ -20,11 +21,16 @@ def fund_stock_position_lg() -> pd.DataFrame:
20
21
  """
21
22
  url = "https://legulegu.com/api/stockdata/fund-position"
22
23
  token = get_token_lg()
23
- params = {"token": token, "type": "pos_stock", "category": "总仓位", "marketId": "5"}
24
+ params = {
25
+ "token": token,
26
+ "type": "pos_stock",
27
+ "category": "总仓位",
28
+ "marketId": "5",
29
+ }
24
30
  r = requests.get(
25
31
  url,
26
32
  params=params,
27
- **get_cookie_csrf(url="https://legulegu.com/stockdata/fund-position/pos-stock")
33
+ **get_cookie_csrf(url="https://legulegu.com/stockdata/fund-position/pos-stock"),
28
34
  )
29
35
  data_json = r.json()
30
36
  temp_df = pd.DataFrame(data_json)
@@ -36,7 +42,7 @@ def fund_stock_position_lg() -> pd.DataFrame:
36
42
  "position",
37
43
  ]
38
44
  ]
39
- temp_df['date'] = pd.to_datetime(temp_df['date']).dt.date
45
+ temp_df["date"] = pd.to_datetime(temp_df["date"]).dt.date
40
46
  temp_df["close"] = pd.to_numeric(temp_df["close"], errors="coerce")
41
47
  temp_df["position"] = pd.to_numeric(temp_df["position"], errors="coerce")
42
48
  return temp_df
@@ -62,7 +68,7 @@ def fund_balance_position_lg() -> pd.DataFrame:
62
68
  params=params,
63
69
  **get_cookie_csrf(
64
70
  url="https://legulegu.com/stockdata/fund-position/pos-pingheng"
65
- )
71
+ ),
66
72
  )
67
73
  data_json = r.json()
68
74
  temp_df = pd.DataFrame(data_json)
@@ -74,7 +80,7 @@ def fund_balance_position_lg() -> pd.DataFrame:
74
80
  "position",
75
81
  ]
76
82
  ]
77
- temp_df['date'] = pd.to_datetime(temp_df['date']).dt.date
83
+ temp_df["date"] = pd.to_datetime(temp_df["date"]).dt.date
78
84
  temp_df["close"] = pd.to_numeric(temp_df["close"], errors="coerce")
79
85
  temp_df["position"] = pd.to_numeric(temp_df["position"], errors="coerce")
80
86
  return temp_df
@@ -89,13 +95,18 @@ def fund_linghuo_position_lg() -> pd.DataFrame:
89
95
  """
90
96
  url = "https://legulegu.com/api/stockdata/fund-position"
91
97
  token = get_token_lg()
92
- params = {"token": token, "type": "pos_linghuo", "category": "总仓位", "marketId": "5"}
98
+ params = {
99
+ "token": token,
100
+ "type": "pos_linghuo",
101
+ "category": "总仓位",
102
+ "marketId": "5",
103
+ }
93
104
  r = requests.get(
94
105
  url,
95
106
  params=params,
96
107
  **get_cookie_csrf(
97
108
  url="https://legulegu.com/stockdata/fund-position/pos-linghuo"
98
- )
109
+ ),
99
110
  )
100
111
  data_json = r.json()
101
112
  temp_df = pd.DataFrame(data_json)
@@ -107,7 +118,7 @@ def fund_linghuo_position_lg() -> pd.DataFrame:
107
118
  "position",
108
119
  ]
109
120
  ]
110
- temp_df['date'] = pd.to_datetime(temp_df['date']).dt.date
121
+ temp_df["date"] = pd.to_datetime(temp_df["date"]).dt.date
111
122
  temp_df["close"] = pd.to_numeric(temp_df["close"], errors="coerce")
112
123
  temp_df["position"] = pd.to_numeric(temp_df["position"], errors="coerce")
113
124
  return temp_df