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
@@ -5,6 +5,7 @@ Date: 2023/6/15 15:15
5
5
  Desc: 东方财富个股人气榜
6
6
  https://guba.eastmoney.com/rank/
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
@@ -62,7 +63,9 @@ def stock_hot_up_em() -> pd.DataFrame:
62
63
  "涨跌幅",
63
64
  ]
64
65
  ]
65
- temp_df["排名较昨日变动"] = pd.to_numeric(temp_df["排名较昨日变动"], errors="coerce")
66
+ temp_df["排名较昨日变动"] = pd.to_numeric(
67
+ temp_df["排名较昨日变动"], errors="coerce"
68
+ )
66
69
  temp_df["当前排名"] = pd.to_numeric(temp_df["当前排名"], errors="coerce")
67
70
  temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
68
71
  temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce")
@@ -0,0 +1,155 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding:utf-8 -*-
3
+ """
4
+ Date: 2025/3/9 23:00
5
+ Desc: 东方财富网-行情中心-沪深港通
6
+ https://quote.eastmoney.com/center/gridlist.html#ah_comparison
7
+ """
8
+
9
+ import math
10
+
11
+ import pandas as pd
12
+ import requests
13
+
14
+ from akshare.utils.tqdm import get_tqdm
15
+ from akshare.utils.func import fetch_paginated_data
16
+
17
+
18
+ def stock_zh_ah_spot_em() -> pd.DataFrame:
19
+ """
20
+ 东方财富网-行情中心-沪深港通-AH股比价-实时行情
21
+ https://quote.eastmoney.com/center/gridlist.html#ah_comparison
22
+ :return: 东方财富网-行情中心-沪深港通-AH股比价-实时行情
23
+ :rtype: pandas.DataFrame
24
+ """
25
+ url = "https://push2.eastmoney.com/api/qt/clist/get"
26
+ params = {
27
+ "np": "1",
28
+ "fltt": "1",
29
+ "invt": "2",
30
+ "fs": "b:DLMK0101",
31
+ "fields": "f193,f191,f192,f12,f13,f14,f1,f2,f4,f3,f152,f186,f190,f187,f189,f188",
32
+ "fid": "f3",
33
+ "pn": "1",
34
+ "pz": "100",
35
+ "po": "1",
36
+ "dect": "1",
37
+ "wbp2u": "|0|0|0|web",
38
+ }
39
+ temp_df = fetch_paginated_data(url, params)
40
+ temp_df.reset_index(inplace=True)
41
+ temp_df["index"] = temp_df["index"].astype(int) + 1
42
+ temp_df.rename(
43
+ columns={
44
+ "index": "序号",
45
+ "f193": "名称",
46
+ "f12": "H股代码",
47
+ "f2": "最新价-HKD",
48
+ "f3": "H股-涨跌幅",
49
+ "f191": "A股代码",
50
+ "f186": "最新价-RMB",
51
+ "f187": "A股-涨跌幅",
52
+ "f189": "比价",
53
+ "f188": "溢价",
54
+ },
55
+ inplace=True,
56
+ )
57
+ temp_df = temp_df[
58
+ [
59
+ "序号",
60
+ "名称",
61
+ "H股代码",
62
+ "最新价-HKD",
63
+ "H股-涨跌幅",
64
+ "A股代码",
65
+ "最新价-RMB",
66
+ "A股-涨跌幅",
67
+ "比价",
68
+ "溢价",
69
+ ]
70
+ ]
71
+ temp_df["最新价-HKD"] = pd.to_numeric(temp_df["最新价-HKD"], errors="coerce") / 1000
72
+ temp_df["H股-涨跌幅"] = pd.to_numeric(temp_df["H股-涨跌幅"], errors="coerce") / 100
73
+ temp_df["最新价-RMB"] = pd.to_numeric(temp_df["最新价-RMB"], errors="coerce") / 100
74
+ temp_df["A股-涨跌幅"] = pd.to_numeric(temp_df["A股-涨跌幅"], errors="coerce") / 100
75
+ temp_df["比价"] = pd.to_numeric(temp_df["比价"], errors="coerce") / 100
76
+ temp_df["溢价"] = pd.to_numeric(temp_df["溢价"], errors="coerce") / 100
77
+ return temp_df
78
+
79
+
80
+ def stock_hsgt_sh_hk_spot_em() -> pd.DataFrame:
81
+ """
82
+ 东方财富网-行情中心-沪深港通-港股通(沪>港)-股票
83
+ https://quote.eastmoney.com/center/gridlist.html#hk_sh_stocks
84
+ :return: 东方财富网-行情中心-沪深港通-港股通(沪>港)-股票
85
+ :rtype: pandas.DataFrame
86
+ """
87
+ url = "https://push2.eastmoney.com/api/qt/clist/get"
88
+ params = {
89
+ "np": "1",
90
+ "fltt": "1",
91
+ "invt": "2",
92
+ "fs": "b:DLMK0144",
93
+ "fields": "f12,f13,f14,f19,f1,f2,f4,f3,f152,f17,f18,f15,f16,f5,f6",
94
+ "fid": "f12",
95
+ "pn": "1",
96
+ "pz": "100",
97
+ "po": "1",
98
+ "dect": "1",
99
+ "wbp2u": "|0|0|0|web",
100
+ }
101
+ temp_df = fetch_paginated_data(url, params)
102
+ temp_df.rename(
103
+ columns={
104
+ "f12": "代码",
105
+ "f14": "名称",
106
+ "f2": "最新价",
107
+ "f4": "涨跌额",
108
+ "f3": "涨跌幅",
109
+ "f17": "今开",
110
+ "f15": "最高",
111
+ "f16": "最低",
112
+ "f18": "昨收",
113
+ "f5": "成交量",
114
+ "f6": "成交额",
115
+ },
116
+ inplace=True,
117
+ )
118
+
119
+ temp_df = temp_df[
120
+ [
121
+ "代码",
122
+ "名称",
123
+ "最新价",
124
+ "涨跌额",
125
+ "涨跌幅",
126
+ "今开",
127
+ "最高",
128
+ "最低",
129
+ "昨收",
130
+ "成交量",
131
+ "成交额",
132
+ ]
133
+ ]
134
+ temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce") / 1000
135
+ temp_df["涨跌额"] = pd.to_numeric(temp_df["涨跌额"], errors="coerce") / 1000
136
+ temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce") / 100
137
+ temp_df["今开"] = pd.to_numeric(temp_df["今开"], errors="coerce") / 1000
138
+ temp_df["最高"] = pd.to_numeric(temp_df["最高"], errors="coerce") / 1000
139
+ temp_df["最低"] = pd.to_numeric(temp_df["最低"], errors="coerce") / 1000
140
+ temp_df["昨收"] = pd.to_numeric(temp_df["昨收"], errors="coerce") / 1000
141
+ temp_df["成交量"] = pd.to_numeric(temp_df["成交量"], errors="coerce") / 100000000
142
+ temp_df["成交额"] = pd.to_numeric(temp_df["成交额"], errors="coerce") / 100000000
143
+ temp_df.sort_values(["代码"], ignore_index=True, inplace=True)
144
+ temp_df.reset_index(inplace=True)
145
+ temp_df["index"] = temp_df["index"].astype(int) + 1
146
+ temp_df.rename(columns={"index": "序号"}, inplace=True)
147
+ return temp_df
148
+
149
+
150
+ if __name__ == "__main__":
151
+ stock_zh_ah_spot_em_df = stock_zh_ah_spot_em()
152
+ print(stock_zh_ah_spot_em_df)
153
+
154
+ stock_hsgt_sh_hk_spot_em_df = stock_hsgt_sh_hk_spot_em()
155
+ print(stock_hsgt_sh_hk_spot_em_df)
@@ -5,6 +5,7 @@ Date: 2023/5/9 17:06
5
5
  Desc: 新浪行业-板块行情
