akshare 1.14.49__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 (343) hide show
  1. akshare/__init__.py +595 -129
  2. akshare/air/air_hebei.py +77 -54
  3. akshare/air/air_zhenqi.py +0 -4
  4. akshare/air/cons.py +1 -0
  5. akshare/air/crypto.js +1 -1
  6. akshare/air/outcrypto.js +1 -1
  7. akshare/article/cons.py +1 -0
  8. akshare/article/epu_index.py +4 -3
  9. akshare/article/ff_factor.py +19 -8
  10. akshare/article/fred_md.py +4 -1
  11. akshare/article/risk_rv.py +3 -8
  12. akshare/bank/bank_cbirc_2020.py +11 -11
  13. akshare/bank/cons.py +7 -6
  14. akshare/bond/bond_buy_back_em.py +228 -0
  15. akshare/bond/bond_cb_sina.py +1 -0
  16. akshare/bond/bond_cb_ths.py +17 -9
  17. akshare/bond/bond_cbond.py +19 -14
  18. akshare/bond/bond_china.py +38 -39
  19. akshare/bond/bond_china_money.py +1 -1
  20. akshare/bond/bond_convert.py +10 -9
  21. akshare/bond/bond_em.py +37 -17
  22. akshare/bond/bond_summary.py +38 -37
  23. akshare/bond/bond_zh_cov.py +31 -40
  24. akshare/bond/bond_zh_sina.py +4 -0
  25. akshare/bond/cons.py +14 -11
  26. akshare/cal/__init__.py +0 -0
  27. akshare/cal/rv.py +170 -0
  28. akshare/cost/cost_living.py +7 -5
  29. akshare/crypto/__init__.py +1 -1
  30. akshare/crypto/crypto_bitcoin_cme.py +9 -7
  31. akshare/crypto/crypto_hold.py +4 -2
  32. akshare/currency/currency.py +1 -0
  33. akshare/currency/currency_china_bank_sina.py +11 -6
  34. akshare/data/__init__.py +1 -1
  35. akshare/data/cninfo.js +1 -1
  36. akshare/datasets.py +10 -21
  37. akshare/economic/cons.py +10 -3
  38. akshare/economic/macro_australia.py +74 -69
  39. akshare/economic/macro_bank.py +95 -653
  40. akshare/economic/macro_canada.py +92 -81
  41. akshare/economic/macro_china.py +97 -105
  42. akshare/economic/macro_china_hk.py +0 -1
  43. akshare/economic/macro_euro.py +103 -56
  44. akshare/economic/macro_finance_ths.py +7 -5
  45. akshare/economic/macro_germany.py +1 -1
  46. akshare/economic/macro_japan.py +0 -1
  47. akshare/economic/macro_other.py +1 -6
  48. akshare/economic/macro_swiss.py +2 -3
  49. akshare/economic/macro_uk.py +1 -1
  50. akshare/economic/macro_usa.py +7 -9
  51. akshare/economic/marco_cnbs.py +11 -6
  52. akshare/energy/energy_carbon.py +0 -1
  53. akshare/energy/energy_oil_em.py +1 -2
  54. akshare/event/cons.py +1 -0
  55. akshare/exceptions.py +43 -0
  56. akshare/file_fold/calendar.json +245 -2
  57. akshare/forex/__init__.py +0 -0
  58. akshare/forex/cons.py +192 -0
  59. akshare/forex/forex_em.py +149 -0
  60. akshare/fortune/fortune_500.py +1 -37
  61. akshare/fortune/fortune_bloomberg.py +6 -3
  62. akshare/fortune/fortune_forbes_500.py +3 -6
  63. akshare/fortune/fortune_hurun.py +2 -1
  64. akshare/fortune/fortune_xincaifu_500.py +17 -14
  65. akshare/fund/fund_announcement_em.py +145 -0
  66. akshare/fund/fund_aum_em.py +49 -35
  67. akshare/fund/fund_em.py +251 -220
  68. akshare/fund/fund_etf_em.py +44 -35
  69. akshare/fund/fund_etf_sina.py +75 -27
  70. akshare/fund/fund_etf_ths.py +2 -0
  71. akshare/fund/fund_fee_em.py +172 -0
  72. akshare/fund/fund_fhsp_em.py +42 -32
  73. akshare/fund/fund_init_em.py +8 -5
  74. akshare/fund/fund_lof_em.py +12 -19
  75. akshare/fund/fund_manager.py +25 -11
  76. akshare/fund/fund_overview_em.py +42 -0
  77. akshare/fund/fund_portfolio_em.py +23 -21
  78. akshare/fund/fund_position_lg.py +19 -8
  79. akshare/fund/fund_rank_em.py +2 -5
  80. akshare/fund/fund_rating.py +33 -12
  81. akshare/fund/fund_scale_em.py +24 -13
  82. akshare/fund/fund_scale_sina.py +20 -10
  83. akshare/fund/fund_xq.py +3 -2
  84. akshare/futures/cons.py +135 -39
  85. akshare/futures/cot.py +55 -56
  86. akshare/futures/futures_basis.py +49 -11
  87. akshare/futures/futures_comex_em.py +1 -0
  88. akshare/futures/futures_comm_ctp.py +1 -1
  89. akshare/futures/futures_contract_detail.py +59 -9
  90. akshare/futures/futures_daily_bar.py +66 -59
  91. akshare/futures/futures_foreign.py +14 -8
  92. akshare/futures/futures_hf_em.py +215 -61
  93. akshare/futures/futures_hist_em.py +191 -0
  94. akshare/futures/futures_hq_sina.py +5 -3
  95. akshare/futures/futures_index_ccidx.py +24 -82
  96. akshare/futures/futures_inventory_99.py +70 -272
  97. akshare/futures/futures_inventory_em.py +14 -11
  98. akshare/futures/futures_news_shmet.py +2 -2
  99. akshare/futures/futures_roll_yield.py +11 -24
  100. akshare/futures/futures_rule.py +7 -3
  101. akshare/futures/futures_rule_em.py +38 -0
  102. akshare/futures/futures_settlement_price_sgx.py +21 -6
  103. akshare/futures/futures_stock_js.py +0 -1
  104. akshare/futures/futures_to_spot.py +5 -6
  105. akshare/futures/futures_warehouse_receipt.py +48 -47
  106. akshare/futures/futures_zh_sina.py +3 -3
  107. akshare/futures/receipt.py +298 -165
  108. akshare/futures/requests_fun.py +16 -3
  109. akshare/futures/symbol_var.py +32 -13
  110. akshare/futures_derivative/cons.py +100 -103
  111. akshare/futures_derivative/futures_contract_info_cffex.py +55 -39
  112. akshare/futures_derivative/futures_contract_info_czce.py +2 -0
  113. akshare/futures_derivative/futures_contract_info_dce.py +43 -17
  114. akshare/futures_derivative/futures_contract_info_gfex.py +43 -31
  115. akshare/futures_derivative/futures_contract_info_ine.py +43 -34
  116. akshare/futures_derivative/futures_contract_info_shfe.py +3 -4
  117. akshare/futures_derivative/futures_cot_sina.py +8 -6
  118. akshare/futures_derivative/futures_index_sina.py +25 -13
  119. akshare/fx/cons.py +12 -7
  120. akshare/fx/fx_c_swap_cm.py +62 -0
  121. akshare/fx/fx_quote.py +3 -2
  122. akshare/fx/fx_quote_baidu.py +2 -1
  123. akshare/hf/__init__.py +1 -1
  124. akshare/hf/hf_sp500.py +8 -7
  125. akshare/index/cons.py +132 -28
  126. akshare/index/index_cni.py +7 -7
  127. akshare/index/index_cons.py +2 -2
  128. akshare/index/index_csindex.py +68 -0
  129. akshare/index/index_cx.py +20 -20
  130. akshare/index/index_drewry.py +17 -16
  131. akshare/index/index_eri.py +1 -0
  132. akshare/index/index_global_em.py +167 -0
  133. akshare/index/index_global_sina.py +82 -0
  134. akshare/index/index_kq_fz.py +17 -14
  135. akshare/index/index_kq_ss.py +1 -0
  136. akshare/index/index_option_qvix.py +351 -16
  137. akshare/index/index_research_sw.py +21 -21
  138. akshare/index/index_spot.py +9 -5
  139. akshare/index/index_stock_hk.py +5 -9
  140. akshare/index/index_stock_zh.py +111 -24
  141. akshare/index/index_stock_zh_csindex.py +3 -367
  142. akshare/index/index_sugar.py +18 -4
  143. akshare/index/index_sw.py +10 -2
  144. akshare/index/index_yw.py +53 -75
  145. akshare/index/index_zh_em.py +15 -82
  146. akshare/interest_rate/interbank_rate_em.py +0 -1
  147. akshare/movie/jm.js +0 -1
  148. akshare/news/__init__.py +1 -1
  149. akshare/news/news_baidu.py +395 -222
  150. akshare/news/news_stock.py +49 -16
  151. akshare/option/cons.py +2 -2
  152. akshare/option/option_commodity.py +341 -220
  153. akshare/option/option_commodity_sina.py +22 -26
  154. akshare/option/option_contract_info_ctp.py +63 -0
  155. akshare/option/option_current_sse.py +61 -0
  156. akshare/option/option_current_szse.py +84 -0
  157. akshare/option/option_czce.py +37 -9
  158. akshare/option/option_daily_stats_sse_szse.py +0 -1
  159. akshare/option/option_em.py +4 -8
  160. akshare/option/option_finance.py +60 -12
  161. akshare/option/option_finance_sina.py +7 -7
  162. akshare/option/option_lhb_em.py +0 -1
  163. akshare/option/option_margin.py +62 -0
  164. akshare/option/option_premium_analysis_em.py +58 -53
  165. akshare/option/option_risk_analysis_em.py +11 -8
  166. akshare/option/option_risk_indicator_sse.py +3 -4
  167. akshare/option/option_value_analysis_em.py +62 -55
  168. akshare/other/__init__.py +1 -1
  169. akshare/pro/__init__.py +0 -1
  170. akshare/pro/client.py +6 -4
  171. akshare/pro/cons.py +3 -2
  172. akshare/pro/data_pro.py +6 -5
  173. akshare/qdii/__init__.py +0 -0
  174. akshare/qdii/qdii_jsl.py +233 -0
  175. akshare/qhkc/__init__.py +1 -6
  176. akshare/qhkc/qhkc_api.py +64 -22
  177. akshare/qhkc_web/__init__.py +1 -6
  178. akshare/qhkc_web/qhkc_fund.py +10 -6
  179. akshare/qhkc_web/qhkc_index.py +28 -14
  180. akshare/qhkc_web/qhkc_tool.py +62 -59
  181. akshare/rate/__init__.py +1 -1
  182. akshare/rate/repo_rate.py +36 -32
  183. akshare/reits/__init__.py +1 -1
  184. akshare/reits/reits_basic.py +149 -13
  185. akshare/request.py +117 -0
  186. akshare/spot/__init__.py +1 -1
  187. akshare/spot/spot_hog_soozhu.py +165 -3
  188. akshare/spot/spot_sge.py +70 -9
  189. akshare/stock/cons.py +60 -23
  190. akshare/stock/stock_allotment_cninfo.py +8 -8
  191. akshare/stock/stock_ask_bid_em.py +3 -78
  192. akshare/stock/stock_board_concept_em.py +160 -35
  193. akshare/stock/stock_board_industry_em.py +163 -70
  194. akshare/stock/stock_dividend_cninfo.py +31 -17
  195. akshare/stock/stock_dzjy_em.py +347 -260
  196. akshare/stock/stock_fund_em.py +72 -64
  197. akshare/stock/stock_fund_hold.py +1 -2
  198. akshare/stock/stock_gsrl_em.py +1 -0
  199. akshare/stock/stock_hk_comparison_em.py +175 -0
  200. akshare/stock/stock_hk_famous.py +4 -5
  201. akshare/stock/stock_hk_fhpx_ths.py +2 -1
  202. akshare/stock/stock_hk_hot_rank_em.py +1 -0
  203. akshare/stock/stock_hk_sina.py +84 -36
  204. akshare/stock/stock_hold_control_cninfo.py +82 -0
  205. akshare/stock/stock_hold_control_em.py +0 -2
  206. akshare/stock/stock_hot_rank_em.py +4 -1
  207. akshare/stock/stock_hot_search_baidu.py +32 -19
  208. akshare/stock/stock_hot_up_em.py +4 -1
  209. akshare/stock/stock_hsgt_em.py +155 -0
  210. akshare/stock/stock_industry.py +1 -0
  211. akshare/stock/stock_industry_cninfo.py +1 -2
  212. akshare/stock/stock_info.py +6 -4
  213. akshare/stock/stock_info_em.py +17 -11
  214. akshare/stock/stock_intraday_em.py +4 -78
  215. akshare/stock/stock_intraday_sina.py +2 -2
  216. akshare/stock/stock_news_cx.py +39 -0
  217. akshare/stock/stock_profile_cninfo.py +7 -7
  218. akshare/stock/stock_profile_em.py +302 -0
  219. akshare/stock/stock_rank_forecast.py +6 -5
  220. akshare/stock/stock_repurchase_em.py +7 -2
  221. akshare/stock/stock_share_changes_cninfo.py +7 -5
  222. akshare/stock/stock_share_hold.py +24 -20
  223. akshare/stock/stock_stop.py +6 -6
  224. akshare/stock/stock_summary.py +153 -417
  225. akshare/stock/stock_us_famous.py +5 -6
  226. akshare/stock/stock_us_js.py +3 -2
  227. akshare/stock/stock_us_pink.py +38 -27
  228. akshare/stock/stock_us_sina.py +7 -3
  229. akshare/stock/stock_weibo_nlp.py +18 -20
  230. akshare/stock/stock_xq.py +24 -22
  231. akshare/stock/stock_zh_a_sina.py +8 -5
  232. akshare/stock/stock_zh_a_special.py +240 -243
  233. akshare/stock/stock_zh_a_tick_tx.py +11 -3
  234. akshare/stock/stock_zh_ah_tx.py +23 -26
  235. akshare/stock/stock_zh_b_sina.py +2 -2
  236. akshare/stock/stock_zh_comparison_em.py +250 -0
  237. akshare/stock/stock_zh_kcb_sina.py +67 -64
  238. akshare/stock_a/__init__.py +0 -0
  239. akshare/stock_a/stock_board_concept_name_em.py +170 -0
  240. akshare/stock_a/stock_individual_fund_flow_rank.py +258 -0
  241. akshare/stock_a/stock_zh_a_spot.py +212 -0
  242. akshare/stock_feature/cons.py +1 -0
  243. akshare/stock_feature/stock_a_indicator.py +9 -54
  244. akshare/stock_feature/stock_a_pe_and_pb.py +23 -5
  245. akshare/stock_feature/stock_account_em.py +0 -1
  246. akshare/stock_feature/stock_all_pb.py +2 -1
  247. akshare/stock_feature/stock_analyst_em.py +36 -30
  248. akshare/stock_feature/stock_board_concept_ths.py +328 -0
  249. akshare/stock_feature/stock_board_industry_ths.py +57 -2
  250. akshare/stock_feature/stock_buffett_index_lg.py +10 -8
  251. akshare/stock_feature/stock_classify_sina.py +3 -6
  252. akshare/stock_feature/stock_comment_em.py +81 -144
  253. akshare/stock_feature/stock_congestion_lg.py +2 -1
  254. akshare/stock_feature/stock_cyq_em.py +5 -11
  255. akshare/stock_feature/stock_disclosure_cninfo.py +6 -6
  256. akshare/stock_feature/stock_dxsyl_em.py +121 -74
  257. akshare/stock_feature/stock_ebs_lg.py +5 -4
  258. akshare/stock_feature/stock_esg_sina.py +29 -7
  259. akshare/stock_feature/stock_fhps_em.py +2 -1
  260. akshare/stock_feature/stock_fhps_ths.py +15 -7
  261. akshare/stock_feature/stock_fund_flow.py +30 -22
  262. akshare/stock_feature/stock_gddh_em.py +19 -11
  263. akshare/stock_feature/stock_gdfx_em.py +226 -113
  264. akshare/stock_feature/stock_gdhs.py +75 -50
  265. akshare/stock_feature/stock_gdzjc_em.py +21 -10
  266. akshare/stock_feature/stock_gpzy_em.py +78 -46
  267. akshare/stock_feature/stock_gxl_lg.py +3 -2
  268. akshare/stock_feature/stock_hist_em.py +137 -234
  269. akshare/stock_feature/stock_hist_tx.py +13 -10
  270. akshare/stock_feature/stock_hk_valuation_baidu.py +20 -8
  271. akshare/stock_feature/stock_hot_xq.py +4 -6
  272. akshare/stock_feature/stock_hsgt_em.py +269 -97
  273. akshare/stock_feature/stock_hsgt_exchange_rate.py +115 -87
  274. akshare/stock_feature/stock_hsgt_min_em.py +13 -16
  275. akshare/stock_feature/stock_info.py +7 -80
  276. akshare/stock_feature/stock_inner_trade_xq.py +38 -31
  277. akshare/stock_feature/stock_jgdy_em.py +43 -40
  278. akshare/stock_feature/stock_lhb_em.py +119 -3
  279. akshare/stock_feature/stock_margin_em.py +0 -1
  280. akshare/stock_feature/stock_margin_sse.py +0 -2
  281. akshare/stock_feature/stock_pankou_em.py +71 -35
  282. akshare/stock_feature/stock_qsjy_em.py +13 -4
  283. akshare/stock_feature/stock_report_em.py +151 -7
  284. akshare/stock_feature/stock_research_report_em.py +55 -20
  285. akshare/stock_feature/stock_sy_em.py +20 -15
  286. akshare/stock_feature/stock_technology_ths.py +122 -77
  287. akshare/stock_feature/stock_tfp_em.py +2 -1
  288. akshare/stock_feature/stock_three_report_em.py +21 -5
  289. akshare/stock_feature/stock_ttm_lyr.py +18 -9
  290. akshare/stock_feature/stock_value_em.py +83 -0
  291. akshare/stock_feature/stock_yjbb_em.py +58 -32
  292. akshare/stock_feature/stock_yjyg_cninfo.py +6 -2
  293. akshare/stock_feature/stock_yjyg_em.py +1 -1
  294. akshare/stock_feature/stock_yzxdr_em.py +24 -22
  295. akshare/stock_feature/stock_zdhtmx_em.py +20 -6
  296. akshare/stock_feature/stock_zh_vote_baidu.py +4 -1
  297. akshare/stock_feature/stock_ztb_em.py +39 -24
  298. akshare/stock_fundamental/__init__.py +1 -1
  299. akshare/stock_fundamental/stock_basic_info_xq.py +119 -0
  300. akshare/stock_fundamental/{stock_finance_hk.py → stock_finance_hk_em.py} +23 -16
  301. akshare/stock_fundamental/{stock_finance.py → stock_finance_sina.py} +60 -7
  302. akshare/stock_fundamental/stock_finance_ths.py +524 -57
  303. akshare/stock_fundamental/stock_finance_us_em.py +268 -0
  304. akshare/stock_fundamental/stock_gbjg_em.py +80 -0
  305. akshare/stock_fundamental/stock_hold.py +26 -17
  306. akshare/stock_fundamental/stock_ipo_declare.py +1 -0
  307. akshare/stock_fundamental/stock_kcb_detail_sse.py +10 -10
  308. akshare/stock_fundamental/stock_kcb_sse.py +26 -25
  309. akshare/stock_fundamental/stock_notice.py +12 -3
  310. akshare/stock_fundamental/stock_profit_forecast_em.py +31 -13
  311. akshare/stock_fundamental/stock_profit_forecast_hk_etnet.py +64 -41
  312. akshare/stock_fundamental/stock_profit_forecast_ths.py +86 -35
  313. akshare/stock_fundamental/stock_recommend.py +20 -4
  314. akshare/stock_fundamental/stock_zygc.py +5 -62
  315. akshare/utils/context.py +43 -0
  316. akshare/utils/demjson.py +2009 -1338
  317. akshare/utils/func.py +49 -2
  318. akshare/utils/multi_decrypt.py +53 -0
  319. akshare/utils/token_process.py +6 -5
  320. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/METADATA +54 -80
  321. akshare-1.17.99.dist-info/RECORD +409 -0
  322. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/WHEEL +1 -1
  323. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info/licenses}/LICENSE +1 -1
  324. tests/test_func.py +3 -5
  325. akshare/bond/bond_futures.py +0 -50
  326. akshare/bond/bond_investing.py +0 -139
  327. akshare/crypto/crypto_hist_investing.py +0 -249
  328. akshare/fund/fund_announcement.py +0 -56
  329. akshare/futures/futures_international.py +0 -170
  330. akshare/futures/futures_news_baidu.py +0 -54
  331. akshare/futures/inventory_data.py +0 -100
  332. akshare/futures_derivative/futures_index_price_nh.py +0 -61
  333. akshare/futures_derivative/futures_index_return_nh.py +0 -47
  334. akshare/futures_derivative/futures_index_volatility_nh.py +0 -53
  335. akshare/futures_derivative/futures_other_index_nh.py +0 -145
  336. akshare/index/index_fear_greed_funddb.py +0 -78
  337. akshare/index/index_investing.py +0 -232
  338. akshare/sport/__init__.py +0 -6
  339. akshare/sport/sport_olympic.py +0 -27
  340. akshare/stock_feature/stock_wencai.py +0 -104
  341. akshare/stock_fundamental/stock_mda_ym.py +0 -40
  342. akshare-1.14.49.dist-info/RECORD +0 -387
  343. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/top_level.txt +0 -0
