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,302 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding:utf-8 -*-
3
+ """
4
+ Date: 2025/9/11 13:00
5
+ Desc: 东方财富-港股-公司概况
6
+ https://emweb.securities.eastmoney.com/PC_HKF10/pages/home/index.html?code=03900&type=web&color=w#/CompanyProfile
7
+ """
8
+
9
+ import pandas as pd
10
+ import requests
11
+
12
+
13
+ def stock_hk_security_profile_em(symbol: str = "03900") -> pd.DataFrame:
14
+ """
15
+ 东方财富-港股-证券资料
16
+ https://emweb.securities.eastmoney.com/PC_HKF10/pages/home/index.html?code=03900&type=web&color=w#/CompanyProfile
17
+ :param symbol: 股票代码
18
+ :type symbol: str
19
+ :return: 证券资料
20
+ :rtype: pandas.DataFrame
21
+ """
22
+ url = 'https://datacenter.eastmoney.com/securities/api/data/v1/get'
23
+ params = {
24
+ 'reportName': 'RPT_HKF10_INFO_SECURITYINFO',
25
+ 'columns': 'SECUCODE,SECURITY_CODE,SECURITY_NAME_ABBR,SECURITY_TYPE,LISTING_DATE,ISIN_CODE,BOARD,'
26
+ 'TRADE_UNIT,TRADE_MARKET,GANGGUTONGBIAODISHEN,GANGGUTONGBIAODIHU,PAR_VALUE,'
27
+ 'ISSUE_PRICE,ISSUE_NUM,YEAR_SETTLE_DAY',
28
+ 'quoteColumns': '',
29
+ 'filter': f'(SECUCODE="{symbol}.HK")',
30
+ 'pageNumber': '1',
31
+ 'pageSize': '200',
32
+ 'sortTypes': '',
33
+ 'sortColumns': '',
34
+ 'source': 'F10',
35
+ 'client': 'PC',
36
+ 'v': '04748497219912483'
37
+ }
38
+ r = requests.get(url, params=params)
39
+ data_json = r.json()
40
+ temp_df = pd.DataFrame(data_json['result']['data'])
41
+ field_mapping = {
42
+ "BOARD": "板块",
43
+ "GANGGUTONGBIAODIHU": "是否沪港通标的",
44
+ "GANGGUTONGBIAODISHEN": "是否深港通标的",
45
+ "ISIN_CODE": "ISIN(国际证券识别编码)",
46
+ "ISSUE_NUM": "发行量(股)",
47
+ "ISSUE_PRICE": "发行价",
48
+ "LISTING_DATE": "上市日期",
49
+ "PAR_VALUE": "每股面值",
50
+ "SECUCODE": "证券代码",
51
+ "SECURITY_NAME_ABBR": "证券简称",
52
+ "SECURITY_TYPE": "证券类型",
53
+ "TRADE_MARKET": "交易所",
54
+ "TRADE_UNIT": "每手股数",
55
+ "YEAR_SETTLE_DAY": "年结日"
56
+ }
57
+ temp_df.rename(columns=field_mapping, inplace=True)
58
+ temp_df = temp_df[[
59
+ "证券代码",
60
+ "证券简称",
61
+ "上市日期",
62
+ "证券类型",
63
+ "发行价",
64
+ "发行量(股)",
65
+ "每手股数",
66
+ "每股面值",
67
+ "交易所",
68
+ "板块",
69
+ "年结日",
70
+ "ISIN(国际证券识别编码)",
71
+ "是否沪港通标的",
72
+ "是否深港通标的",
73
+ ]]
74
+ return temp_df
75
+
76
+
77
+ def stock_hk_company_profile_em(symbol: str = "03900") -> pd.DataFrame:
78
+ """
79
+ 东方财富-港股-公司资料
80
+ https://emweb.securities.eastmoney.com/PC_HKF10/pages/home/index.html?code=03900&type=web&color=w#/CompanyProfile
81
+ :param symbol: 股票代码
82
+ :type symbol: str
83
+ :return: 公司资料
84
+ :rtype: pandas.DataFrame
85
+ """
86
+ url = 'https://datacenter.eastmoney.com/securities/api/data/v1/get'
87
+ params = {
88
+ 'reportName': 'RPT_HKF10_INFO_ORGPROFILE',
89
+ 'columns': 'SECUCODE,SECURITY_CODE,ORG_NAME,ORG_EN_ABBR,BELONG_INDUSTRY,FOUND_DATE,CHAIRMAN,'
90
+ 'SECRETARY,ACCOUNT_FIRM,REG_ADDRESS,ADDRESS,YEAR_SETTLE_DAY,EMP_NUM,ORG_TEL,ORG_FAX,ORG_EMAIL,'
91
+ 'ORG_WEB,ORG_PROFILE,REG_PLACE',
92
+ 'quoteColumns': '',
93
+ 'filter': f'(SECUCODE="{symbol}.HK")',
94
+ 'pageNumber': '1',
95
+ 'pageSize': '200',
96
+ 'sortTypes': '',
97
+ 'sortColumns': '',
98
+ 'source': 'F10',
99
+ 'client': 'PC',
100
+ 'v': '04748497219912483'
101
+ }
102
+ r = requests.get(url, params=params)
103
+ data_json = r.json()
104
+ temp_df = pd.DataFrame(data_json['result']['data'])
105
+ field_mapping = {
106
+ 'ACCOUNT_FIRM': '核数师',
107
+ 'ADDRESS': '办公地址',
108
+ 'BELONG_INDUSTRY': '所属行业',
109
+ 'CHAIRMAN': '董事长',
110
+ 'EMP_NUM': '员工人数',
111
+ 'FOUND_DATE': '公司成立日期',
112
+ 'ORG_EMAIL': 'E-MAIL',
113
+ 'ORG_EN_ABBR': '英文名称',
114
+ 'ORG_FAX': '传真',
115
+ 'ORG_NAME': '公司名称',
116
+ 'ORG_PROFILE': '公司介绍',
117
+ 'ORG_TEL': '联系电话',
118
+ 'ORG_WEB': '公司网址',
119
+ 'REG_ADDRESS': '注册地址',
120
+ 'REG_PLACE': '注册地',
121
+ 'SECRETARY': '公司秘书',
122
+ 'SECUCODE': '股票代码',
123
+ 'SECURITY_CODE': '证券代码',
124
+ 'YEAR_SETTLE_DAY': '年结日'
125
+ }
126
+ temp_df.rename(columns=field_mapping, inplace=True)
127
+ temp_df = temp_df[[
128
+ "公司名称",
129
+ "英文名称",
130
+ "注册地",
131
+ "注册地址",
132
+ "公司成立日期",
133
+ "所属行业",
134
+ "董事长",
135
+ "公司秘书",
136
+ "员工人数",
137
+ "办公地址",
138
+ "公司网址",
139
+ "E-MAIL",
140
+ "年结日",
141
+ "联系电话",
142
+ "核数师",
143
+ "传真",
144
+ "公司介绍",
145
+ ]]
146
+ return temp_df
147
+
148
+
149
+ def stock_hk_financial_indicator_em(symbol: str = "03900") -> pd.DataFrame:
150
+ """
151
+ 东方财富-港股-核心必读-最新指标
152
+ https://emweb.securities.eastmoney.com/PC_HKF10/pages/home/index.html?code=03900&type=web&color=w#/CoreReading
153
+ :param symbol: 股票代码
154
+ :type symbol: str
155
+ :return: 财务指标
156
+ :rtype: pandas.DataFrame
157
+ """
158
+ url = 'https://datacenter.eastmoney.com/securities/api/data/v1/get'
159
+ params = {
160
+ 'reportName': 'RPT_CUSTOM_HKF10_FN_MAININDICATORMAX',
161
+ 'columns': 'ORG_CODE,SECUCODE,SECURITY_CODE,SECURITY_NAME_ABBR,SECURITY_INNER_CODE,REPORT_DATE,BASIC_EPS,'
162
+ 'PER_NETCASH_OPERATE,BPS,BPS_NEDILUTED,COMMON_ACS,PER_SHARES,ISSUED_COMMON_SHARES,HK_COMMON_SHARES,'
163
+ 'TOTAL_MARKET_CAP,HKSK_MARKET_CAP,OPERATE_INCOME,OPERATE_INCOME_SQ,OPERATE_INCOME_QOQ,'
164
+ 'OPERATE_INCOME_QOQ_SQ,HOLDER_PROFIT,HOLDER_PROFIT_SQ,HOLDER_PROFIT_QOQ,HOLDER_PROFIT_QOQ_SQ,PE_TTM,'
165
+ 'PE_TTM_SQ,PB_TTM,PB_TTM_SQ,NET_PROFIT_RATIO,NET_PROFIT_RATIO_SQ,ROE_AVG,ROE_AVG_SQ,ROA,'
166
+ 'ROA_SQ,DIVIDEND_TTM,DIVIDEND_LFY,DIVI_RATIO,DIVIDEND_RATE,IS_CNY_CODE',
167
+ 'quoteColumns': '',
168
+ 'filter': f'(SECUCODE="{symbol}.HK")',
169
+ 'pageNumber': '1',
170
+ 'pageSize': '200',
171
+ 'sortTypes': '-1',
172
+ 'sortColumns': 'REPORT_DATE',
173
+ 'source': 'F10',
174
+ 'client': 'PC',
175
+ 'v': '07945646099062258'
176
+ }
177
+ r = requests.get(url, params=params)
178
+ data_json = r.json()
179
+ temp_df = pd.DataFrame(data_json['result']['data'])
180
+ field_mapping = {
181
+ 'SECURITY_CODE': '股票代码',
182
+ 'BASIC_EPS': '基本每股收益(元)',
183
+ 'BPS': '每股净资产(元)',
184
+ 'COMMON_ACS': '法定股本(股)',
185
+ 'PER_SHARES': '每手股',
186
+ 'DIVIDEND_TTM': '每股股息TTM(港元)',
187
+ 'DIVI_RATIO': '派息比率(%)',
188
+ 'ISSUED_COMMON_SHARES': '已发行股本(股)',
189
+ 'HK_COMMON_SHARES': '已发行股本-H股(股)',
190
+ 'PER_NETCASH_OPERATE': '每股经营现金流(元)',
191
+ 'DIVIDEND_RATE': '股息率TTM(%)',
192
+ 'TOTAL_MARKET_CAP': '总市值(港元)',
193
+ 'HKSK_MARKET_CAP': '港股市值(港元)',
194
+ 'OPERATE_INCOME': '营业总收入',
195
+ 'OPERATE_INCOME_QOQ': '营业总收入滚动环比增长(%)',
196
+ 'NET_PROFIT_RATIO': '销售净利率(%)',
197
+ 'HOLDER_PROFIT': '净利润',
198
+ 'HOLDER_PROFIT_QOQ': '净利润滚动环比增长(%)',
199
+ 'ROE_AVG': '股东权益回报率(%)',
200
+ 'PE_TTM': '市盈率',
201
+ 'PB_TTM': '市净率',
202
+ 'ROA': '总资产回报率(%)'
203
+ }
204
+ temp_df.rename(columns=field_mapping, inplace=True)
205
+ temp_df = temp_df[[
206
+ "基本每股收益(元)",
207
+ "每股净资产(元)",
208
+ "法定股本(股)",
209
+ "每手股",
210
+ "每股股息TTM(港元)",
211
+ "派息比率(%)",
212
+ "已发行股本(股)",
213
+ "已发行股本-H股(股)",
214
+ "每股经营现金流(元)",
215
+ "股息率TTM(%)",
216
+ "总市值(港元)",
217
+ "港股市值(港元)",
218
+ "营业总收入",
219
+ "营业总收入滚动环比增长(%)",
220
+ "销售净利率(%)",
221
+ "净利润",
222
+ "净利润滚动环比增长(%)",
223
+ "股东权益回报率(%)",
224
+ "市盈率",
225
+ "市净率",
226
+ "总资产回报率(%)"
227
+
228
+ ]]
229
+ return temp_df
230
+
231
+
232
+ def stock_hk_dividend_payout_em(symbol: str = "03900") -> pd.DataFrame:
233
+ """
234
+ 东方财富-港股-核心必读-分红派息
235
+ https://emweb.securities.eastmoney.com/PC_HKF10/pages/home/index.html?code=03900&type=web&color=w#/CoreReading
236
+ :param symbol: 股票代码
237
+ :type symbol: str
238
+ :return: 分红派息
239
+ :rtype: pandas.DataFrame
240
+ """
241
+ url = 'https://datacenter.eastmoney.com/securities/api/data/v1/get'
242
+ params = {
243
+ 'reportName': 'RPT_HKF10_MAIN_DIVBASIC',
244
+ 'columns': 'SECURITY_CODE,UPDATE_DATE,REPORT_TYPE,EX_DIVIDEND_DATE,DIVIDEND_DATE,'
245
+ 'TRANSFER_END_DATE,YEAR,PLAN_EXPLAIN,IS_BFP',
246
+ 'quoteColumns': '',
247
+ 'filter': f'(SECURITY_CODE="{symbol}")(IS_BFP="0")',
248
+ 'pageNumber': '1',
249
+ 'pageSize': '200',
250
+ 'sortTypes': '-1,-1',
251
+ 'sortColumns': 'NOTICE_DATE,EX_DIVIDEND_DATE',
252
+ 'source': 'F10',
253
+ 'client': 'PC',
254
+ 'v': '035584639294227527'
255
+ }
256
+ r = requests.get(url, params=params)
257
+ data_json = r.json()
258
+
259
+ field_mapping = {
260
+ 'SECURITY_CODE': '股票代码',
261
+ 'UPDATE_DATE': '最新公告日期',
262
+ 'REPORT_TYPE': '分配类型',
263
+ 'EX_DIVIDEND_DATE': '除净日',
264
+ 'DIVIDEND_DATE': '发放日',
265
+ 'TRANSFER_END_DATE': '截至过户日',
266
+ 'YEAR': '财政年度',
267
+ 'PLAN_EXPLAIN': '分红方案',
268
+ 'IS_BFP': 'IS_BFP'
269
+ }
270
+ columns = [
271
+ "最新公告日期",
272
+ "财政年度",
273
+ "分红方案",
274
+ "分配类型",
275
+ "除净日",
276
+ "截至过户日",
277
+ "发放日",
278
+ ]
279
+
280
+ temp_df = pd.DataFrame(columns=columns)
281
+ if data_json['result'] is not None:
282
+ temp_df = pd.DataFrame(data_json['result']['data'])
283
+ temp_df.rename(columns=field_mapping, inplace=True)
284
+ temp_df = temp_df[columns]
285
+ temp_df['最新公告日期'] = pd.to_datetime(temp_df['最新公告日期'], errors='coerce').dt.date
286
+ temp_df['除净日'] = pd.to_datetime(temp_df['除净日'], errors='coerce').dt.date
287
+ temp_df['发放日'] = pd.to_datetime(temp_df['发放日'], format='%Y-%m-%d', errors='coerce').dt.date
288
+ return temp_df
289
+
290
+
291
+ if __name__ == "__main__":
292
+ stock_hk_security_profile_em_df = stock_hk_security_profile_em(symbol="03900")
293
+ print(stock_hk_security_profile_em_df)
294
+
295
+ stock_hk_company_profile_em_df = stock_hk_company_profile_em(symbol="03900")
296
+ print(stock_hk_company_profile_em_df)
297
+
298
+ stock_hk_financial_indicator_em_df = stock_hk_financial_indicator_em(symbol="03900")
299
+ print(stock_hk_financial_indicator_em_df)
300
+
301
+ stock_hk_dividend_payout_em_df = stock_hk_dividend_payout_em(symbol="03900")
302
+ print(stock_hk_dividend_payout_em_df)
@@ -1,13 +1,14 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2023/8/18 15:29
4
+ Date: 2024/8/28 15:30
5
5
  Desc: 巨潮资讯-数据中心-评级预测-投资评级