6
6
  http://finance.sina.com.cn/stock/sl/
7
7
  """
8
+
8
9
  import json
9
10
  import math
10
11
 
@@ -1,15 +1,16 @@
1
1
  # -*- coding:utf-8 -*-
2
2
  # !/usr/bin/env python
3
3
  """
4
- Date: 2023/5/29 23:34
4
+ Date: 2024/5/19 18:34
5
5
  Desc: 巨潮资讯-行业分类数据
6
- http://webapi.cninfo.com.cn/#/apiDoc
7
- http://webapi.cninfo.com.cn/api/stock/p_stock2110
6
+ https://webapi.cninfo.com.cn/#/apiDoc
7
+ https://webapi.cninfo.com.cn/api/stock/p_stock2110
8
8
  """
9
+
9
10
  import numpy as np
10
11
  import pandas as pd
11
12
  import requests
12
- from py_mini_racer import py_mini_racer
13
+ import py_mini_racer
13
14
 
14
15
  from akshare.datasets import get_ths_js
15
16
 
@@ -23,7 +24,7 @@ def _get_file_content_ths(file: str = "cninfo.js") -> str:
23
24
  :rtype: str
24
25
  """
25
26
  setting_file_path = get_ths_js(file)
26
- with open(setting_file_path) as f:
27
+ with open(setting_file_path, encoding="utf-8") as f:
27
28
  file_data = f.read()
