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,16 +1,18 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2023/4/7 15:22
4
+ Date: 2025/3/18 15:00
5
5
  Desc: 东方财富网-数据中心-年报季报-分红送配
6
6
  https://data.eastmoney.com/yjfp/
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
- from tqdm import tqdm
11
+
12
+ from akshare.utils.tqdm import get_tqdm
11
13
 
12
14
 
13
- def stock_fhps_em(date: str = "20210630") -> pd.DataFrame:
15
+ def stock_fhps_em(date: str = "20231231") -> pd.DataFrame:
14
16
  """
15
17
  东方财富网-数据中心-年报季报-分红送配
16
18
  https://data.eastmoney.com/yjfp/
@@ -19,6 +21,10 @@ def stock_fhps_em(date: str = "20210630") -> pd.DataFrame:
19
21
  :return: 分红送配
20
22
  :rtype: pandas.DataFrame
21
23
  """
24
+ import warnings
25
+
26
+ warnings.simplefilter(action="ignore", category=FutureWarning)
27
+
22
28
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
23
29
  params = {
24
30
  "sortColumns": "PLAN_NOTICE_DATE",
@@ -38,12 +44,13 @@ def stock_fhps_em(date: str = "20210630") -> pd.DataFrame:
38
44
  data_json = r.json()
39
45
  total_pages = int(data_json["result"]["pages"])
40
46
  big_df = pd.DataFrame()
47
+ tqdm = get_tqdm()
41
48
  for page in tqdm(range(1, total_pages + 1), leave=False):
42
49
  params.update({"pageNumber": page})
43
50
  r = requests.get(url, params=params)
44
51
  data_json = r.json()
45
52
  temp_df = pd.DataFrame(data_json["result"]["data"])
46
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
53
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
47
54
 
48
55
  big_df.columns = [
49
56
  "_",
@@ -99,22 +106,35 @@ def stock_fhps_em(date: str = "20210630") -> pd.DataFrame:
99
106
  "最新公告日期",
100
107
  ]
101
108
  ]
102
- big_df["送转股份-送转总比例"] = pd.to_numeric(big_df["送转股份-送转总比例"])
103
- big_df["送转股份-送转比例"] = pd.to_numeric(big_df["送转股份-送转比例"])
104
- big_df["送转股份-转股比例"] = pd.to_numeric(big_df["送转股份-转股比例"])
105
- big_df["现金分红-现金分红比例"] = pd.to_numeric(big_df["现金分红-现金分红比例"])
106
- big_df["现金分红-股息率"] = pd.to_numeric(big_df["现金分红-股息率"])
107
- big_df["每股收益"] = pd.to_numeric(big_df["每股收益"])
108
- big_df["每股净资产"] = pd.to_numeric(big_df["每股净资产"])
109
- big_df["每股公积金"] = pd.to_numeric(big_df["每股公积金"])
110
- big_df["每股未分配利润"] = pd.to_numeric(big_df["每股未分配利润"])
111
- big_df["净利润同比增长"] = pd.to_numeric(big_df["净利润同比增长"])
112
- big_df["总股本"] = pd.to_numeric(big_df["总股本"])
109
+ big_df["送转股份-送转总比例"] = pd.to_numeric(
110
+ big_df["送转股份-送转总比例"], errors="coerce"
111
+ )
112
+ big_df["送转股份-送转比例"] = pd.to_numeric(
113
+ big_df["送转股份-送转比例"], errors="coerce"
114
+ )
115
+ big_df["送转股份-转股比例"] = pd.to_numeric(
116
+ big_df["送转股份-转股比例"], errors="coerce"
117
+ )
118
+ big_df["现金分红-现金分红比例"] = pd.to_numeric(
119
+ big_df["现金分红-现金分红比例"], errors="coerce"
120
+ )
121
+ big_df["现金分红-股息率"] = pd.to_numeric(
122
+ big_df["现金分红-股息率"], errors="coerce"
123
+ )
124
+ big_df["每股收益"] = pd.to_numeric(big_df["每股收益"], errors="coerce")
125
+ big_df["每股净资产"] = pd.to_numeric(big_df["每股净资产"], errors="coerce")
126
+ big_df["每股公积金"] = pd.to_numeric(big_df["每股公积金"], errors="coerce")
127
+ big_df["每股未分配利润"] = pd.to_numeric(big_df["每股未分配利润"], errors="coerce")
128
+ big_df["净利润同比增长"] = pd.to_numeric(big_df["净利润同比增长"], errors="coerce")
129
+ big_df["总股本"] = pd.to_numeric(big_df["总股本"], errors="coerce")
113
130
 