6
- http://webapi.cninfo.com.cn/#/thematicStatistics?name=%E6%8A%95%E8%B5%84%E8%AF%84%E7%BA%A7
6
+ https://webapi.cninfo.com.cn/#/thematicStatistics?name=%E6%8A%95%E8%B5%84%E8%AF%84%E7%BA%A7
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
- from py_mini_racer import py_mini_racer
11
+ import py_mini_racer
11
12
 
12
13
  from akshare.datasets import get_ths_js
13
14
 
@@ -21,7 +22,7 @@ def _get_file_content_cninfo(file: str = "cninfo.js") -> str:
21
22
  :rtype: str
22
23
  """
23
24
  setting_file_path = get_ths_js(file)
24
- with open(setting_file_path) as f:
25
+ with open(setting_file_path, encoding="utf-8") as f:
25
26
  file_data = f.read()
26
27
  return file_data
27
28
 
@@ -29,7 +30,7 @@ def _get_file_content_cninfo(file: str = "cninfo.js") -> str:
29
30
  def stock_rank_forecast_cninfo(date: str = "20230817") -> pd.DataFrame:
30
31
  """
31
32
  巨潮资讯-数据中心-评级预测-投资评级
32
- http://webapi.cninfo.com.cn/#/thematicStatistics?name=%E6%8A%95%E8%B5%84%E8%AF%84%E7%BA%A7
33
+ https://webapi.cninfo.com.cn/#/thematicStatistics?name=%E6%8A%95%E8%B5%84%E8%AF%84%E7%BA%A7
33
34
  :param date: 查询日期