28
29
  return file_data
29
30
 
@@ -31,9 +32,10 @@ def _get_file_content_ths(file: str = "cninfo.js") -> str:
31
32
  def stock_industry_category_cninfo(symbol: str = "巨潮行业分类标准") -> pd.DataFrame:
32
33
  """
33
34
  巨潮资讯-行业分类数据
34
- http://webapi.cninfo.com.cn/#/apiDoc
35
+ https://webapi.cninfo.com.cn/#/apiDoc
35
36
  查询 p_public0002 接口
36
- :param symbol: 行业类型; choice of {"证监会行业分类标准", "巨潮行业分类标准", "申银万国行业分类标准", "新财富行业分类标准", "国资委行业分类标准", "巨潮产业细分标准", "天相行业分类标准", "全球行业分类标准"}
37
+ :param symbol: 行业类型; choice of {"证监会行业分类标准", "巨潮行业分类标准", "申银万国行业分类标准",
38
+ "新财富行业分类标准", "国资委行业分类标准", "巨潮产业细分标准", "天相行业分类标准", "全球行业分类标准"}
37
39
  :type symbol: str
38
40
  :return: 行业分类数据
39
41
  :rtype: pandas.DataFrame
@@ -48,7 +50,7 @@ def stock_industry_category_cninfo(symbol: str = "巨潮行业分类标准") ->
48
50
  "天相行业分类标准": "008007",
49
51
  "全球行业分类标准": "008008",
50
52
  }
51
- url = "http://webapi.cninfo.com.cn/api/stock/p_public0002"
53
+ url = "https://webapi.cninfo.com.cn/api/stock/p_public0002"
52
54
  params = {"indcode": "", "indtype": symbol_map[symbol], "format": "json"}
53
55
  js_code = py_mini_racer.MiniRacer()
54
56
  js_content = _get_file_content_ths("cninfo.js")
@@ -62,11 +64,12 @@ def stock_industry_category_cninfo(symbol: str = "巨潮行业分类标准") ->
62
64
  "Content-Length": "0",
63
65
  "Host": "webapi.cninfo.com.cn",
64
66
  "Accept-Enckey": mcode,
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.get(url, params=params, headers=headers)
@@ -89,11 +92,13 @@ def stock_industry_category_cninfo(symbol: str = "巨潮行业分类标准") ->
89
92
  g = tmp.groupby("len")
90
93
  level = 0
91
94
  for k in g.groups.keys():
92
- temp_df.loc[temp_df["类目编码"].isin(g.get_group(k)["类目编码"]), "Level"] = level
95
+ temp_df.loc[temp_df["类目编码"].isin(g.get_group(k)["类目编码"]), "Level"] = (
96
+ level
97
+ )
93
98
  level += 1
94
99
  temp_df["Level"] = temp_df["Level"].astype(int)
95
100
  temp_df.rename(columns={"Level": "分级"}, inplace=True)
96
- temp_df["终止日期"] = pd.to_datetime(temp_df["终止日期"]).dt.date
101
+ temp_df["终止日期"] = pd.to_datetime(temp_df["终止日期"], errors="coerce").dt.date
97
102
  return temp_df
98
103
 
99
104
 
@@ -104,7 +109,7 @@ def stock_industry_change_cninfo(
104
109
  ) -> pd.DataFrame:
105
110
  """