114
131
  big_df["预案公告日"] = pd.to_datetime(big_df["预案公告日"], errors="coerce").dt.date
115
132
  big_df["股权登记日"] = pd.to_datetime(big_df["股权登记日"], errors="coerce").dt.date
116
133
  big_df["除权除息日"] = pd.to_datetime(big_df["除权除息日"], errors="coerce").dt.date
117
- big_df["最新公告日期"] = pd.to_datetime(big_df["最新公告日期"], errors="coerce").dt.date
134
+ big_df["最新公告日期"] = pd.to_datetime(
135
+ big_df["最新公告日期"], errors="coerce"
136
+ ).dt.date
137
+ big_df.sort_values(["最新公告日期"], inplace=True, ignore_index=True)
118
138
  return big_df
119
139
 
120
140
 
@@ -146,12 +166,13 @@ def stock_fhps_detail_em(symbol: str = "300073") -> pd.DataFrame:
146
166
  data_json = r.json()
147
167
  total_pages = int(data_json["result"]["pages"])
148
168
  big_df = pd.DataFrame()
169
+ tqdm = get_tqdm()
149
170
  for page in tqdm(range(1, total_pages + 1), leave=False):
150
171
  params.update({"pageNumber": page})
151
172
  r = requests.get(url, params=params)
152
173
  data_json = r.json()
153
174
  temp_df = pd.DataFrame(data_json["result"]["data"])
154
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
175
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
155
176
 
156
177
  big_df.columns = [
157
178
  "_",
@@ -209,29 +230,44 @@ def stock_fhps_detail_em(symbol: str = "300073") -> pd.DataFrame:
209
230
  ]
210
231
  ]
211
232
  big_df["报告期"] = pd.to_datetime(big_df["报告期"], errors="coerce").dt.date
212
- big_df["业绩披露日期"] = pd.to_datetime(big_df["业绩披露日期"], errors="coerce").dt.date
233
+ big_df["业绩披露日期"] = pd.to_datetime(
234
+ big_df["业绩披露日期"], errors="coerce"
235
+ ).dt.date
213
236
  big_df["预案公告日"] = pd.to_datetime(big_df["预案公告日"], errors="coerce").dt.date
214
237
  big_df["股权登记日"] = pd.to_datetime(big_df["股权登记日"], errors="coerce").dt.date
215
238
  big_df["除权除息日"] = pd.to_datetime(big_df["除权除息日"], errors="coerce").dt.date
216
- big_df["最新公告日期"] = pd.to_datetime(big_df["最新公告日期"], errors="coerce").dt.date
239
+ big_df["最新公告日期"] = pd.to_datetime(
240
+ big_df["最新公告日期"], errors="coerce"
241
+ ).dt.date
217
242
 
218
- big_df["送转股份-送转总比例"] = pd.to_numeric(big_df["送转股份-送转总比例"], errors="coerce")
219
- big_df["送转股份-送股比例"] = pd.to_numeric(big_df["送转股份-送股比例"], errors="coerce")
220
- big_df["送转股份-转股比例"] = pd.to_numeric(big_df["送转股份-转股比例"], errors="coerce")
221
- big_df["现金分红-现金分红比例"] = pd.to_numeric(big_df["现金分红-现金分红比例"], errors="coerce")
222
- big_df["现金分红-股息率"] = pd.to_numeric(big_df["现金分红-股息率"], errors="coerce")
243
+ big_df["送转股份-送转总比例"] = pd.to_numeric(
244
+ big_df["送转股份-送转总比例"], errors="coerce"
245
+ )
246
+ big_df["送转股份-送股比例"] = pd.to_numeric(
247
+ big_df["送转股份-送股比例"], errors="coerce"
248
+ )
249
+ big_df["送转股份-转股比例"] = pd.to_numeric(
250
+ big_df["送转股份-转股比例"], errors="coerce"
251
+ )
252
+ big_df["现金分红-现金分红比例"] = pd.to_numeric(
253
+ big_df["现金分红-现金分红比例"], errors="coerce"
254
+ )
255
+ big_df["现金分红-股息率"] = pd.to_numeric(
256
+ big_df["现金分红-股息率"], errors="coerce"
257
+ )
223
258
  big_df["每股收益"] = pd.to_numeric(big_df["每股收益"], errors="coerce")