34
35
  :type date: str
35
36
  :return: 投资评级
@@ -53,7 +54,8 @@ def stock_rank_forecast_cninfo(date: str = "20230817") -> pd.DataFrame:
53
54
  "Pragma": "no-cache",
54
55
  "Proxy-Connection": "keep-alive",
55
56
  "Referer": "http://webapi.cninfo.com.cn/",
56
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36",
57
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
58
+ "Chrome/93.0.4577.63 Safari/537.36",
57
59
  "X-Requested-With": "XMLHttpRequest",
58
60
  }
59
61
  r = requests.post(url, params=params, headers=headers)
@@ -5,6 +5,7 @@ Date: 2022/8/29 14:20
5
5
  Desc: 东方财富网-数据中心-股票回购-股票回购数据
6
6
  https://data.eastmoney.com/gphg/hglist.html
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
  from tqdm import tqdm
@@ -105,8 +106,12 @@ def stock_repurchase_em() -> pd.DataFrame:
105
106
  big_df["计划回购价格区间"] = pd.to_numeric(big_df["计划回购价格区间"])
106
107
  big_df["计划回购数量区间-下限"] = pd.to_numeric(big_df["计划回购数量区间-下限"])
107
108
  big_df["计划回购数量区间-上限"] = pd.to_numeric(big_df["计划回购数量区间-上限"])