@@ -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
@@ -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)
@@ -1,19 +1,24 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2023/8/20 20:00
4
+ Date: 2025/2/28 13:00
5
5
  Desc: 东方财富网-数据中心-研究报告-个股研报
6
6
  https://data.eastmoney.com/report/stock.jshtml
7
7
  """
8
+
9
+ import datetime
8
10
  import pandas as pd
9
11
  import requests
10
- from tqdm import tqdm
12
+
13
+ from akshare.utils.tqdm import get_tqdm
11
14
 
12
15
 
13
16
  def stock_research_report_em(symbol: str = "000001") -> pd.DataFrame:
14
17
  """
15
18
  东方财富网-数据中心-研究报告-个股研报
16
19
  https://data.eastmoney.com/report/stock.jshtml
20
+ :param symbol: 个股代码
21
+ :type symbol: str
17
22
  :return: 个股研报
18
23
  :rtype: pandas.DataFrame
19
24
  """
@@ -25,7 +30,7 @@ def stock_research_report_em(symbol: str = "000001") -> pd.DataFrame:
25
30
  "rating": "*",
26
31
  "ratingChange": "*",
27
32
  "beginTime": "2000-01-01",
28
- "endTime": "2025-01-01",
33
+ "endTime": f"{datetime.datetime.now().year + 1}-01-01",
29
34
  "pageNo": "1",
30
35
  "fields": "",
31
36
  "qType": "0",
@@ -35,12 +40,13 @@ def stock_research_report_em(symbol: str = "000001") -> pd.DataFrame:
35
40
  "p": "1",
36
41
  "pageNum": "1",
37
42
  "pageNumber": "1",
38
- "_": "1692533168153",
39
43
  }
40
44
  r = requests.get(url, params=params)
41
45
  data_json = r.json()
42
46
  total_page = data_json["TotalPage"]
47
+ current_year = data_json["currentYear"]
43
48
  big_df = pd.DataFrame()
49
+ tqdm = get_tqdm()
44
50
  for page in tqdm(range(1, total_page + 1), leave=False):
45
51
  params.update(
46
52
  {
@@ -53,9 +59,18 @@ def stock_research_report_em(symbol: str = "000001") -> pd.DataFrame:
53
59
  r = requests.get(url, params=params)
54
60
  data_json = r.json()
55
61
  temp_df = pd.DataFrame(data_json["data"])
56
- big_df = pd.concat([big_df, temp_df], axis=0, ignore_index=True)
62
+ big_df = pd.concat(objs=[big_df, temp_df], axis=0, ignore_index=True)
57
63
  big_df.reset_index(inplace=True)
58
64
  big_df["index"] = big_df["index"] + 1
65
+ predict_this_year_eps_title = f"{current_year}-盈利预测-收益"
66
+ predict_this_year_pe_title = f"{current_year}-盈利预测-市盈率"
67
+ predict_next_year_eps_title = f"{current_year + 1}-盈利预测-收益"
68
+ predict_next_year_pe_title = f"{current_year + 1}-盈利预测-市盈率"
69
+ predict_next_two_year_eps_title = f"{current_year + 2}-盈利预测-收益"
70
+ predict_next_two_year_pe_title = f"{current_year + 2}-盈利预测-市盈率"
71
+ big_df["pdfUrl"] = big_df["infoCode"].apply(
72
+ lambda x: f"https://pdf.dfcfw.com/pdf/H3_{x}_1.pdf"
73
+ )
59
74
  big_df.rename(
60
75
  columns={
61
76
  "index": "序号",
@@ -68,12 +83,12 @@ def stock_research_report_em(symbol: str = "000001") -> pd.DataFrame:
68
83
  "publishDate": "日期",
69
84
  "infoCode": "-",
70
85
  "column": "-",
71
- "predictNextTwoYearEps": "-",
72
- "predictNextTwoYearPe": "-",
73
- "predictNextYearEps": "2024-盈利预测-收益",
74
- "predictNextYearPe": "2024-盈利预测-市盈率",
75
- "predictThisYearEps": "2023-盈利预测-收益",
76
- "predictThisYearPe": "2023-盈利预测-市盈率",
86
+ "predictNextTwoYearEps": predict_next_two_year_eps_title,
87
+ "predictNextTwoYearPe": predict_next_two_year_pe_title,
88
+ "predictNextYearEps": predict_next_year_eps_title,
89
+ "predictNextYearPe": predict_next_year_pe_title,
90
+ "predictThisYearEps": predict_this_year_eps_title,
91
+ "predictThisYearPe": predict_this_year_pe_title,
77
92
  "predictLastYearEps": "-",
78
93
  "predictLastYearPe": "-",
79
94
  "actualLastTwoYearEps": "-",
@@ -110,6 +125,7 @@ def stock_research_report_em(symbol: str = "000001") -> pd.DataFrame:
110
125
  "authorID": "-",
111
126
  "count": "近一月个股研报数",
112
127
  "orgType": "-",
128
+ "pdfUrl": "报告PDF链接",
113
129
  },
114
130
  inplace=True,
115
131
  )
@@ -122,20 +138,39 @@ def stock_research_report_em(symbol: str = "000001") -> pd.DataFrame:
122
138
  "东财评级",
123
139
  "机构",
124
140
  "近一月个股研报数",
125
- "2023-盈利预测-收益",
126
- "2023-盈利预测-市盈率",
127
- "2024-盈利预测-收益",
128
- "2024-盈利预测-市盈率",
141
+ predict_this_year_eps_title,
142
+ predict_this_year_pe_title,
143
+ predict_next_year_eps_title,
144
+ predict_next_year_pe_title,
145
+ predict_next_two_year_eps_title,
146
+ predict_next_two_year_pe_title,
129
147
  "行业",
130
148
  "日期",
149
+ "报告PDF链接",
131
150
  ]
132
151
  ]
133
152
  big_df["日期"] = pd.to_datetime(big_df["日期"], errors="coerce").dt.date
134
- big_df["近一月个股研报数"] = pd.to_numeric(big_df["近一月个股研报数"], errors="coerce")
135
- big_df["2023-盈利预测-收益"] = pd.to_numeric(big_df["2023-盈利预测-收益"], errors="coerce")
136
- big_df["2023-盈利预测-市盈率"] = pd.to_numeric(big_df["2023-盈利预测-市盈率"], errors="coerce")
137
- big_df["2024-盈利预测-收益"] = pd.to_numeric(big_df["2024-盈利预测-收益"], errors="coerce")
138
- big_df["2024-盈利预测-市盈率"] = pd.to_numeric(big_df["2024-盈利预测-市盈率"], errors="coerce")
153
+ big_df["近一月个股研报数"] = pd.to_numeric(
154
+ big_df["近一月个股研报数"], errors="coerce"
155
+ )
156
+ big_df[predict_this_year_eps_title] = pd.to_numeric(
157
+ big_df[predict_this_year_eps_title], errors="coerce"
158
+ )
159
+ big_df[predict_this_year_pe_title] = pd.to_numeric(
160
+ big_df[predict_this_year_pe_title], errors="coerce"
161
+ )
162
+ big_df[predict_next_year_eps_title] = pd.to_numeric(
163
+ big_df[predict_next_year_eps_title], errors="coerce"
164
+ )
165
+ big_df[predict_next_year_pe_title] = pd.to_numeric(
166
+ big_df[predict_next_year_pe_title], errors="coerce"
167
+ )
168
+ big_df[predict_next_two_year_eps_title] = pd.to_numeric(
169
+ big_df[predict_next_two_year_eps_title], errors="coerce"
170
+ )
171
+ big_df[predict_next_two_year_pe_title] = pd.to_numeric(
172
+ big_df[predict_next_two_year_pe_title], errors="coerce"
173
+ )
139
174
  return big_df
140
175
 
141
176
 
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/4/21 17:30
4
+ Date: 2024/9/15 15:30
5
5
  Desc: 东方财富网-数据中心-特色数据-商誉
6
6
  东方财富网-数据中心-特色数据-商誉-A股商誉市场概况: https://data.eastmoney.com/sy/scgk.html
7
7
  东方财富网-数据中心-特色数据-商誉-商誉减值预期明细: https://data.eastmoney.com/sy/yqlist.html
@@ -12,7 +12,8 @@ Desc: 东方财富网-数据中心-特色数据-商誉
12
12
 
13
13
  import pandas as pd
14
14
  import requests
15
- from tqdm import tqdm
15
+
16
+ from akshare.utils.tqdm import get_tqdm
16
17
 
17
18
 
18
19
  def stock_sy_profile_em() -> pd.DataFrame:
@@ -80,7 +81,7 @@ def stock_sy_profile_em() -> pd.DataFrame:
80
81
  return data_df
81
82
 
82
83
 
83
- def stock_sy_yq_em(date: str = "20221231") -> pd.DataFrame:
84
+ def stock_sy_yq_em(date: str = "20240630") -> pd.DataFrame:
84
85
  """