224
259
  big_df["每股净资产"] = pd.to_numeric(big_df["每股净资产"], errors="coerce")
225
260
  big_df["每股公积金"] = pd.to_numeric(big_df["每股公积金"], errors="coerce")
226
261
  big_df["每股未分配利润"] = pd.to_numeric(big_df["每股未分配利润"], errors="coerce")
227
262
  big_df["净利润同比增长"] = pd.to_numeric(big_df["净利润同比增长"], errors="coerce")
228
263
  big_df["总股本"] = pd.to_numeric(big_df["总股本"], errors="coerce")
264
+ big_df.sort_values(["报告期"], inplace=True, ignore_index=True)
229
265
  return big_df
230
266
 
231
267
 
232
268
  if __name__ == "__main__":
233
- stock_fhps_em_df = stock_fhps_em(date="20221231")
269
+ stock_fhps_em_df = stock_fhps_em(date="20231231")
234
270
  print(stock_fhps_em_df)
235
271
 
236
- stock_fhps_detail_em_df = stock_fhps_detail_em(symbol="300073")
272
+ stock_fhps_detail_em_df = stock_fhps_detail_em(symbol="000005")
237
273
  print(stock_fhps_detail_em_df)
@@ -1,17 +1,20 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2023/4/9 21:44
5
- Desc: 同花顺-分红融资
4
+ Date: 2024/5/13 10:30
5
+ Desc: 同花顺-分红情况
6
6
  https://basic.10jqka.com.cn/new/603444/bonus.html
7
7
  """
8
+
9
+ from io import StringIO
10
+
8
11
  import pandas as pd
9
12
  import requests
10
13
 
11
14
 
12
15
  def stock_fhps_detail_ths(symbol: str = "603444") -> pd.DataFrame:
13
16
  """
14
- 同花顺-分红融资
17
+ 同花顺-分红情况
15
18
  https://basic.10jqka.com.cn/new/603444/bonus.html
16
19
  :param symbol: 股票代码
17
20
  :type symbol: str
@@ -21,15 +24,39 @@ def stock_fhps_detail_ths(symbol: str = "603444") -> pd.DataFrame:
21
24
  url = f"https://basic.10jqka.com.cn/new/{symbol}/bonus.html"
22
25
  headers = {
23
26
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
24
- "AppleWebKit/537.36 (KHTML, like Gecko) "
25
- "Chrome/89.0.4389.90 Safari/537.36",
27
+ "AppleWebKit/537.36 (KHTML, like Gecko) "
28
+ "Chrome/89.0.4389.90 Safari/537.36",
26
29
  }
27
30
  r = requests.get(url, headers=headers)
28
31
  r.encoding = "gbk"
29
- temp_df = pd.read_html(r.text)[0]
32
+ temp_df = pd.read_html(StringIO(r.text))[0]
33
+ temp_df["董事会日期"] = pd.to_datetime(
34
+ temp_df["董事会日期"], format="%Y-%m-%d", errors="coerce"
35
+ ).dt.date
36
+ temp_df["股东大会预案公告日期"] = pd.to_datetime(
37
+ temp_df["股东大会预案公告日期"], format="%Y-%m-%d", errors="coerce"
38
+ ).dt.date
39
+ temp_df["实施公告日"] = pd.to_datetime(
40
+ temp_df["实施公告日"], format="%Y-%m-%d", errors="coerce"
41
+ ).dt.date
42
+ if "A股股权登记日" in temp_df.columns:
43
+ temp_df["A股股权登记日"] = pd.to_datetime(
44
+ temp_df["A股股权登记日"], format="%Y-%m-%d", errors="coerce"
45
+ ).dt.date
46
+ temp_df["A股除权除息日"] = pd.to_datetime(
47
+ temp_df["A股除权除息日"], format="%Y-%m-%d", errors="coerce"
48
+ ).dt.date
49
+ else:
50
+ temp_df["B股股权登记日"] = pd.to_datetime(
51
+ temp_df["B股股权登记日"], format="%Y-%m-%d", errors="coerce"
52
+ ).dt.date
53
+ temp_df["B股除权除息日"] = pd.to_datetime(
54
+ temp_df["B股除权除息日"], format="%Y-%m-%d", errors="coerce"
55
+ ).dt.date
56
+ temp_df.sort_values(by=["董事会日期"], ignore_index=True, inplace=True)
30
57
  return temp_df