108
- big_df["占公告前一日总股本比例-上限"] = pd.to_numeric(big_df["占公告前一日总股本比例-上限"])
109
- big_df["占公告前一日总股本比例-下限"] = pd.to_numeric(big_df["占公告前一日总股本比例-下限"])
109
+ big_df["占公告前一日总股本比例-上限"] = pd.to_numeric(
110
+ big_df["占公告前一日总股本比例-上限"]
111
+ )
112
+ big_df["占公告前一日总股本比例-下限"] = pd.to_numeric(
113
+ big_df["占公告前一日总股本比例-下限"]
114
+ )
110
115
  big_df["计划回购金额区间-上限"] = pd.to_numeric(big_df["计划回购金额区间-上限"])
111
116
  big_df["计划回购金额区间-下限"] = pd.to_numeric(big_df["计划回购金额区间-下限"])
112
117
  big_df["已回购股份价格区间-下限"] = pd.to_numeric(big_df["已回购股份价格区间-下限"])
@@ -1,13 +1,15 @@
1
1
  # -*- coding:utf-8 -*-
2
2
  # !/usr/bin/env python
3
3
  """
4
- Date: 2023/6/8 16:44
4
+ Date: 2024/10/21 22:20
5
5
  Desc: 巨潮资讯-股本股东-公司股本变动
6
- http://webapi.cninfo.com.cn/api/stock/p_stock2215
6
+ https://webapi.cninfo.com.cn/api/stock/p_stock2215
7
7
  """
