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
@@ -0,0 +1,101 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding:utf-8 -*-
3
+ """
4
+ Date: 2024/6/14 17:00
5
+ Desc: 东方财富网-数据中心-融资融券-融资融券账户统计-两融账户信息
6
+ https://www.szse.cn/disclosure/margin/object/index.html
7
+ """
8
+
9
+ import pandas as pd
10
+ import requests
11
+
12
+ from akshare.utils.tqdm import get_tqdm
13
+
14
+
15
+ def stock_margin_account_info() -> pd.DataFrame:
16
+ """
17
+ 东方财富网-数据中心-融资融券-融资融券账户统计-两融账户信息
18
+ https://data.eastmoney.com/rzrq/zhtjday.html
19
+ :return: 融资融券账户统计
20
+ :rtype: pandas.DataFrame
21
+ """
22
+ import warnings
23
+
24
+ warnings.filterwarnings(action="ignore", category=FutureWarning)
25
+ url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
26
+ params = {
27
+ "reportName": "RPTA_WEB_MARGIN_DAILYTRADE",
28
+ "columns": "ALL",
29
+ "pageNumber": "1",
30
+ "pageSize": "500",
31
+ "sortColumns": "STATISTICS_DATE",
32
+ "sortTypes": "-1",
33
+ "p": "1",
34
+ "pageNo": "1",
35
+ "pageNum": "1",
36
+ }
37
+ r = requests.get(url=url, params=params)
38
+ data_json = r.json()
39
+ total_page = data_json["result"]["pages"]
40
+ tqdm = get_tqdm()
41
+ big_df = pd.DataFrame()
42
+ for page in tqdm(range(1, total_page + 1), leave=False):
43
+ params.update(
44
+ {
45
+ "pageNumber": page,
46
+ "p": page,
47
+ "pageNo": page,
48
+ "pageNum": page,
49
+ }
50
+ )
51
+ r = requests.get(url=url, params=params)
52
+ data_json = r.json()
53
+ temp_df = pd.DataFrame(data_json["result"]["data"])
54
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
55
+
56
+ big_df.rename(
57
+ columns={
58
+ "STATISTICS_DATE": "日期",
59
+ "FIN_BALANCE": "融资余额",
60
+ "LOAN_BALANCE": "融券余额",
61
+ "FIN_BUY_AMT": "融资买入额",
62
+ "LOAN_SELL_AMT": "融券卖出额",
63
+ "SECURITY_ORG_NUM": "证券公司数量",
64
+ "OPERATEDEPT_NUM": "营业部数量",
65
+ "PERSONAL_INVESTOR_NUM": "个人投资者数量",
66
+ "ORG_INVESTOR_NUM": "机构投资者数量",
67
+ "INVESTOR_NUM": "参与交易的投资者数量",
68
+ "MARGINLIAB_INVESTOR_NUM": "有融资融券负债的投资者数量",
69
+ "TOTAL_GUARANTEE": "担保物总价值",
70
+ "AVG_GUARANTEE_RATIO": "平均维持担保比例",
71
+ },
72
+ inplace=True,
73
+ )
74
+ big_df = big_df[
75
+ [
76
+ "日期",
77
+ "融资余额",
78
+ "融券余额",
79
+ "融资买入额",
80
+ "融券卖出额",
81
+ "证券公司数量",
82
+ "营业部数量",
83
+ "个人投资者数量",
84
+ "机构投资者数量",
85
+ "参与交易的投资者数量",
86
+ "有融资融券负债的投资者数量",
87
+ "担保物总价值",
88
+ "平均维持担保比例",
89
+ ]
90
+ ]
91
+
92
+ big_df["日期"] = pd.to_datetime(big_df["日期"], errors="coerce").dt.date
93
+ for item in big_df.columns[1:]:
94
+ big_df[item] = pd.to_numeric(big_df[item], errors="coerce")
95
+ big_df.sort_values(["日期"], ignore_index=True, inplace=True)
96
+ return big_df
97
+
98
+
99
+ if __name__ == "__main__":
100
+ stock_margin_account_info_df = stock_margin_account_info()
101
+ print(stock_margin_account_info_df)
@@ -1,10 +1,11 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2023/9/24 15:30
4
+ Date: 2024/6/14 17:20
5
5
  Desc: 上海证券交易所-融资融券数据