31
58
 
32
59
 
33
60
  if __name__ == "__main__":
34
- stock_fhps_detail_ths_df = stock_fhps_detail_ths(symbol="603444")
61
+ stock_fhps_detail_ths_df = stock_fhps_detail_ths(symbol="200596")
35
62
  print(stock_fhps_detail_ths_df)
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/2/21 11:00
4
+ Date: 2024/8/15 18:00
5
5
  Desc: 同花顺-数据中心-资金流向
6
6
  同花顺-数据中心-资金流向-个股资金流
7
7
  https://data.10jqka.com.cn/funds/ggzjl/#refCountId=data_55f13c2c_254
@@ -12,12 +12,13 @@ https://data.10jqka.com.cn/funds/hyzjl/#refCountId=data_55f13c2c_254
12
12
  同花顺-数据中心-资金流向-打单追踪
13
13
  https://data.10jqka.com.cn/funds/ddzz/#refCountId=data_55f13c2c_254
14
14
  """
15
+
15
16
  from io import StringIO
16
17
 
17
18
  import pandas as pd
18
19
  import requests
19
20
  from bs4 import BeautifulSoup
20
- from py_mini_racer import py_mini_racer
21
+ import py_mini_racer
21
22
  from akshare.utils.tqdm import get_tqdm
22
23
 
23
24
  from akshare.datasets import get_ths_js
@@ -32,7 +33,7 @@ def _get_file_content_ths(file: str = "ths.js") -> str:
32
33
  :rtype: str
33
34
  """
34
35
  setting_file_path = get_ths_js(file)
35
- with open(setting_file_path) as f:
36
+ with open(setting_file_path, encoding="utf-8") as f:
36
37
  file_data = f.read()
37
38
  return file_data
38
39
 
@@ -60,13 +61,14 @@ def stock_fund_flow_individual(symbol: str = "即时") -> pd.DataFrame:
60
61
  "Host": "data.10jqka.com.cn",
61
62
  "Pragma": "no-cache",
62
63
  "Referer": "http://data.10jqka.com.cn/funds/hyzjl/",
63
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36",
64
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
65
+ "Chrome/90.0.4430.85 Safari/537.36",
64
66
  "X-Requested-With": "XMLHttpRequest",
65
67
  }
66
68
  url = "http://data.10jqka.com.cn/funds/ggzjl/field/code/order/desc/ajax/1/free/1/"
67
69
  r = requests.get(url, headers=headers)
68
- soup = BeautifulSoup(r.text, "lxml")
69
- raw_page = soup.find("span", attrs={"class": "page_info"}).text
70
+ soup = BeautifulSoup(r.text, features="lxml")
71
+ raw_page = soup.find(name="span", attrs={"class": "page_info"}).text
70
72
  page_num = raw_page.split("/")[1]
71
73
  if symbol == "3日排行":
72
74
  url = "http://data.10jqka.com.cn/funds/ggzjl/board/3/field/zdf/order/desc/page/{}/ajax/1/free/1/"
@@ -95,12 +97,13 @@ def stock_fund_flow_individual(symbol: str = "即时") -> pd.DataFrame:
95
97
  "Host": "data.10jqka.com.cn",
96
98
  "Pragma": "no-cache",
97
99
  "Referer": "http://data.10jqka.com.cn/funds/hyzjl/",
98
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36",
100
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
101
+ "Chrome/90.0.4430.85 Safari/537.36",
99
102
  "X-Requested-With": "XMLHttpRequest",
100
103
  }
101
104
  r = requests.get(url.format(page), headers=headers)