85
86
  东方财富网-数据中心-特色数据-商誉-商誉减值预期明细
86
87
  https://data.eastmoney.com/sy/yqlist.html
@@ -104,12 +105,13 @@ def stock_sy_yq_em(date: str = "20221231") -> pd.DataFrame:
104
105
  data_json = r.json()
105
106
  big_df = pd.DataFrame()
106
107
  total_page = int(data_json["result"]["pages"])
108
+ tqdm = get_tqdm()
107
109
  for page in tqdm(range(1, total_page + 1), leave=False):
108
110
  params.update({"pageNumber": page})
109
111
  r = requests.get(url, params=params)
110
112
  data_json = r.json()
111
113
  temp_df = pd.DataFrame(data_json["result"]["data"])
112
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
114
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
113
115
  big_df.reset_index(inplace=True)
114
116
  big_df["index"] = big_df["index"] + 1
115
117
  big_df.rename(
@@ -188,7 +190,7 @@ def stock_sy_yq_em(date: str = "20221231") -> pd.DataFrame:
188
190
  return big_df
189
191
 
190
192
 
191
- def stock_sy_jz_em(date: str = "20230331") -> pd.DataFrame:
193
+ def stock_sy_jz_em(date: str = "20240630") -> pd.DataFrame:
192
194
  """
193
195
  东方财富网-数据中心-特色数据-商誉-个股商誉减值明细
194
196
  https://data.eastmoney.com/sy/jzlist.html
@@ -212,12 +214,13 @@ def stock_sy_jz_em(date: str = "20230331") -> pd.DataFrame:
212
214
  data_json = r.json()
213
215
  big_df = pd.DataFrame()
214
216
  total_page = int(data_json["result"]["pages"])
217
+ tqdm = get_tqdm()
215
218
  for page in tqdm(range(1, total_page + 1), leave=False):
216
219
  params.update({"pageNumber": page})
217
220
  r = requests.get(url, params=params)
218
221
  data_json = r.json()
219
222
  temp_df = pd.DataFrame(data_json["result"]["data"])
220
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
223
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
221
224
  big_df.reset_index(inplace=True)
222
225
  big_df["index"] = big_df["index"] + 1
223
226
  big_df.rename(
@@ -312,12 +315,13 @@ def stock_sy_em(date: str = "20231231") -> pd.DataFrame:
312
315
  data_json = r.json()
313
316
  big_df = pd.DataFrame()
314
317
  total_page = int(data_json["result"]["pages"])
318
+ tqdm = get_tqdm()
315
319
  for page in tqdm(range(1, total_page + 1), leave=False):
316
320
  params.update({"pageNumber": page})
317
321
  r = requests.get(url, params=params)
318
322
  data_json = r.json()
319
323
  temp_df = pd.DataFrame(data_json["result"]["data"])
320
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
324
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
321
325
  big_df.reset_index(inplace=True)
322
326
  big_df["index"] = big_df["index"] + 1
323
327
  big_df.rename(
@@ -379,7 +383,7 @@ def stock_sy_em(date: str = "20231231") -> pd.DataFrame:
379
383
  return big_df
380
384
 
381
385
 
382
- def stock_sy_hy_em(date: str = "20231231") -> pd.DataFrame:
386
+ def stock_sy_hy_em(date: str = "20240930") -> pd.DataFrame:
383
387
  """
384
388
  东方财富网-数据中心-特色数据-商誉-行业商誉
385
389
  https://data.eastmoney.com/sy/hylist.html
@@ -403,12 +407,13 @@ def stock_sy_hy_em(date: str = "20231231") -> pd.DataFrame:
403
407
  data_json = r.json()
404
408
  big_df = pd.DataFrame()
405
409
  total_page = int(data_json["result"]["pages"])
410
+ tqdm = get_tqdm()
406
411
  for page in tqdm(range(1, total_page + 1), leave=False):
407
412
  params.update({"pageNumber": page})
408
413
  r = requests.get(url, params=params)
409
414
  data_json = r.json()
410
415
  temp_df = pd.DataFrame(data_json["result"]["data"])
411
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
416
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
412
417
  big_df.reset_index(inplace=True, drop=True)
413
418
  big_df.rename(
414
419
  columns={
@@ -447,17 +452,17 @@ def stock_sy_hy_em(date: str = "20231231") -> pd.DataFrame:
447
452
 
448
453
 
449
454
  if __name__ == "__main__":
450
- stock_em_sy_profile_df = stock_sy_profile_em()
451
- print(stock_em_sy_profile_df)
455
+ stock_sy_profile_em_df = stock_sy_profile_em()
456
+ print(stock_sy_profile_em_df)
452
457
 
453
- stock_sy_yq_em_df = stock_sy_yq_em(date="20221231")
458
+ stock_sy_yq_em_df = stock_sy_yq_em(date="20240630")
454
459
  print(stock_sy_yq_em_df)
455
460
 
456
- stock_sy_jz_em_df = stock_sy_jz_em(date="20230630")
461
+ stock_sy_jz_em_df = stock_sy_jz_em(date="20240630")
457
462
  print(stock_sy_jz_em_df)
458
463
 
459
- stock_sy_em_df = stock_sy_em(date="20231231")
464
+ stock_sy_em_df = stock_sy_em(date="20240630")
460
465
  print(stock_sy_em_df)
461
466
 
462
- stock_sy_hy_em_df = stock_sy_hy_em(date="20231231")
467
+ stock_sy_hy_em_df = stock_sy_hy_em(date="20240930")
463
468
  print(stock_sy_hy_em_df)