106
111
  巨潮资讯-上市公司行业归属的变动情况
107
- http://webapi.cninfo.com.cn/#/apiDoc
112
+ https://webapi.cninfo.com.cn/#/apiDoc
108
113
  查询 p_stock2110 接口
109
114
  :param symbol: 股票代码
110
115
  :type symbol: str
@@ -115,13 +120,12 @@ def stock_industry_change_cninfo(
115
120
  :return: 行业归属的变动情况
116
121
  :rtype: pandas.DataFrame
117
122
  """
118
- url = "http://webapi.cninfo.com.cn/api/stock/p_stock2110"
123
+ url = "https://webapi.cninfo.com.cn/api/stock/p_stock2110"
119
124
  params = {
120
125
  "scode": symbol,
121
126
  "sdate": "-".join([start_date[:4], start_date[4:6], start_date[6:]]),
122
127
  "edate": "-".join([end_date[:4], end_date[4:6], end_date[6:]]),
123
128
  }
124
-
125
129
  js_code = py_mini_racer.MiniRacer()
126
130
  js_content = _get_file_content_ths("cninfo.js")
127
131
  js_code.eval(js_content)
@@ -134,11 +138,12 @@ def stock_industry_change_cninfo(
134
138
  "Content-Length": "0",
135
139
  "Host": "webapi.cninfo.com.cn",
136
140
  "Accept-Enckey": mcode,
137
- "Origin": "http://webapi.cninfo.com.cn",
141
+ "Origin": "https://webapi.cninfo.com.cn",
138
142
  "Pragma": "no-cache",
139
143
  "Proxy-Connection": "keep-alive",
140
- "Referer": "http://webapi.cninfo.com.cn/",
141
- "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",
144
+ "Referer": "https://webapi.cninfo.com.cn/",
145
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
146
+ "Chrome/93.0.4577.63 Safari/537.36",
142
147
  "X-Requested-With": "XMLHttpRequest",
143
148
  }
144
149
  r = requests.post(url, params=params, headers=headers)
@@ -161,7 +166,7 @@ def stock_industry_change_cninfo(
161
166
  ignore_cols = ["最新记录标识"]
162
167
  temp_df.rename(columns=cols_map, inplace=True)
163
168
  temp_df.fillna(np.nan, inplace=True)
164
- temp_df["变更日期"] = pd.to_datetime(temp_df["变更日期"]).dt.date
169
+ temp_df["变更日期"] = pd.to_datetime(temp_df["变更日期"], errors="coerce").dt.date
165
170
  data_df = temp_df[[c for c in temp_df.columns if c not in ignore_cols]]
166
171
  return data_df
167
172
 
@@ -1,13 +1,14 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2021/9/14 16:29
4
+ Date: 2024/6/18 18:30
5
5
  Desc: 巨潮资讯-数据中心-行业分析-行业市盈率
6
6
  http://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,12 +22,14 @@ def _get_file_content_ths(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
 
28
29
 
29
- def stock_industry_pe_ratio_cninfo(symbol: str = "证监会行业分类", date: str = "20210910") -> pd.DataFrame:
30
+ def stock_industry_pe_ratio_cninfo(
31
+ symbol: str = "证监会行业分类", date: str = "20210910"
32
+ ) -> pd.DataFrame:
30
33
  """
31
34
  巨潮资讯-数据中心-行业分析-行业市盈率
32
35
  http://webapi.cninfo.com.cn/#/thematicStatistics
@@ -37,14 +40,12 @@ def stock_industry_pe_ratio_cninfo(symbol: str = "证监会行业分类", date:
37
40
  :return: 行业市盈率
38
41
  :rtype: pandas.DataFrame
39
42
  """
40
- sort_code_map = {
41
- "证监会行业分类": "008001",
42
- "国证行业分类": "008200"
43
- }
43
+ sort_code_map = {"证监会行业分类": "008001", "国证行业分类": "008200"}
44
44
  url = "http://webapi.cninfo.com.cn/api/sysapi/p_sysapi1087"
45
- params = {"tdate": "-".join([date[:4], date[4:6], date[6:]]),
46
- "sortcode": sort_code_map[symbol],
47
- }
45
+ params = {
46
+ "tdate": "-".join([date[:4], date[4:6], date[6:]]),
47
+ "sortcode": sort_code_map[symbol],
48
+ }
48
49
  js_code = py_mini_racer.MiniRacer()
49
50
  js_content = _get_file_content_ths("cninfo.js")
50
51
  js_code.eval(js_content)
@@ -61,7 +62,8 @@ def stock_industry_pe_ratio_cninfo(symbol: str = "证监会行业分类", date:
61
62
  "Pragma": "no-cache",
62
63
  "Proxy-Connection": "keep-alive",
63
64
  "Referer": "http://webapi.cninfo.com.cn/",
64
- "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",
65
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
66
+ "Chrome/93.0.4577.63 Safari/537.36",
65
67
  "X-Requested-With": "XMLHttpRequest",
66
68
  }
67
69
  r = requests.post(url, params=params, headers=headers)
@@ -81,31 +83,43 @@ def stock_industry_pe_ratio_cninfo(symbol: str = "证监会行业分类", date:
81
83
  "变动日期",
82
84
  "公司数量",
83
85
  ]
84
- temp_df = temp_df[[
85
- "变动日期",
86
- "行业分类",
87
- "行业层级",
88
- "行业编码",
89
- "行业名称",
90
- "公司数量",
91
- "纳入计算公司数量",
92
- "总市值-静态",
93
- "净利润-静态",
94
- "静态市盈率-加权平均",
95
- "静态市盈率-中位数",
96
- "静态市盈率-算术平均",
97
- ]]
86
+ temp_df = temp_df[
87
+ [
88
+ "变动日期",
89
+ "行业分类",
90
+ "行业层级",
91
+ "行业编码",
92
+ "行业名称",
93
+ "公司数量",
94
+ "纳入计算公司数量",
95
+ "总市值-静态",
96
+ "净利润-静态",
97
+ "静态市盈率-加权平均",
98
+ "静态市盈率-中位数",
99
+ "静态市盈率-算术平均",
100
+ ]
101
+ ]
98
102
  temp_df["行业层级"] = pd.to_numeric(temp_df["行业层级"], errors="coerce")
99
103
  temp_df["公司数量"] = pd.to_numeric(temp_df["公司数量"], errors="coerce")
100
- temp_df["纳入计算公司数量"] = pd.to_numeric(temp_df["纳入计算公司数量"], errors="coerce")
104
+ temp_df["纳入计算公司数量"] = pd.to_numeric(
105
+ temp_df["纳入计算公司数量"], errors="coerce"
106
+ )
101
107
  temp_df["总市值-静态"] = pd.to_numeric(temp_df["总市值-静态"], errors="coerce")
102
108
  temp_df["净利润-静态"] = pd.to_numeric(temp_df["净利润-静态"], errors="coerce")
103
- temp_df["静态市盈率-加权平均"] = pd.to_numeric(temp_df["静态市盈率-加权平均"], errors="coerce")
104
- temp_df["静态市盈率-中位数"] = pd.to_numeric(temp_df["静态市盈率-中位数"], errors="coerce")
105
- temp_df["静态市盈率-算术平均"] = pd.to_numeric(temp_df["静态市盈率-算术平均"], errors="coerce")
109
+ temp_df["静态市盈率-加权平均"] = pd.to_numeric(
110
+ temp_df["静态市盈率-加权平均"], errors="coerce"
111
+ )
112
+ temp_df["静态市盈率-中位数"] = pd.to_numeric(
113
+ temp_df["静态市盈率-中位数"], errors="coerce"
114
+ )
115
+ temp_df["静态市盈率-算术平均"] = pd.to_numeric(
116
+ temp_df["静态市盈率-算术平均"], errors="coerce"
117
+ )
106
118
  return temp_df
107
119
 
108
120
 
109
121
  if __name__ == "__main__":
110
- stock_industry_pe_ratio_cninfo_df = stock_industry_pe_ratio_cninfo(symbol="国证行业分类", date="20210910")
122
+ stock_industry_pe_ratio_cninfo_df = stock_industry_pe_ratio_cninfo(
123
+ symbol="国证行业分类", date="20240617"
124
+ )
111
125
  print(stock_industry_pe_ratio_cninfo_df)
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/4/3 16:20
4
+ Date: 2024/7/22 17:30
5
5
  Desc: 申万宏源研究-行业分类
6
- https://www.swhyresearch.com/institute_sw/allIndex/downloadCenter/industryType
6
+ http://www.swhyresearch.com/institute_sw/allIndex/downloadCenter/industryType
7
7
  """
8
8
 
9
9
  import io
@@ -11,6 +11,8 @@ import io
11
11
  import pandas as pd
12
12
  import requests
13
13
 
14
+ from akshare.utils.cons import headers
15
+
14
16
 
15
17
  def stock_industry_clf_hist_sw() -> pd.DataFrame:
16
18
  """
@@ -19,13 +21,7 @@ def stock_industry_clf_hist_sw() -> pd.DataFrame:
19
21
  :return: 个股行业分类变动历史
20
22
  :rtype: pandas.DataFrame
21
23
  """
22
- url = (
23
- "https://www.swsresearch.com/swindex/pdf/SwClass2021/StockClassifyUse_stock.xls"
24
- )
25
- headers = {
26
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
27
- "Chrome/102.0.0.0 Safari/537.36"
28
- }
24
+ url = "https://www.swsresearch.com/swindex/pdf/SwClass2021/StockClassifyUse_stock.xls" # 此处为 https
29
25
  r = requests.get(url, headers=headers)
30
26
  temp_df = pd.read_excel(
31
27
  io.BytesIO(r.content), dtype={"股票代码": "str", "行业代码": "str"}
@@ -1,9 +1,10 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/2/29 18:50
4
+ Date: 2024/5/27 15:30
5
5
  Desc: 股票基本信息
6
6
  """
7
+
7
8
  import json
8
9
  import warnings
9
10
  from functools import lru_cache
@@ -133,7 +134,8 @@ def stock_info_sh_name_code(symbol: str = "主板A股") -> pd.DataFrame:
133
134
  "Host": "query.sse.com.cn",
134
135
  "Pragma": "no-cache",
135
136
  "Referer": "https://www.sse.com.cn/assortment/stock/list/share/",
136
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36",
137
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
138
+ "Chrome/81.0.4044.138 Safari/537.36",
137
139
  }
138
140
  params = {
139
141
  "STOCK_TYPE": indicator_map[symbol],
@@ -149,7 +151,6 @@ def stock_info_sh_name_code(symbol: str = "主板A股") -> pd.DataFrame:
149
151
  "pageHelp.pageSize": "10000",
150
152
  "pageHelp.pageNo": "1",
151
153
  "pageHelp.endPage": "1",
152
- "_": "1653291270045",
153
154
  }
154
155
  r = requests.get(url, params=params, headers=headers)
155
156
  data_json = r.json()
@@ -158,7 +159,9 @@ def stock_info_sh_name_code(symbol: str = "主板A股") -> pd.DataFrame:
158
159
  temp_df.rename(
159
160
  columns={
160
161
  col_stock_code: "证券代码",
161
- "COMPANY_ABBR": "证券简称",
162
+ "SEC_NAME_CN": "证券简称",
163
+ "SEC_NAME_FULL": "证券全称",
164
+ "COMPANY_ABBR": "公司简称",
162
165
  "FULL_NAME": "公司全称",
163
166
  "LIST_DATE": "上市日期",
164
167
  },
@@ -168,6 +171,8 @@ def stock_info_sh_name_code(symbol: str = "主板A股") -> pd.DataFrame:
168
171
  [
169
172
  "证券代码",
170
173
  "证券简称",
174
+ "证券全称",
175
+ "公司简称",
171
176
  "公司全称",
172
177
  "上市日期",
173
178
  ]
@@ -194,11 +199,12 @@ def stock_info_bj_name_code() -> pd.DataFrame:
194
199
  "sorttype": "asc",
195
200
  }
196
201
  headers = {
197
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36"
202
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
203
+ "Chrome/110.0.0.0 Safari/537.36"
198
204
  }
199
205
  r = requests.post(url, data=payload, headers=headers)
200
206
  data_text = r.text
201
- data_json = json.loads(data_text[data_text.find("["): -1])
207
+ data_json = json.loads(data_text[data_text.find("[") : -1])
202
208
  total_page = data_json[0]["totalPages"]
203
209
  big_df = pd.DataFrame()
204
210
  tqdm = get_tqdm()
@@ -206,7 +212,7 @@ def stock_info_bj_name_code() -> pd.DataFrame:
206
212
  payload.update({"page": page})
207
213
  r = requests.post(url, data=payload, headers=headers)
208
214
  data_text = r.text
209
- data_json = json.loads(data_text[data_text.find("["): -1])
215
+ data_json = json.loads(data_text[data_text.find("[") : -1])
210
216
  temp_df = data_json[0]["content"]
211
217
  temp_df = pd.DataFrame(temp_df)
212
218
  big_df = pd.concat([big_df, temp_df], ignore_index=True)
@@ -280,7 +286,7 @@ def stock_info_bj_name_code() -> pd.DataFrame:
280
286
  def stock_info_sh_delist(symbol: str = "全部") -> pd.DataFrame:
281
287
  """
282
288
  上海证券交易所-终止上市公司
283
- http://www.sse.com.cn/assortment/stock/list/delisting/
289
+ https://www.sse.com.cn/assortment/stock/list/delisting/
284
290
  :param symbol: choice of {"全部", "沪市", "科创板"}
285
291
  :type symbol: str
286
292
  :return: 终止上市公司
@@ -300,8 +306,9 @@ def stock_info_sh_delist(symbol: str = "全部") -> pd.DataFrame:
300
306
  "Connection": "keep-alive",
301
307
  "Host": "query.sse.com.cn",
302
308
  "Pragma": "no-cache",
303
- "Referer": "http://www.sse.com.cn/",
304
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36",
309
+ "Referer": "https://www.sse.com.cn/",
310
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
311
+ "Chrome/97.0.4692.71 Safari/537.36",
305
312
  }
306
313
  params = {
307
314
  "sqlId": "COMMON_SSE_CP_GPJCTPZ_GPLB_GP_L",
@@ -317,7 +324,6 @@ def stock_info_sh_delist(symbol: str = "全部") -> pd.DataFrame:
317
324
  "pageHelp.pageSize": "500",
318
325
  "pageHelp.pageNo": "1",
319
326
  "pageHelp.endPage": "1",
320
- "_": "1643035608183",
321
327
  }
322
328
  r = requests.get(url, params=params, headers=headers)
323
329
  data_json = r.json()
@@ -340,11 +346,13 @@ def stock_info_sh_delist(symbol: str = "全部") -> pd.DataFrame:
340
346
  ]
341
347
  ]