102
105
  temp_df = pd.read_html(StringIO(r.text))[0]
103
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
106
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
104
107
 
105
108
  del big_df["序号"]
106
109
  big_df.reset_index(inplace=True)
@@ -154,15 +157,16 @@ def stock_fund_flow_concept(symbol: str = "即时") -> pd.DataFrame:
154
157
  "Host": "data.10jqka.com.cn",
155
158
  "Pragma": "no-cache",
156
159
  "Referer": "http://data.10jqka.com.cn/funds/gnzjl/",
157
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36",
160
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
161
+ "Chrome/90.0.4430.85 Safari/537.36",
158
162
  "X-Requested-With": "XMLHttpRequest",
159
163
  }
160
164
  url = (
161
165
  "http://data.10jqka.com.cn/funds/gnzjl/field/tradezdf/order/desc/ajax/1/free/1/"
162
166
  )
163
167
  r = requests.get(url, headers=headers)
164
- soup = BeautifulSoup(r.text, "lxml")
165
- raw_page = soup.find("span", attrs={"class": "page_info"}).text
168
+ soup = BeautifulSoup(r.text, features="lxml")
169
+ raw_page = soup.find(name="span", attrs={"class": "page_info"}).text
166
170
  page_num = raw_page.split("/")[1]
167
171
  if symbol == "3日排行":
168
172
  url = "http://data.10jqka.com.cn/funds/gnzjl/board/3/field/tradezdf/order/desc/page/{}/ajax/1/free/1/"
@@ -191,12 +195,13 @@ def stock_fund_flow_concept(symbol: str = "即时") -> pd.DataFrame:
191
195
  "Host": "data.10jqka.com.cn",
192
196
  "Pragma": "no-cache",
193
197
  "Referer": "http://data.10jqka.com.cn/funds/gnzjl/",
194
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36",
198
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
199
+ "Chrome/90.0.4430.85 Safari/537.36",
195
200
  "X-Requested-With": "XMLHttpRequest",
196
201
  }
197
202
  r = requests.get(url.format(page), headers=headers)
198
203
  temp_df = pd.read_html(StringIO(r.text))[0]
199
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
204
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
200
205
 
201
206
  del big_df["序号"]
202
207
  big_df.reset_index(inplace=True)
@@ -218,7 +223,9 @@ def stock_fund_flow_concept(symbol: str = "即时") -> pd.DataFrame:
218
223
  big_df["行业-涨跌幅"] = big_df["行业-涨跌幅"].str.strip("%")
219
224
  big_df["领涨股-涨跌幅"] = big_df["领涨股-涨跌幅"].str.strip("%")
220
225
  big_df["行业-涨跌幅"] = pd.to_numeric(big_df["行业-涨跌幅"], errors="coerce")
221
- big_df["领涨股-涨跌幅"] = pd.to_numeric(big_df["领涨股-涨跌幅"], errors="coerce")
226
+ big_df["领涨股-涨跌幅"] = pd.to_numeric(
227
+ big_df["领涨股-涨跌幅"], errors="coerce"
228
+ )
222
229
  else:
223
230
  big_df.columns = [
224
231
  "序号",
@@ -256,15 +263,16 @@ def stock_fund_flow_industry(symbol: str = "即时") -> pd.DataFrame:
256
263
  "Host": "data.10jqka.com.cn",
257
264
  "Pragma": "no-cache",
258
265
  "Referer": "http://data.10jqka.com.cn/funds/hyzjl/",
259
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36",
266
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
267
+ "Chrome/90.0.4430.85 Safari/537.36",
260
268
  "X-Requested-With": "XMLHttpRequest",
261
269
  }
262
270
  url = (
263
271
  "http://data.10jqka.com.cn/funds/hyzjl/field/tradezdf/order/desc/ajax/1/free/1/"
264
272
  )
265
273
  r = requests.get(url, headers=headers)
266
- soup = BeautifulSoup(r.text, "lxml")
267
- raw_page = soup.find("span", attrs={"class": "page_info"}).text
274
+ soup = BeautifulSoup(r.text, features="lxml")
275
+ raw_page = soup.find(name="span", attrs={"class": "page_info"}).text
268
276
  page_num = raw_page.split("/")[1]