8
+
9
+ import numpy as np
8
10
  import pandas as pd
11
+ import py_mini_racer
9
12
  import requests
10
- from py_mini_racer import py_mini_racer
11
13
 
12
14
  from akshare.datasets import get_ths_js
13
15
 
@@ -21,7 +23,7 @@ def _get_file_content_cninfo(file: str = "cninfo.js") -> str:
21
23
  :rtype: str
22
24
  """
23
25
  setting_file_path = get_ths_js(file)
24
- with open(setting_file_path) as f:
26
+ with open(setting_file_path, encoding="utf-8") as f:
25
27
  file_data = f.read()
26
28
  return file_data
27
29
 
@@ -29,11 +31,11 @@ def _get_file_content_cninfo(file: str = "cninfo.js") -> str:
29
31
  def stock_share_change_cninfo(
30
32
  symbol: str = "002594",
31
33
  start_date: str = "20091227",
32
- end_date: str = "20220713",
34
+ end_date: str = "20241021",
33
35
  ) -> pd.DataFrame:
34
36
  """
35
37
  巨潮资讯-股本股东-公司股本变动
36
- http://webapi.cninfo.com.cn/#/apiDoc
38
+ https://webapi.cninfo.com.cn/#/apiDoc
37
39
  查询 p_stock2215 接口