6
- http://www.sse.com.cn/market/othersdata/margin/sum/
6
+ https://www.sse.com.cn/market/othersdata/margin/sum/
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
@@ -41,16 +42,19 @@ def stock_margin_ratio_pa(date: str = "20231013") -> pd.DataFrame:
41
42
  "secuCode": "证券代码",
42
43
  "secuName": "证券简称",
43
44
  "slMarginRatio": "融券比例",
44
- }, inplace=True
45
+ },
46
+ inplace=True,
45
47
  )
46
- temp_df = temp_df[[
48
+ temp_df = temp_df[
49
+ [
47
50
  "证券代码",
48
51
  "证券简称",
49
52
  "融资比例",
50
53
  "融券比例",
51
- ]]
52
- temp_df['融资比例'] = pd.to_numeric(temp_df['融资比例'], errors="coerce")
53
- temp_df['融券比例'] = pd.to_numeric(temp_df['融券比例'], errors="coerce")
54
+ ]
55
+ ]
56
+ temp_df["融资比例"] = pd.to_numeric(temp_df["融资比例"], errors="coerce")
57
+ temp_df["融券比例"] = pd.to_numeric(temp_df["融券比例"], errors="coerce")
54
58
  return temp_df
55
59
 
56
60
 
@@ -59,7 +63,7 @@ def stock_margin_sse(
59
63
  ) -> pd.DataFrame:
60
64
  """
61
65
  上海证券交易所-融资融券数据-融资融券汇总
62
- http://www.sse.com.cn/market/othersdata/margin/sum/
66
+ https://www.sse.com.cn/market/othersdata/margin/sum/
63
67
  :param start_date: 交易开始日期
64
68
  :type start_date: str
65
69
  :param end_date: 交易结束日期
@@ -67,7 +71,7 @@ def stock_margin_sse(
67
71
  :return: 融资融券汇总
68
72
  :rtype: pandas.DataFrame
69
73
  """