269
277
  if symbol == "3日排行":
270
278
  url = "http://data.10jqka.com.cn/funds/hyzjl/board/3/field/tradezdf/order/desc/page/{}/ajax/1/free/1/"
@@ -293,12 +301,13 @@ def stock_fund_flow_industry(symbol: str = "即时") -> pd.DataFrame:
293
301
  "Host": "data.10jqka.com.cn",
294
302
  "Pragma": "no-cache",
295
303
  "Referer": "http://data.10jqka.com.cn/funds/hyzjl/",
296
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36",
304
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
305
+ "Chrome/90.0.4430.85 Safari/537.36",
297
306
  "X-Requested-With": "XMLHttpRequest",
298
307
  }
299
308
  r = requests.get(url.format(page), headers=headers)
300
309
  temp_df = pd.read_html(StringIO(r.text))[0]
301
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
310
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
302
311
 
303
312
  del big_df["序号"]
304
313
  big_df.reset_index(inplace=True)
@@ -320,7 +329,9 @@ def stock_fund_flow_industry(symbol: str = "即时") -> pd.DataFrame:
320
329
  big_df["行业-涨跌幅"] = big_df["行业-涨跌幅"].str.strip("%")
321
330
  big_df["领涨股-涨跌幅"] = big_df["领涨股-涨跌幅"].str.strip("%")
322
331
  big_df["行业-涨跌幅"] = pd.to_numeric(big_df["行业-涨跌幅"], errors="coerce")
323
- big_df["领涨股-涨跌幅"] = pd.to_numeric(big_df["领涨股-涨跌幅"], errors="coerce")
332
+ big_df["领涨股-涨跌幅"] = pd.to_numeric(
333
+ big_df["领涨股-涨跌幅"], errors="coerce"
334
+ )
324
335
  else:
325
336
  big_df.columns = [
326
337
  "序号",
@@ -356,13 +367,14 @@ def stock_fund_flow_big_deal() -> pd.DataFrame:
356
367
  "Host": "data.10jqka.com.cn",
357
368
  "Pragma": "no-cache",
358
369
  "Referer": "http://data.10jqka.com.cn/funds/hyzjl/",
359
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36",
370
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
371
+ "Chrome/90.0.4430.85 Safari/537.36",
360
372
  "X-Requested-With": "XMLHttpRequest",
361
373
  }
362
374
  url = "http://data.10jqka.com.cn/funds/ddzz/order/desc/ajax/1/free/1/"
363
375
  r = requests.get(url, headers=headers)
364
- soup = BeautifulSoup(r.text, "lxml")
365
- raw_page = soup.find("span", attrs={"class": "page_info"}).text
376
+ soup = BeautifulSoup(r.text, features="lxml")
377
+ raw_page = soup.find(name="span", attrs={"class": "page_info"}).text
366
378
  page_num = raw_page.split("/")[1]
367
379
  url = "http://data.10jqka.com.cn/funds/ddzz/order/asc/page/{}/ajax/1/free/1/"
368
380
  big_df = pd.DataFrame()
@@ -382,12 +394,13 @@ def stock_fund_flow_big_deal() -> pd.DataFrame:
382
394
  "Host": "data.10jqka.com.cn",
383
395
  "Pragma": "no-cache",
384
396
  "Referer": "http://data.10jqka.com.cn/funds/hyzjl/",
385
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36",
397
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
398
+ "Chrome/90.0.4430.85 Safari/537.36",
386
399
  "X-Requested-With": "XMLHttpRequest",
387
400
  }
388
401
  r = requests.get(url.format(page), headers=headers)
389
402
  temp_df = pd.read_html(StringIO(r.text))[0]
390
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
403
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
391
404
 