38
40
  :param symbol: 股票代码
39
41
  :type symbol: str
@@ -44,7 +46,7 @@ def stock_share_change_cninfo(
44
46
  :return: 公司股本变动
45
47
  :rtype: pandas.DataFrame
46
48
  """
47
- url = "http://webapi.cninfo.com.cn/api/stock/p_stock2215"
49
+ url = "https://webapi.cninfo.com.cn/api/stock/p_stock2215"
48
50
  params = {
49
51
  "scode": symbol,
50
52
  "sdate": "-".join([start_date[:4], start_date[4:6], start_date[6:]]),
@@ -62,11 +64,12 @@ def stock_share_change_cninfo(
62
64
  "Cache-Control": "no-cache",
63
65
  "Content-Length": "0",
64
66
  "Host": "webapi.cninfo.com.cn",
65
- "Origin": "http://webapi.cninfo.com.cn",
67
+ "Origin": "https://webapi.cninfo.com.cn",
66
68
  "Pragma": "no-cache",
67
69
  "Proxy-Connection": "keep-alive",
68
- "Referer": "http://webapi.cninfo.com.cn/",
69
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36",
70
+ "Referer": "https://webapi.cninfo.com.cn/",
71
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
72
+ "Chrome/93.0.4577.63 Safari/537.36",
70
73
  "X-Requested-With": "XMLHttpRequest",
71
74
  }
72
75
  r = requests.post(url, params=params, headers=headers)
@@ -122,9 +125,10 @@ def stock_share_change_cninfo(
122
125
  }
123
126
  ignore_cols = ["最新记录标识", "其他"]
124
127
  temp_df.rename(columns=cols_map, inplace=True)
125
- temp_df.fillna(pd.NA, inplace=True)
126
- temp_df["公告日期"] = pd.to_datetime(temp_df["公告日期"]).dt.date
127
- temp_df["变动日期"] = pd.to_datetime(temp_df["变动日期"]).dt.date
128
+ pd.set_option("future.no_silent_downcasting", True)
129
+ temp_df.fillna(np.nan, inplace=True)
130
+ temp_df["公告日期"] = pd.to_datetime(temp_df["公告日期"], errors="coerce").dt.date
131
+ temp_df["变动日期"] = pd.to_datetime(temp_df["变动日期"], errors="coerce").dt.date
128
132
  data_df = temp_df[[c for c in temp_df.columns if c not in ignore_cols]]
129
133
  return data_df
130
134
 
@@ -133,6 +137,6 @@ if __name__ == "__main__":
133
137
  stock_share_change_cninfo_df = stock_share_change_cninfo(
134
138
  symbol="002594",
135
139
  start_date="20091227",
136
- end_date="20220713",
140
+ end_date="20241021",
137
141
  )
138
142
  print(stock_share_change_cninfo_df)
@@ -1,18 +1,16 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2023/8/23 8:30
4
+ Date: 2024/11/8 17:00
5
5
  Desc: 董监高及相关人员持股变动
6
-
7
6
  北京证券交易所-信息披露-监管信息-董监高及相关人员持股变动
8
7
  https://www.bse.cn/disclosure/djg_sharehold_change.html
9
-
10
8
  深圳证券交易所-信息披露-监管信息公开-董监高人员股份变动
11
- http://www.szse.cn/disclosure/supervision/change/index.html
12
-
9
+ https://www.szse.cn/disclosure/supervision/change/index.html
13
10
  上海证券交易所-披露-监管信息公开-公司监管-董董监高人员股份变动
14
- http://www.sse.com.cn/disclosure/credibility/supervision/change/
11
+ https://www.sse.com.cn/disclosure/credibility/supervision/change/
15
12
  """
13
+
16
14
  import json
17
15
 
18
16
  import pandas as pd
@@ -23,13 +21,13 @@ from tqdm import tqdm
23
21
  def stock_share_hold_change_sse(symbol: str = "600000") -> pd.DataFrame:
24
22
  """
25
23
  上海证券交易所-披露-监管信息公开-公司监管-董董监高人员股份变动
26
- http://www.sse.com.cn/disclosure/credibility/supervision/change/
24
+ https://www.sse.com.cn/disclosure/credibility/supervision/change/
27
25
  :param symbol: choice of {"全部", "具体股票代码"}
28
26
  :type symbol: str
29
27
  :return: 董监高人员股份变动
30
28
  :rtype: pandas.DataFrame
31
29
  """
32
- url = "http://query.sse.com.cn/commonQuery.do"
30
+ url = "https://query.sse.com.cn/commonQuery.do"
33
31
  params = {
34
32
  "isPagination": "true",
35
33
  "pageHelp.pageSize": "100",
@@ -43,13 +41,13 @@ def stock_share_hold_change_sse(symbol: str = "600000") -> pd.DataFrame:
43
41
  "BEGIN_DATE": "1990-01-01",
44
42
  "END_DATE": "2050-01-01",
45
43
  "BOARDTYPE": "",
46
- "_": "1692750843592",
47
44
  }
48
45
  params if symbol == "全部" else params.update({"COMPANY_CODE": symbol})
49
46
  headers = {
50
47
  "Host": "query.sse.com.cn",
51
- "Referer": "http://www.sse.com.cn/",
52
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36",
48
+ "Referer": "https://www.sse.com.cn/",
49
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
50
+ "Chrome/93.0.4577.63 Safari/537.36",
53
51
  }
54
52
  r = requests.get(url, headers=headers, params=params)
55
53
  data_json = r.json()
@@ -106,9 +104,13 @@ def stock_share_hold_change_sse(symbol: str = "600000") -> pd.DataFrame:
106
104
  big_df["变动日期"] = pd.to_datetime(big_df["变动日期"], errors="coerce").dt.date
107
105
  big_df["填报日期"] = pd.to_datetime(big_df["填报日期"], errors="coerce").dt.date
108
106
 
109
- big_df["本次变动前持股数"] = pd.to_numeric(big_df["本次变动前持股数"], errors="coerce")
107
+ big_df["本次变动前持股数"] = pd.to_numeric(
108
+ big_df["本次变动前持股数"], errors="coerce"
109
+ )
110
110
  big_df["变动数"] = pd.to_numeric(big_df["变动数"], errors="coerce")
111
- big_df["本次变动平均价格"] = pd.to_numeric(big_df["本次变动平均价格"], errors="coerce")
111
+ big_df["本次变动平均价格"] = pd.to_numeric(
112
+ big_df["本次变动平均价格"], errors="coerce"
113
+ )
112
114
  big_df["变动后持股数"] = pd.to_numeric(big_df["变动后持股数"], errors="coerce")
113
115
  return big_df
114
116
 
@@ -116,12 +118,17 @@ def stock_share_hold_change_sse(symbol: str = "600000") -> pd.DataFrame:
116
118
  def stock_share_hold_change_szse(symbol: str = "全部") -> pd.DataFrame:
117
119
  """
118
120
  深圳证券交易所-信息披露-监管信息公开-董监高人员股份变动
119
- http://www.szse.cn/disclosure/supervision/change/index.html
121
+ https://www.szse.cn/disclosure/supervision/change/index.html
120
122
  :param symbol: choice of {"全部", "具体股票代码"}
121
123
  :type symbol: str
122
124
  :return: 董监高人员股份变动
123
125
  :rtype: pandas.DataFrame
124
126
  """
127
+ url = "https://www.szse.cn/api/report/ShowReport/data"
128
+ headers = {
129
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
130
+ "Chrome/93.0.4577.63 Safari/537.36",
131
+ }
125
132
  params = {
126
133
  "SHOWTYPE": "JSON",
127
134
  "CATALOGID": "1801_cxda",
@@ -130,15 +137,11 @@ def stock_share_hold_change_szse(symbol: str = "全部") -> pd.DataFrame:
130
137
  "random": "0.7874198771222201",
131
138
  }
132
139
  params if symbol == "全部" else params.update({"txtDMorJC": symbol})
133
- url = "http://www.szse.cn/api/report/ShowReport/data"
134
- headers = {
135
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36",
136
- }
137
140
  r = requests.get(url, headers=headers, params=params)
138
141
  data_json = r.json()
139
142
  total_page = data_json[0]["metadata"]["pagecount"]
140
143
  big_df = pd.DataFrame()
141
- for page in tqdm(range(1, total_page+1), leave=False):
144
+ for page in tqdm(range(1, total_page + 1), leave=False):
142
145
  params.update(
143
146
  {
144
147
  "PAGENO": page,
@@ -212,7 +215,8 @@ def stock_share_hold_change_bse(symbol: str = "430489") -> pd.DataFrame:
212
215
  }
213
216
  url = "https://www.bse.cn/djgCgbdController/getDjgCgbdList.do"
214
217
  headers = {
215
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36",
218
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
219
+ "Chrome/93.0.4577.63 Safari/537.36",
216
220
  }
217
221
  r = requests.get(url, headers=headers, params=params)
218
222
  data_text = r.text
@@ -1,10 +1,11 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2021/6/2 16:33
4
+ Date: 2025/2/24 18:33
5
5
  Desc: 两网及退市
6
6
  https://quote.eastmoney.com/center/gridlist.html#staq_net_board
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
@@ -16,23 +17,22 @@ def stock_staq_net_stop() -> pd.DataFrame:
16
17
  :return: 两网及退市
17
18
  :rtype: pandas.DataFrame
18
19
  """
19
- url = "http://5.push2.eastmoney.com/api/qt/clist/get"
20
+ url = "https://5.push2.eastmoney.com/api/qt/clist/get"
20
21
  params = {
21
22
  "pn": "1",
22
- "pz": "2000",
23
+ "pz": "50000",
23
24
  "po": "1",
24
- "np": "1",
25
+ "np": "2",
25
26
  "ut": "bd1d9ddb04089700cf9c27f6f7426281",
26
27
  "fltt": "2",
27
28
  "invt": "2",
28
29
  "fid": "f3",
29
30
  "fs": "m:0 s:3",
30
31
  "fields": "f12,f14",
31
- "_": "1622622663841",
32
32
  }
33
33
  r = requests.get(url, params=params)
34
34
  data_json = r.json()
35
- temp_df = pd.DataFrame(data_json["data"]["diff"])
35
+ temp_df = pd.DataFrame(data_json["data"]["diff"]).T
36
36
  temp_df.reset_index(inplace=True)
37
37
  temp_df["index"] = temp_df.index + 1
38
38
  temp_df.columns = ["序号", "代码", "名称"]