342
348
  temp_df["上市日期"] = pd.to_datetime(temp_df["上市日期"], errors="coerce").dt.date
343
- temp_df["暂停上市日期"] = pd.to_datetime(temp_df["暂停上市日期"], errors="coerce").dt.date
349
+ temp_df["暂停上市日期"] = pd.to_datetime(
350
+ temp_df["暂停上市日期"], errors="coerce"
351
+ ).dt.date
344
352
  return temp_df
345
353
 
346
354
 
347
- def stock_info_sz_delist(symbol: str = "暂停上市公司") -> pd.DataFrame:
355
+ def stock_info_sz_delist(symbol: str = "终止上市公司") -> pd.DataFrame:
348
356
  """
349
357
  深证证券交易所-暂停上市公司-终止上市公司
350
358
  https://www.szse.cn/market/stock/suspend/index.html
@@ -416,13 +424,15 @@ def stock_info_change_name(symbol: str = "000503") -> pd.DataFrame:
416
424
  temp_df.columns = ["item", "value"]
417
425
  temp_df["item"] = temp_df["item"].str.split(":", expand=True)[0]
418
426
  try:
419
- name_list = temp_df[temp_df["item"] == "证券简称更名历史"].value.tolist()[0].split(" ")
427
+ name_list = (
428
+ temp_df[temp_df["item"] == "证券简称更名历史"].value.tolist()[0].split(" ")
429
+ )
420
430
  big_df = pd.DataFrame(name_list)
421
431
  big_df.reset_index(inplace=True)
422
432
  big_df["index"] = big_df.index + 1
423
433
  big_df.columns = ["index", "name"]
424
434
  return big_df
425
- except IndexError as e:
435
+ except IndexError:
426
436
  return pd.DataFrame()
427
437
 
428
438
 
@@ -439,7 +449,9 @@ def stock_info_a_code_name() -> pd.DataFrame:
439
449
 
440
450
  stock_sz = stock_info_sz_name_code(symbol="A股列表")
441
451
  stock_sz["A股代码"] = stock_sz["A股代码"].astype(str).str.zfill(6)
442
- big_df = pd.concat([big_df, stock_sz[["A股代码", "A股简称"]]], ignore_index=True)
452
+ big_df = pd.concat(
453
+ objs=[big_df, stock_sz[["A股代码", "A股简称"]]], ignore_index=True
454
+ )
443
455
  big_df.columns = ["证券代码", "证券简称"]
444
456
 
445
457
  stock_kcb = stock_info_sh_name_code(symbol="科创板")
@@ -449,9 +461,9 @@ def stock_info_a_code_name() -> pd.DataFrame:
449
461
  stock_bse = stock_bse[["证券代码", "证券简称"]]
450
462
  stock_bse.columns = ["证券代码", "证券简称"]
451
463
 
452
- big_df = pd.concat([big_df, stock_sh], ignore_index=True)
453
- big_df = pd.concat([big_df, stock_kcb], ignore_index=True)
454
- big_df = pd.concat([big_df, stock_bse], ignore_index=True)
464
+ big_df = pd.concat(objs=[big_df, stock_sh], ignore_index=True)
465
+ big_df = pd.concat(objs=[big_df, stock_kcb], ignore_index=True)
466
+ big_df = pd.concat(objs=[big_df, stock_bse], ignore_index=True)
455
467
  big_df.columns = ["code", "name"]
456
468
  return big_df
457
469