392
405
  big_df.columns = [
393
406
  "成交时间",
@@ -1,13 +1,14 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2023/8/18 15:32
4
+ Date: 2025/2/11 16:00
5
5
  Desc: 东方财富网-数据中心-股东大会
6
6
  https://data.eastmoney.com/gddh/
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
- from tqdm import tqdm
11
+ from akshare.utils.tqdm import get_tqdm
11
12
 
12
13
 
13
14
  def stock_gddh_em() -> pd.DataFrame:
@@ -24,7 +25,9 @@ def stock_gddh_em() -> pd.DataFrame:
24
25
  "pageSize": "500",
25
26
  "pageNumber": "1",
26
27
  "reportName": "RPT_GENERALMEETING_DETAIL",
27
- "columns": "SECURITY_CODE,SECURITY_NAME_ABBR,MEETING_TITLE,START_ADJUST_DATE,EQUITY_RECORD_DATE,ONSITE_RECORD_DATE,DECISION_NOTICE_DATE,NOTICE_DATE,WEB_START_DATE,WEB_END_DATE,SERIAL_NUM,PROPOSAL",
28
+ "columns": "SECURITY_CODE,SECURITY_NAME_ABBR,MEETING_TITLE,START_ADJUST_DATE,EQUITY_RECORD_DATE,"
29
+ "ONSITE_RECORD_DATE,DECISION_NOTICE_DATE,NOTICE_DATE,WEB_START_DATE,"
30
+ "WEB_END_DATE,SERIAL_NUM,PROPOSAL",
28
31
  "filter": '(IS_LASTDATE="1")',
29
32
  "source": "WEB",
30
33
  "client": "WEB",
@@ -33,6 +36,7 @@ def stock_gddh_em() -> pd.DataFrame:
33
36
  data_json = r.json()
34
37
  total_page = data_json["result"]["pages"]
35
38
  big_df = pd.DataFrame()
39
+ tqdm = get_tqdm()
36
40
  for page in tqdm(range(1, total_page + 1), leave=False):
37
41
  params.update(
38
42
  {
@@ -42,7 +46,7 @@ def stock_gddh_em() -> pd.DataFrame:
42
46
  r = requests.get(url, params=params)
43
47
  data_json = r.json()
44
48
  temp_df = pd.DataFrame(data_json["result"]["data"])
45
- big_df = pd.concat([big_df, temp_df], axis=0, ignore_index=True)
49
+ big_df = pd.concat(objs=[big_df, temp_df], axis=0, ignore_index=True)
46
50
  big_df.rename(
47
51
  columns={
48
52
  "SECURITY_CODE": "代码",
@@ -76,13 +80,17 @@ def stock_gddh_em() -> pd.DataFrame:
76
80
  "提案",
77
81
  ]
78
82
  ]
79
- big_df['召开开始日'] = pd.to_datetime(big_df['召开开始日'], errors="coerce").dt.date
80
- big_df['股权登记日'] = pd.to_datetime(big_df['股权登记日'], errors="coerce").dt.date
81
- big_df['现场登记日'] = pd.to_datetime(big_df['现场登记日'], errors="coerce").dt.date
82
- big_df['网络投票时间-开始日'] = pd.to_datetime(big_df['网络投票时间-开始日'], errors="coerce").dt.date
83
- big_df['网络投票时间-结束日'] = pd.to_datetime(big_df['网络投票时间-结束日'], errors="coerce").dt.date
84
- big_df['决议公告日'] = pd.to_datetime(big_df['决议公告日'], errors="coerce").dt.date
85
- big_df['公告日'] = pd.to_datetime(big_df['公告日'], errors="coerce").dt.date
83
+ big_df["召开开始日"] = pd.to_datetime(big_df["召开开始日"], errors="coerce").dt.date
84
+ big_df["股权登记日"] = pd.to_datetime(big_df["股权登记日"], errors="coerce").dt.date
85
+ big_df["现场登记日"] = pd.to_datetime(big_df["现场登记日"], errors="coerce").dt.date
86
+ big_df["网络投票时间-开始日"] = pd.to_datetime(
87
+ big_df["网络投票时间-开始日"], errors="coerce"
88
+ ).dt.date
89
+ big_df["网络投票时间-结束日"] = pd.to_datetime(
90
+ big_df["网络投票时间-结束日"], errors="coerce"
91
+ ).dt.date
92
+ big_df["决议公告日"] = pd.to_datetime(big_df["决议公告日"], errors="coerce").dt.date
93
+ big_df["公告日"] = pd.to_datetime(big_df["公告日"], errors="coerce").dt.date
86
94
  big_df["提案"] = big_df["提案"].str.replace("\r\n2", "").str.replace("\r\n3", "")
87
95
  return big_df
88
96