70
- url = "http://query.sse.com.cn/marketdata/tradedata/queryMargin.do"
74
+ url = "https://query.sse.com.cn/marketdata/tradedata/queryMargin.do"
71
75
  params = {
72
76
  "isPagination": "true",
73
77
  "beginDate": start_date,
@@ -79,11 +83,11 @@ def stock_margin_sse(
79
83
  "pageHelp.beginPage": "1",
80
84
  "pageHelp.cacheSize": "1",
81
85
  "pageHelp.endPage": "5",
82
- "_": "1612773448860",
83
86
  }
84
87
  headers = {
85
- "Referer": "http://www.sse.com.cn/",
86
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36",
88
+ "Referer": "https://www.sse.com.cn/",
89
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
90
+ "Chrome/88.0.4324.150 Safari/537.36",
87
91
  }
88
92
  r = requests.get(url, params=params, headers=headers)
89
93
  data_json = r.json()
@@ -126,13 +130,13 @@ def stock_margin_sse(
126
130
  def stock_margin_detail_sse(date: str = "20230922") -> pd.DataFrame:
127
131
  """
128
132
  上海证券交易所-融资融券数据-融资融券明细
129
- http://www.sse.com.cn/market/othersdata/margin/detail/
133
+ https://www.sse.com.cn/market/othersdata/margin/detail/
130
134
  :param date: 交易日期
131
135
  :type date: str
132
136
  :return: 融资融券明细
133
137
  :rtype: pandas.DataFrame
134
138
  """
135
- url = "http://query.sse.com.cn/marketdata/tradedata/queryMargin.do"
139
+ url = "https://query.sse.com.cn/marketdata/tradedata/queryMargin.do"
136
140
  params = {
137
141
  "isPagination": "true",
138
142
  "tabType": "mxtype",
@@ -146,11 +150,11 @@ def stock_margin_detail_sse(date: str = "20230922") -> pd.DataFrame:
146
150
  "pageHelp.beginPage": "1",
147
151
  "pageHelp.cacheSize": "1",
148
152
  "pageHelp.endPage": "21",
149
- "_": "1612773448860",
150
153
  }
151
154
  headers = {
152
- "Referer": "http://www.sse.com.cn/",
153
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36",
155
+ "Referer": "https://www.sse.com.cn/",
156
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
157
+ "Chrome/88.0.4324.150 Safari/537.36",
154
158
  }
155
159
  r = requests.get(url, params=params, headers=headers)
156
160
  data_json = r.json()
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/4/13 18:00
4
+ Date: 2024/6/14 17:00
5
5
  Desc: 深圳证券交易所-融资融券数据
6
6
  https://www.szse.cn/disclosure/margin/object/index.html
7
7
  """
@@ -76,17 +76,17 @@ def stock_margin_szse(date: str = "20240411") -> pd.DataFrame:
76
76
  "融资融券余额",
77
77
  ]
78
78
  temp_df["融资买入额"] = temp_df["融资买入额"].str.replace(",", "")
79
- temp_df["融资买入额"] = pd.to_numeric(temp_df["融资买入额"])
79
+ temp_df["融资买入额"] = pd.to_numeric(temp_df["融资买入额"], errors="coerce")
80
80
  temp_df["融资余额"] = temp_df["融资余额"].str.replace(",", "")
81
- temp_df["融资余额"] = pd.to_numeric(temp_df["融资余额"])
81
+ temp_df["融资余额"] = pd.to_numeric(temp_df["融资余额"], errors="coerce")
82
82
  temp_df["融券卖出量"] = temp_df["融券卖出量"].str.replace(",", "")
83
- temp_df["融券卖出量"] = pd.to_numeric(temp_df["融券卖出量"])
83
+ temp_df["融券卖出量"] = pd.to_numeric(temp_df["融券卖出量"], errors="coerce")
84
84
  temp_df["融券余量"] = temp_df["融券余量"].str.replace(",", "")
85
- temp_df["融券余量"] = pd.to_numeric(temp_df["融券余量"])
85
+ temp_df["融券余量"] = pd.to_numeric(temp_df["融券余量"], errors="coerce")
86
86
  temp_df["融券余额"] = temp_df["融券余额"].str.replace(",", "")
87
- temp_df["融券余额"] = pd.to_numeric(temp_df["融券余额"])
87
+ temp_df["融券余额"] = pd.to_numeric(temp_df["融券余额"], errors="coerce")
88
88
  temp_df["融资融券余额"] = temp_df["融资融券余额"].str.replace(",", "")
89
- temp_df["融资融券余额"] = pd.to_numeric(temp_df["融资融券余额"])
89
+ temp_df["融资融券余额"] = pd.to_numeric(temp_df["融资融券余额"], errors="coerce")
90
90
  return temp_df
91
91
 
92
92
 
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/4/15 20:00
4
+ Date: 2024/4/25 20:22
5
5
  Desc: 乐咕乐股网-赚钱效应分析
6
6
  https://www.legulegu.com/stockdata/market-activity
7
7
  """
@@ -12,6 +12,8 @@ import pandas as pd
12
12
  import requests
13
13
  from bs4 import BeautifulSoup
14
14
 
15
+ from akshare.utils.cons import headers
16
+
15
17
 
16
18
  def stock_market_activity_legu() -> pd.DataFrame:
17
19
  """
@@ -21,7 +23,7 @@ def stock_market_activity_legu() -> pd.DataFrame:
21
23
  :rtype: pandas.DataFrame
22
24
  """
23
25
  url = "https://legulegu.com/stockdata/market-activity"
24
- r = requests.get(url)
26
+ r = requests.get(url, headers=headers)
25
27
  temp_df = pd.read_html(StringIO(r.text))[0]
26
28
  temp_df_one = temp_df.iloc[:, :2]
27
29
  temp_df_one.columns = ["item", "value"]
@@ -5,6 +5,7 @@ Date: 2022/12/27 21:11
5
5
  Desc: 东方财富-行情中心-盘口异动
6
6
  https://quote.eastmoney.com/changes/
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
@@ -13,12 +14,14 @@ def stock_changes_em(symbol: str = "大笔买入") -> pd.DataFrame:
13
14
  """
14
15
  东方财富-行情中心-盘口异动
15
16
  https://quote.eastmoney.com/changes/
16
- :param symbol: choice of {'火箭发射', '快速反弹', '大笔买入', '封涨停板', '打开跌停板', '有大买盘', '竞价上涨', '高开5日线', '向上缺口', '60日新高', '60日大幅上涨', '加速下跌', '高台跳水', '大笔卖出', '封跌停板', '打开涨停板', '有大卖盘', '竞价下跌', '低开5日线', '向下缺口', '60日新低', '60日大幅下跌'}
17
+ :param symbol: choice of {'火箭发射', '快速反弹', '大笔买入', '封涨停板', '打开跌停板', '有大买盘',
18
+ '竞价上涨', '高开5日线', '向上缺口', '60日新高', '60日大幅上涨', '加速下跌', '高台跳水',
19
+ '大笔卖出', '封跌停板', '打开涨停板', '有大卖盘', '竞价下跌', '低开5日线', '向下缺口', '60日新低', '60日大幅下跌'}
17
20
  :type symbol: str
18
21
  :return: 盘口异动
19
22
  :rtype: pandas.DataFrame
20
23
  """
21
- url = "http://push2ex.eastmoney.com/getAllStockChanges"
24
+ url = "https://push2ex.eastmoney.com/getAllStockChanges"
22
25
  symbol_map = {
23
26
  "火箭发射": "8201",
24
27
  "快速反弹": "8202",
@@ -50,7 +53,6 @@ def stock_changes_em(symbol: str = "大笔买入") -> pd.DataFrame:
50
53
  "pagesize": "5000",
51
54
  "ut": "7eea3edcaed734bea9cbfc24409ed989",
52
55
  "dpt": "wzchanges",
53
- "_": "1624005264245",
54
56
  }
55
57
  r = requests.get(url, params=params)
56
58
  data_json = r.json()
@@ -85,54 +87,88 @@ def stock_board_change_em() -> pd.DataFrame:
85
87
  :return: 当日板块异动详情页
86
88
  :rtype: pandas.DataFrame
87
89
  """
88
- url = "http://push2ex.eastmoney.com/getAllBKChanges"
90
+ url = "https://push2ex.eastmoney.com/getAllBKChanges"
89
91
  params = {
90
- 'ut': '7eea3edcaed734bea9cbfc24409ed989',
91
- 'dpt': 'wzchanges',
92
- 'pageindex': '0',
93
- 'pagesize': '5000',
94
- '_': '1671978840598',
92
+ "ut": "7eea3edcaed734bea9cbfc24409ed989",
93
+ "dpt": "wzchanges",
94
+ "pageindex": "0",
95
+ "pagesize": "5000",
95
96
  }
96
97
  r = requests.get(url, params=params)
97
98
  data_json = r.json()
98
- data_df = pd.DataFrame(data_json['data']['allbk'])
99
+ data_df = pd.DataFrame(data_json["data"]["allbk"])
99
100
  data_df.columns = [
100
- '-',
101
- '-',
102
- '板块名称',
103
- '涨跌幅',
104
- '主力净流入',
105
- '板块异动总次数',
101
+ "-",
102
+ "-",
103
+ "板块名称",
104
+ "涨跌幅",
105
+ "主力净流入",
106
+ "板块异动总次数",
106
107
  "ms",
107
108
  "板块具体异动类型列表及出现次数",
108
109
  ]
109
- data_df['板块异动最频繁个股及所属类型-买卖方向'] = [item['m'] for item in data_df['ms']]
110
- data_df['板块异动最频繁个股及所属类型-股票代码'] = [item['c'] for item in data_df['ms']]
111
- data_df['板块异动最频繁个股及所属类型-股票名称'] = [item['n'] for item in data_df['ms']]
112
- data_df['板块异动最频繁个股及所属类型-买卖方向'] = data_df['板块异动最频繁个股及所属类型-买卖方向'].map({0: "大笔买入", 1: "大笔卖出"})
113
- data_df = data_df[[
114
- '板块名称',
115
- '涨跌幅',
116
- '主力净流入',
117
- '板块异动总次数',
118
- '板块异动最频繁个股及所属类型-股票代码',
119
- '板块异动最频繁个股及所属类型-股票名称',
120
- '板块异动最频繁个股及所属类型-买卖方向',
121
- "板块具体异动类型列表及出现次数",
122
- ]]
123
- data_df['涨跌幅'] = pd.to_numeric(data_df['涨跌幅'], errors="coerce")
124
- data_df['主力净流入'] = pd.to_numeric(data_df['主力净流入'], errors="coerce")
125
- data_df['板块异动总次数'] = pd.to_numeric(data_df['板块异动总次数'], errors="coerce")
110
+ data_df["板块异动最频繁个股及所属类型-买卖方向"] = [
111
+ item["m"] for item in data_df["ms"]
112
+ ]
113
+ data_df["板块异动最频繁个股及所属类型-股票代码"] = [
114
+ item["c"] for item in data_df["ms"]
115
+ ]
116
+ data_df["板块异动最频繁个股及所属类型-股票名称"] = [
117
+ item["n"] for item in data_df["ms"]
118
+ ]
119
+ data_df["板块异动最频繁个股及所属类型-买卖方向"] = data_df[
120
+ "板块异动最频繁个股及所属类型-买卖方向"
121
+ ].map({0: "大笔买入", 1: "大笔卖出"})
122
+ data_df = data_df[
123
+ [
124
+ "板块名称",
125
+ "涨跌幅",
126
+ "主力净流入",
127
+ "板块异动总次数",
128
+ "板块异动最频繁个股及所属类型-股票代码",
129
+ "板块异动最频繁个股及所属类型-股票名称",
130
+ "板块异动最频繁个股及所属类型-买卖方向",
131
+ "板块具体异动类型列表及出现次数",
132
+ ]
133
+ ]
134
+ data_df["涨跌幅"] = pd.to_numeric(data_df["涨跌幅"], errors="coerce")
135
+ data_df["主力净流入"] = pd.to_numeric(data_df["主力净流入"], errors="coerce")
136
+ data_df["板块异动总次数"] = pd.to_numeric(
137
+ data_df["板块异动总次数"], errors="coerce"
138
+ )
126
139
  return data_df
127
140
 
128
141
 
129
142
  if __name__ == "__main__":
130
- stock_changes_em_df = stock_changes_em(symbol='火箭发射')
143
+ stock_changes_em_df = stock_changes_em(symbol="大笔买入")
131
144
  print(stock_changes_em_df)
132
145
 
133
146
  stock_board_change_em_df = stock_board_change_em()
134
147
  print(stock_board_change_em_df)
135
148
 
136
- for item in {'火箭发射', '快速反弹', '大笔买入', '封涨停板', '打开跌停板', '有大买盘', '竞价上涨', '高开5日线', '向上缺口', '60日新高', '60日大幅上涨', '加速下跌', '高台跳水', '大笔卖出', '封跌停板', '打开涨停板', '有大卖盘', '竞价下跌', '低开5日线', '向下缺口', '60日新低', '60日大幅下跌'}:
149
+ for item in {
150
+ "火箭发射",
151
+ "快速反弹",
152
+ "大笔买入",
153
+ "封涨停板",
154
+ "打开跌停板",
155
+ "有大买盘",
156
+ "竞价上涨",
157
+ "高开5日线",
158
+ "向上缺口",
159
+ "60日新高",
160
+ "60日大幅上涨",
161
+ "加速下跌",
162
+ "高台跳水",
163
+ "大笔卖出",
164
+ "封跌停板",
165
+ "打开涨停板",
166
+ "有大卖盘",
167
+ "竞价下跌",
168
+ "低开5日线",
169
+ "向下缺口",
170
+ "60日新低",
171
+ "60日大幅下跌",
172
+ }:
137
173
  stock_changes_em_df = stock_changes_em(symbol=item)
138
174
  print(stock_changes_em_df)
@@ -5,6 +5,7 @@ Date: 2022/9/21 16:49
5
5
  Desc: 东方财富网-数据中心-特色数据-券商业绩月报
6
6
  http://data.eastmoney.com/other/qsjy.html
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
@@ -71,13 +72,21 @@ def stock_qsjy_em(date: str = "20200731") -> pd.DataFrame:
71
72
  temp_df["当月净利润-净利润"] = pd.to_numeric(temp_df["当月净利润-净利润"])
72
73
  temp_df["当月净利润-同比增长"] = pd.to_numeric(temp_df["当月净利润-同比增长"])
73
74
  temp_df["当月净利润-环比增长"] = pd.to_numeric(temp_df["当月净利润-环比增长"])
74
- temp_df["当年累计净利润-累计净利润"] = pd.to_numeric(temp_df["当年累计净利润-累计净利润"])
75
- temp_df["当年累计净利润-同比增长"] = pd.to_numeric(temp_df["当年累计净利润-同比增长"])
75
+ temp_df["当年累计净利润-累计净利润"] = pd.to_numeric(
76
+ temp_df["当年累计净利润-累计净利润"]
77
+ )
78
+ temp_df["当年累计净利润-同比增长"] = pd.to_numeric(
79
+ temp_df["当年累计净利润-同比增长"]
80
+ )
76
81
  temp_df["当月营业收入-营业收入"] = pd.to_numeric(temp_df["当月营业收入-营业收入"])
77
82
  temp_df["当月营业收入-环比增长"] = pd.to_numeric(temp_df["当月营业收入-环比增长"])
78
83
  temp_df["当月营业收入-同比增长"] = pd.to_numeric(temp_df["当月营业收入-同比增长"])
79
- temp_df["当年累计营业收入-累计营业收入"] = pd.to_numeric(temp_df["当年累计营业收入-累计营业收入"])
80
- temp_df["当年累计营业收入-同比增长"] = pd.to_numeric(temp_df["当年累计营业收入-同比增长"])
84
+ temp_df["当年累计营业收入-累计营业收入"] = pd.to_numeric(
85
+ temp_df["当年累计营业收入-累计营业收入"]
86
+ )
87
+ temp_df["当年累计营业收入-同比增长"] = pd.to_numeric(
88
+ temp_df["当年累计营业收入-同比增长"]
89
+ )
81
90
  temp_df["净资产-净资产"] = pd.to_numeric(temp_df["净资产-净资产"])
82
91
  temp_df["净资产-同比增长"] = pd.to_numeric(temp_df["净资产-同比增长"])
83
92
  return temp_df
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/4/2 21:30
4
+ Date: 2024/9/20 15:30
5
5
  Desc: 东方财富-数据中心-年报季报-业绩快报-三大报表
6
6
  资产负债表
7
7
  https://data.eastmoney.com/bbsj/202003/zcfz.html
@@ -17,7 +17,7 @@ import requests
17
17
  from akshare.utils.tqdm import get_tqdm
18
18
 
19
19
 
20
- def stock_zcfz_em(date: str = "20220331") -> pd.DataFrame:
20
+ def stock_zcfz_em(date: str = "20240331") -> pd.DataFrame:
21
21
  """
22
22
  东方财富-数据中心-年报季报-业绩快报-资产负债表
23
23
  https://data.eastmoney.com/bbsj/202003/zcfz.html
@@ -158,7 +158,148 @@ def stock_zcfz_em(date: str = "20220331") -> pd.DataFrame:
158
158
  return big_df
159
159
 
160
160
 
161
- def stock_lrb_em(date: str = "20081231") -> pd.DataFrame:
161
+ def stock_zcfz_bj_em(date: str = "20240331") -> pd.DataFrame:
162
+ """
163
+ 东方财富-数据中心-年报季报-业绩快报-资产负债表
164
+ https://data.eastmoney.com/bbsj/202003/zcfz.html
165
+ :param date: choice of {"20200331", "20200630", "20200930", "20201231", "..."}; 从 20100331 开始
166
+ :type date: str
167
+ :return: 资产负债表
168
+ :rtype: pandas.DataFrame
169
+ """
170
+ import warnings
171
+
172
+ warnings.filterwarnings(action="ignore", category=FutureWarning)
173
+ url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
174
+ params = {
175
+ "sortColumns": "NOTICE_DATE,SECURITY_CODE",
176
+ "sortTypes": "-1,-1",
177
+ "pageSize": "500",
178
+ "pageNumber": "1",
179
+ "reportName": "RPT_DMSK_FN_BALANCE",
180
+ "columns": "ALL",
181
+ "filter": f"""(TRADE_MARKET_CODE="069001017")
182
+ (REPORT_DATE='{'-'.join([date[:4], date[4:6], date[6:]])}')""",
183
+ }
184
+ r = requests.get(url, params=params)
185
+ data_json = r.json()
186
+ page_num = data_json["result"]["pages"]
187
+ big_df = pd.DataFrame()
188
+ tqdm = get_tqdm()
189
+ for page in tqdm(range(1, page_num + 1), leave=False):
190
+ params.update(
191
+ {
192
+ "pageNumber": page,
193
+ }
194
+ )
195
+ r = requests.get(url, params=params)
196
+ data_json = r.json()
197
+ temp_df = pd.DataFrame(data_json["result"]["data"])
198
+ big_df = pd.concat(objs=[big_df, temp_df], join="outer", ignore_index=True)
199
+
200
+ big_df.reset_index(inplace=True)
201
+ big_df["index"] = big_df.index + 1
202
+ big_df.columns = [
203
+ "序号",
204
+ "_",
205
+ "股票代码",
206
+ "_",
207
+ "_",
208
+ "股票简称",
209
+ "_",
210
+ "_",
211
+ "_",
212
+ "_",
213
+ "_",
214
+ "_",
215
+ "_",
216
+ "公告日期",
217
+ "_",
218
+ "资产-总资产",
219
+ "_",
220
+ "资产-货币资金",
221
+ "_",
222
+ "资产-应收账款",
223
+ "_",
224
+ "资产-存货",
225
+ "_",
226
+ "负债-总负债",
227
+ "负债-应付账款",
228
+ "_",
229
+ "负债-预收账款",
230
+ "_",
231
+ "股东权益合计",
232
+ "_",
233
+ "资产-总资产同比",
234
+ "负债-总负债同比",
235
+ "_",
236
+ "资产负债率",
237
+ "_",
238
+ "_",
239
+ "_",
240
+ "_",
241
+ "_",
242
+ "_",
243
+ "_",
244
+ "_",
245
+ "_",
246
+ "_",
247
+ "_",
248
+ "_",
249
+ "_",
250
+ "_",
251
+ "_",
252
+ "_",
253
+ "_",
254
+ "_",
255
+ "_",
256
+ "_",
257
+ "_",
258
+ "_",
259
+ "_",
260
+ "_",
261
+ ]
262
+ big_df = big_df[
263
+ [
264
+ "序号",
265
+ "股票代码",
266
+ "股票简称",
267
+ "资产-货币资金",
268
+ "资产-应收账款",
269
+ "资产-存货",
270
+ "资产-总资产",
271
+ "资产-总资产同比",
272
+ "负债-应付账款",
273
+ "负债-预收账款",
274
+ "负债-总负债",
275
+ "负债-总负债同比",
276
+ "资产负债率",
277
+ "股东权益合计",
278
+ "公告日期",
279
+ ]
280
+ ]
281
+
282
+ big_df["资产-货币资金"] = pd.to_numeric(big_df["资产-货币资金"], errors="coerce")
283
+ big_df["资产-应收账款"] = pd.to_numeric(big_df["资产-应收账款"], errors="coerce")
284
+ big_df["资产-存货"] = pd.to_numeric(big_df["资产-存货"], errors="coerce")
285
+ big_df["资产-总资产"] = pd.to_numeric(big_df["资产-总资产"], errors="coerce")
286
+ big_df["资产-总资产同比"] = pd.to_numeric(
287
+ big_df["资产-总资产同比"], errors="coerce"
288
+ )
289
+ big_df["负债-应付账款"] = pd.to_numeric(big_df["负债-应付账款"], errors="coerce")
290
+ big_df["负债-预收账款"] = pd.to_numeric(big_df["负债-预收账款"], errors="coerce")
291
+ big_df["负债-总负债"] = pd.to_numeric(big_df["负债-总负债"], errors="coerce")
292
+ big_df["负债-总负债同比"] = pd.to_numeric(
293
+ big_df["负债-总负债同比"], errors="coerce"
294
+ )
295
+ big_df["资产负债率"] = pd.to_numeric(big_df["资产负债率"], errors="coerce")
296
+ big_df["股东权益合计"] = pd.to_numeric(big_df["股东权益合计"], errors="coerce")
297
+ big_df["股东权益合计"] = pd.to_numeric(big_df["股东权益合计"], errors="coerce")
298
+ big_df["公告日期"] = pd.to_datetime(big_df["公告日期"], errors="coerce").dt.date
299
+ return big_df
300
+
301
+
302
+ def stock_lrb_em(date: str = "20240331") -> pd.DataFrame:
162
303
  """
163
304
  东方财富-数据中心-年报季报-业绩快报-利润表
164
305
  https://data.eastmoney.com/bbsj/202003/lrb.html
@@ -195,7 +336,7 @@ def stock_lrb_em(date: str = "20081231") -> pd.DataFrame:
195
336
  r = requests.get(url, params=params)
196
337
  data_json = r.json()
197
338
  temp_df = pd.DataFrame(data_json["result"]["data"])
198
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
339
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
199
340
 
200
341
  big_df.reset_index(inplace=True)
201
342
  big_df["index"] = big_df.index + 1
@@ -294,7 +435,7 @@ def stock_lrb_em(date: str = "20081231") -> pd.DataFrame:
294
435
  return big_df
295
436
 
296
437
 
297
- def stock_xjll_em(date: str = "20220331") -> pd.DataFrame:
438
+ def stock_xjll_em(date: str = "20240331") -> pd.DataFrame:
298
439
  """
299
440
  东方财富-数据中心-年报季报-业绩快报-现金流量表
300
441
  https://data.eastmoney.com/bbsj/202003/xjll.html
@@ -432,11 +573,14 @@ def stock_xjll_em(date: str = "20220331") -> pd.DataFrame:
432
573
 
433
574
 
434
575
  if __name__ == "__main__":
435
- stock_zcfz_em_df = stock_zcfz_em(date="20220331")
576
+ stock_zcfz_em_df = stock_zcfz_em(date="20240331")
436
577
  print(stock_zcfz_em_df)
437
578
 
438
- stock_lrb_em_df = stock_lrb_em(date="20220331")
579
+ stock_zcfz_bj_em_df = stock_zcfz_bj_em(date="20240331")
580
+ print(stock_zcfz_bj_em_df)
581
+
582
+ stock_lrb_em_df = stock_lrb_em(date="20240331")
439
583
  print(stock_lrb_em_df)
440
584
 
441
- stock_xjll_em_df = stock_xjll_em(date="20220331")
585
+ stock_xjll_em_df = stock_xjll_em(date="20240331")
442
586
  print(stock_xjll_em_df)