akshare 1.14.49__py3-none-any.whl → 1.17.99__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. akshare/__init__.py +595 -129
  2. akshare/air/air_hebei.py +77 -54
  3. akshare/air/air_zhenqi.py +0 -4
  4. akshare/air/cons.py +1 -0
  5. akshare/air/crypto.js +1 -1
  6. akshare/air/outcrypto.js +1 -1
  7. akshare/article/cons.py +1 -0
  8. akshare/article/epu_index.py +4 -3
  9. akshare/article/ff_factor.py +19 -8
  10. akshare/article/fred_md.py +4 -1
  11. akshare/article/risk_rv.py +3 -8
  12. akshare/bank/bank_cbirc_2020.py +11 -11
  13. akshare/bank/cons.py +7 -6
  14. akshare/bond/bond_buy_back_em.py +228 -0
  15. akshare/bond/bond_cb_sina.py +1 -0
  16. akshare/bond/bond_cb_ths.py +17 -9
  17. akshare/bond/bond_cbond.py +19 -14
  18. akshare/bond/bond_china.py +38 -39
  19. akshare/bond/bond_china_money.py +1 -1
  20. akshare/bond/bond_convert.py +10 -9
  21. akshare/bond/bond_em.py +37 -17
  22. akshare/bond/bond_summary.py +38 -37
  23. akshare/bond/bond_zh_cov.py +31 -40
  24. akshare/bond/bond_zh_sina.py +4 -0
  25. akshare/bond/cons.py +14 -11
  26. akshare/cal/__init__.py +0 -0
  27. akshare/cal/rv.py +170 -0
  28. akshare/cost/cost_living.py +7 -5
  29. akshare/crypto/__init__.py +1 -1
  30. akshare/crypto/crypto_bitcoin_cme.py +9 -7
  31. akshare/crypto/crypto_hold.py +4 -2
  32. akshare/currency/currency.py +1 -0
  33. akshare/currency/currency_china_bank_sina.py +11 -6
  34. akshare/data/__init__.py +1 -1
  35. akshare/data/cninfo.js +1 -1
  36. akshare/datasets.py +10 -21
  37. akshare/economic/cons.py +10 -3
  38. akshare/economic/macro_australia.py +74 -69
  39. akshare/economic/macro_bank.py +95 -653
  40. akshare/economic/macro_canada.py +92 -81
  41. akshare/economic/macro_china.py +97 -105
  42. akshare/economic/macro_china_hk.py +0 -1
  43. akshare/economic/macro_euro.py +103 -56
  44. akshare/economic/macro_finance_ths.py +7 -5
  45. akshare/economic/macro_germany.py +1 -1
  46. akshare/economic/macro_japan.py +0 -1
  47. akshare/economic/macro_other.py +1 -6
  48. akshare/economic/macro_swiss.py +2 -3
  49. akshare/economic/macro_uk.py +1 -1
  50. akshare/economic/macro_usa.py +7 -9
  51. akshare/economic/marco_cnbs.py +11 -6
  52. akshare/energy/energy_carbon.py +0 -1
  53. akshare/energy/energy_oil_em.py +1 -2
  54. akshare/event/cons.py +1 -0
  55. akshare/exceptions.py +43 -0
  56. akshare/file_fold/calendar.json +245 -2
  57. akshare/forex/__init__.py +0 -0
  58. akshare/forex/cons.py +192 -0
  59. akshare/forex/forex_em.py +149 -0
  60. akshare/fortune/fortune_500.py +1 -37
  61. akshare/fortune/fortune_bloomberg.py +6 -3
  62. akshare/fortune/fortune_forbes_500.py +3 -6
  63. akshare/fortune/fortune_hurun.py +2 -1
  64. akshare/fortune/fortune_xincaifu_500.py +17 -14
  65. akshare/fund/fund_announcement_em.py +145 -0
  66. akshare/fund/fund_aum_em.py +49 -35
  67. akshare/fund/fund_em.py +251 -220
  68. akshare/fund/fund_etf_em.py +44 -35
  69. akshare/fund/fund_etf_sina.py +75 -27
  70. akshare/fund/fund_etf_ths.py +2 -0
  71. akshare/fund/fund_fee_em.py +172 -0
  72. akshare/fund/fund_fhsp_em.py +42 -32
  73. akshare/fund/fund_init_em.py +8 -5
  74. akshare/fund/fund_lof_em.py +12 -19
  75. akshare/fund/fund_manager.py +25 -11
  76. akshare/fund/fund_overview_em.py +42 -0
  77. akshare/fund/fund_portfolio_em.py +23 -21
  78. akshare/fund/fund_position_lg.py +19 -8
  79. akshare/fund/fund_rank_em.py +2 -5
  80. akshare/fund/fund_rating.py +33 -12
  81. akshare/fund/fund_scale_em.py +24 -13
  82. akshare/fund/fund_scale_sina.py +20 -10
  83. akshare/fund/fund_xq.py +3 -2
  84. akshare/futures/cons.py +135 -39
  85. akshare/futures/cot.py +55 -56
  86. akshare/futures/futures_basis.py +49 -11
  87. akshare/futures/futures_comex_em.py +1 -0
  88. akshare/futures/futures_comm_ctp.py +1 -1
  89. akshare/futures/futures_contract_detail.py +59 -9
  90. akshare/futures/futures_daily_bar.py +66 -59
  91. akshare/futures/futures_foreign.py +14 -8
  92. akshare/futures/futures_hf_em.py +215 -61
  93. akshare/futures/futures_hist_em.py +191 -0
  94. akshare/futures/futures_hq_sina.py +5 -3
  95. akshare/futures/futures_index_ccidx.py +24 -82
  96. akshare/futures/futures_inventory_99.py +70 -272
  97. akshare/futures/futures_inventory_em.py +14 -11
  98. akshare/futures/futures_news_shmet.py +2 -2
  99. akshare/futures/futures_roll_yield.py +11 -24
  100. akshare/futures/futures_rule.py +7 -3
  101. akshare/futures/futures_rule_em.py +38 -0
  102. akshare/futures/futures_settlement_price_sgx.py +21 -6
  103. akshare/futures/futures_stock_js.py +0 -1
  104. akshare/futures/futures_to_spot.py +5 -6
  105. akshare/futures/futures_warehouse_receipt.py +48 -47
  106. akshare/futures/futures_zh_sina.py +3 -3
  107. akshare/futures/receipt.py +298 -165
  108. akshare/futures/requests_fun.py +16 -3
  109. akshare/futures/symbol_var.py +32 -13
  110. akshare/futures_derivative/cons.py +100 -103
  111. akshare/futures_derivative/futures_contract_info_cffex.py +55 -39
  112. akshare/futures_derivative/futures_contract_info_czce.py +2 -0
  113. akshare/futures_derivative/futures_contract_info_dce.py +43 -17
  114. akshare/futures_derivative/futures_contract_info_gfex.py +43 -31
  115. akshare/futures_derivative/futures_contract_info_ine.py +43 -34
  116. akshare/futures_derivative/futures_contract_info_shfe.py +3 -4
  117. akshare/futures_derivative/futures_cot_sina.py +8 -6
  118. akshare/futures_derivative/futures_index_sina.py +25 -13
  119. akshare/fx/cons.py +12 -7
  120. akshare/fx/fx_c_swap_cm.py +62 -0
  121. akshare/fx/fx_quote.py +3 -2
  122. akshare/fx/fx_quote_baidu.py +2 -1
  123. akshare/hf/__init__.py +1 -1
  124. akshare/hf/hf_sp500.py +8 -7
  125. akshare/index/cons.py +132 -28
  126. akshare/index/index_cni.py +7 -7
  127. akshare/index/index_cons.py +2 -2
  128. akshare/index/index_csindex.py +68 -0
  129. akshare/index/index_cx.py +20 -20
  130. akshare/index/index_drewry.py +17 -16
  131. akshare/index/index_eri.py +1 -0
  132. akshare/index/index_global_em.py +167 -0
  133. akshare/index/index_global_sina.py +82 -0
  134. akshare/index/index_kq_fz.py +17 -14
  135. akshare/index/index_kq_ss.py +1 -0
  136. akshare/index/index_option_qvix.py +351 -16
  137. akshare/index/index_research_sw.py +21 -21
  138. akshare/index/index_spot.py +9 -5
  139. akshare/index/index_stock_hk.py +5 -9
  140. akshare/index/index_stock_zh.py +111 -24
  141. akshare/index/index_stock_zh_csindex.py +3 -367
  142. akshare/index/index_sugar.py +18 -4
  143. akshare/index/index_sw.py +10 -2
  144. akshare/index/index_yw.py +53 -75
  145. akshare/index/index_zh_em.py +15 -82
  146. akshare/interest_rate/interbank_rate_em.py +0 -1
  147. akshare/movie/jm.js +0 -1
  148. akshare/news/__init__.py +1 -1
  149. akshare/news/news_baidu.py +395 -222
  150. akshare/news/news_stock.py +49 -16
  151. akshare/option/cons.py +2 -2
  152. akshare/option/option_commodity.py +341 -220
  153. akshare/option/option_commodity_sina.py +22 -26
  154. akshare/option/option_contract_info_ctp.py +63 -0
  155. akshare/option/option_current_sse.py +61 -0
  156. akshare/option/option_current_szse.py +84 -0
  157. akshare/option/option_czce.py +37 -9
  158. akshare/option/option_daily_stats_sse_szse.py +0 -1
  159. akshare/option/option_em.py +4 -8
  160. akshare/option/option_finance.py +60 -12
  161. akshare/option/option_finance_sina.py +7 -7
  162. akshare/option/option_lhb_em.py +0 -1
  163. akshare/option/option_margin.py +62 -0
  164. akshare/option/option_premium_analysis_em.py +58 -53
  165. akshare/option/option_risk_analysis_em.py +11 -8
  166. akshare/option/option_risk_indicator_sse.py +3 -4
  167. akshare/option/option_value_analysis_em.py +62 -55
  168. akshare/other/__init__.py +1 -1
  169. akshare/pro/__init__.py +0 -1
  170. akshare/pro/client.py +6 -4
  171. akshare/pro/cons.py +3 -2
  172. akshare/pro/data_pro.py +6 -5
  173. akshare/qdii/__init__.py +0 -0
  174. akshare/qdii/qdii_jsl.py +233 -0
  175. akshare/qhkc/__init__.py +1 -6
  176. akshare/qhkc/qhkc_api.py +64 -22
  177. akshare/qhkc_web/__init__.py +1 -6
  178. akshare/qhkc_web/qhkc_fund.py +10 -6
  179. akshare/qhkc_web/qhkc_index.py +28 -14
  180. akshare/qhkc_web/qhkc_tool.py +62 -59
  181. akshare/rate/__init__.py +1 -1
  182. akshare/rate/repo_rate.py +36 -32
  183. akshare/reits/__init__.py +1 -1
  184. akshare/reits/reits_basic.py +149 -13
  185. akshare/request.py +117 -0
  186. akshare/spot/__init__.py +1 -1
  187. akshare/spot/spot_hog_soozhu.py +165 -3
  188. akshare/spot/spot_sge.py +70 -9
  189. akshare/stock/cons.py +60 -23
  190. akshare/stock/stock_allotment_cninfo.py +8 -8
  191. akshare/stock/stock_ask_bid_em.py +3 -78
  192. akshare/stock/stock_board_concept_em.py +160 -35
  193. akshare/stock/stock_board_industry_em.py +163 -70
  194. akshare/stock/stock_dividend_cninfo.py +31 -17
  195. akshare/stock/stock_dzjy_em.py +347 -260
  196. akshare/stock/stock_fund_em.py +72 -64
  197. akshare/stock/stock_fund_hold.py +1 -2
  198. akshare/stock/stock_gsrl_em.py +1 -0
  199. akshare/stock/stock_hk_comparison_em.py +175 -0
  200. akshare/stock/stock_hk_famous.py +4 -5
  201. akshare/stock/stock_hk_fhpx_ths.py +2 -1
  202. akshare/stock/stock_hk_hot_rank_em.py +1 -0
  203. akshare/stock/stock_hk_sina.py +84 -36
  204. akshare/stock/stock_hold_control_cninfo.py +82 -0
  205. akshare/stock/stock_hold_control_em.py +0 -2
  206. akshare/stock/stock_hot_rank_em.py +4 -1
  207. akshare/stock/stock_hot_search_baidu.py +32 -19
  208. akshare/stock/stock_hot_up_em.py +4 -1
  209. akshare/stock/stock_hsgt_em.py +155 -0
  210. akshare/stock/stock_industry.py +1 -0
  211. akshare/stock/stock_industry_cninfo.py +1 -2
  212. akshare/stock/stock_info.py +6 -4
  213. akshare/stock/stock_info_em.py +17 -11
  214. akshare/stock/stock_intraday_em.py +4 -78
  215. akshare/stock/stock_intraday_sina.py +2 -2
  216. akshare/stock/stock_news_cx.py +39 -0
  217. akshare/stock/stock_profile_cninfo.py +7 -7
  218. akshare/stock/stock_profile_em.py +302 -0
  219. akshare/stock/stock_rank_forecast.py +6 -5
  220. akshare/stock/stock_repurchase_em.py +7 -2
  221. akshare/stock/stock_share_changes_cninfo.py +7 -5
  222. akshare/stock/stock_share_hold.py +24 -20
  223. akshare/stock/stock_stop.py +6 -6
  224. akshare/stock/stock_summary.py +153 -417
  225. akshare/stock/stock_us_famous.py +5 -6
  226. akshare/stock/stock_us_js.py +3 -2
  227. akshare/stock/stock_us_pink.py +38 -27
  228. akshare/stock/stock_us_sina.py +7 -3
  229. akshare/stock/stock_weibo_nlp.py +18 -20
  230. akshare/stock/stock_xq.py +24 -22
  231. akshare/stock/stock_zh_a_sina.py +8 -5
  232. akshare/stock/stock_zh_a_special.py +240 -243
  233. akshare/stock/stock_zh_a_tick_tx.py +11 -3
  234. akshare/stock/stock_zh_ah_tx.py +23 -26
  235. akshare/stock/stock_zh_b_sina.py +2 -2
  236. akshare/stock/stock_zh_comparison_em.py +250 -0
  237. akshare/stock/stock_zh_kcb_sina.py +67 -64
  238. akshare/stock_a/__init__.py +0 -0
  239. akshare/stock_a/stock_board_concept_name_em.py +170 -0
  240. akshare/stock_a/stock_individual_fund_flow_rank.py +258 -0
  241. akshare/stock_a/stock_zh_a_spot.py +212 -0
  242. akshare/stock_feature/cons.py +1 -0
  243. akshare/stock_feature/stock_a_indicator.py +9 -54
  244. akshare/stock_feature/stock_a_pe_and_pb.py +23 -5
  245. akshare/stock_feature/stock_account_em.py +0 -1
  246. akshare/stock_feature/stock_all_pb.py +2 -1
  247. akshare/stock_feature/stock_analyst_em.py +36 -30
  248. akshare/stock_feature/stock_board_concept_ths.py +328 -0
  249. akshare/stock_feature/stock_board_industry_ths.py +57 -2
  250. akshare/stock_feature/stock_buffett_index_lg.py +10 -8
  251. akshare/stock_feature/stock_classify_sina.py +3 -6
  252. akshare/stock_feature/stock_comment_em.py +81 -144
  253. akshare/stock_feature/stock_congestion_lg.py +2 -1
  254. akshare/stock_feature/stock_cyq_em.py +5 -11
  255. akshare/stock_feature/stock_disclosure_cninfo.py +6 -6
  256. akshare/stock_feature/stock_dxsyl_em.py +121 -74
  257. akshare/stock_feature/stock_ebs_lg.py +5 -4
  258. akshare/stock_feature/stock_esg_sina.py +29 -7
  259. akshare/stock_feature/stock_fhps_em.py +2 -1
  260. akshare/stock_feature/stock_fhps_ths.py +15 -7
  261. akshare/stock_feature/stock_fund_flow.py +30 -22
  262. akshare/stock_feature/stock_gddh_em.py +19 -11
  263. akshare/stock_feature/stock_gdfx_em.py +226 -113
  264. akshare/stock_feature/stock_gdhs.py +75 -50
  265. akshare/stock_feature/stock_gdzjc_em.py +21 -10
  266. akshare/stock_feature/stock_gpzy_em.py +78 -46
  267. akshare/stock_feature/stock_gxl_lg.py +3 -2
  268. akshare/stock_feature/stock_hist_em.py +137 -234
  269. akshare/stock_feature/stock_hist_tx.py +13 -10
  270. akshare/stock_feature/stock_hk_valuation_baidu.py +20 -8
  271. akshare/stock_feature/stock_hot_xq.py +4 -6
  272. akshare/stock_feature/stock_hsgt_em.py +269 -97
  273. akshare/stock_feature/stock_hsgt_exchange_rate.py +115 -87
  274. akshare/stock_feature/stock_hsgt_min_em.py +13 -16
  275. akshare/stock_feature/stock_info.py +7 -80
  276. akshare/stock_feature/stock_inner_trade_xq.py +38 -31
  277. akshare/stock_feature/stock_jgdy_em.py +43 -40
  278. akshare/stock_feature/stock_lhb_em.py +119 -3
  279. akshare/stock_feature/stock_margin_em.py +0 -1
  280. akshare/stock_feature/stock_margin_sse.py +0 -2
  281. akshare/stock_feature/stock_pankou_em.py +71 -35
  282. akshare/stock_feature/stock_qsjy_em.py +13 -4
  283. akshare/stock_feature/stock_report_em.py +151 -7
  284. akshare/stock_feature/stock_research_report_em.py +55 -20
  285. akshare/stock_feature/stock_sy_em.py +20 -15
  286. akshare/stock_feature/stock_technology_ths.py +122 -77
  287. akshare/stock_feature/stock_tfp_em.py +2 -1
  288. akshare/stock_feature/stock_three_report_em.py +21 -5
  289. akshare/stock_feature/stock_ttm_lyr.py +18 -9
  290. akshare/stock_feature/stock_value_em.py +83 -0
  291. akshare/stock_feature/stock_yjbb_em.py +58 -32
  292. akshare/stock_feature/stock_yjyg_cninfo.py +6 -2
  293. akshare/stock_feature/stock_yjyg_em.py +1 -1
  294. akshare/stock_feature/stock_yzxdr_em.py +24 -22
  295. akshare/stock_feature/stock_zdhtmx_em.py +20 -6
  296. akshare/stock_feature/stock_zh_vote_baidu.py +4 -1
  297. akshare/stock_feature/stock_ztb_em.py +39 -24
  298. akshare/stock_fundamental/__init__.py +1 -1
  299. akshare/stock_fundamental/stock_basic_info_xq.py +119 -0
  300. akshare/stock_fundamental/{stock_finance_hk.py → stock_finance_hk_em.py} +23 -16
  301. akshare/stock_fundamental/{stock_finance.py → stock_finance_sina.py} +60 -7
  302. akshare/stock_fundamental/stock_finance_ths.py +524 -57
  303. akshare/stock_fundamental/stock_finance_us_em.py +268 -0
  304. akshare/stock_fundamental/stock_gbjg_em.py +80 -0
  305. akshare/stock_fundamental/stock_hold.py +26 -17
  306. akshare/stock_fundamental/stock_ipo_declare.py +1 -0
  307. akshare/stock_fundamental/stock_kcb_detail_sse.py +10 -10
  308. akshare/stock_fundamental/stock_kcb_sse.py +26 -25
  309. akshare/stock_fundamental/stock_notice.py +12 -3
  310. akshare/stock_fundamental/stock_profit_forecast_em.py +31 -13
  311. akshare/stock_fundamental/stock_profit_forecast_hk_etnet.py +64 -41
  312. akshare/stock_fundamental/stock_profit_forecast_ths.py +86 -35
  313. akshare/stock_fundamental/stock_recommend.py +20 -4
  314. akshare/stock_fundamental/stock_zygc.py +5 -62
  315. akshare/utils/context.py +43 -0
  316. akshare/utils/demjson.py +2009 -1338
  317. akshare/utils/func.py +49 -2
  318. akshare/utils/multi_decrypt.py +53 -0
  319. akshare/utils/token_process.py +6 -5
  320. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/METADATA +54 -80
  321. akshare-1.17.99.dist-info/RECORD +409 -0
  322. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/WHEEL +1 -1
  323. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info/licenses}/LICENSE +1 -1
  324. tests/test_func.py +3 -5
  325. akshare/bond/bond_futures.py +0 -50
  326. akshare/bond/bond_investing.py +0 -139
  327. akshare/crypto/crypto_hist_investing.py +0 -249
  328. akshare/fund/fund_announcement.py +0 -56
  329. akshare/futures/futures_international.py +0 -170
  330. akshare/futures/futures_news_baidu.py +0 -54
  331. akshare/futures/inventory_data.py +0 -100
  332. akshare/futures_derivative/futures_index_price_nh.py +0 -61
  333. akshare/futures_derivative/futures_index_return_nh.py +0 -47
  334. akshare/futures_derivative/futures_index_volatility_nh.py +0 -53
  335. akshare/futures_derivative/futures_other_index_nh.py +0 -145
  336. akshare/index/index_fear_greed_funddb.py +0 -78
  337. akshare/index/index_investing.py +0 -232
  338. akshare/sport/__init__.py +0 -6
  339. akshare/sport/sport_olympic.py +0 -27
  340. akshare/stock_feature/stock_wencai.py +0 -104
  341. akshare/stock_fundamental/stock_mda_ym.py +0 -40
  342. akshare-1.14.49.dist-info/RECORD +0 -387
  343. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/top_level.txt +0 -0
@@ -1,18 +1,21 @@
1
1
  # -*- coding:utf-8 -*-
2
2
  # !/usr/bin/env python
3
3
  """
4
- Date: 2023/10/11 15:30
4
+ Date: 2025/3/19 15:30
5
5
  Desc: 新股和风险警示股
6
6
  新浪-行情中心-沪深股市-次新股
7
- http://vip.stock.finance.sina.com.cn/mkt/#new_stock
7
+ https://vip.stock.finance.sina.com.cn/mkt/#new_stock
8
8
  东方财富网-行情中心-沪深个股-风险警示板
9
9
  https://quote.eastmoney.com/center/gridlist.html#st_board
10
10
  """
11
+
11
12
  import math
12
13
 
13
14
  import pandas as pd
14
15
  import requests
15
16
 
17
+ from akshare.utils.func import fetch_paginated_data
18
+
16
19
 
17
20
  def stock_zh_a_st_em() -> pd.DataFrame:
18
21
  """
@@ -21,88 +24,86 @@ def stock_zh_a_st_em() -> pd.DataFrame:
21
24
  :return: 风险警示板
22
25
  :rtype: pandas.DataFrame
23
26
  """
24
- url = 'http://40.push2.eastmoney.com/api/qt/clist/get'
27
+ url = "https://40.push2.eastmoney.com/api/qt/clist/get"
25
28
  params = {
26
- 'pn': '1',
27
- 'pz': '2000',
28
- 'po': '1',
29
- 'np': '1',
30
- 'ut': 'bd1d9ddb04089700cf9c27f6f7426281',
31
- 'fltt': '2',
32
- 'invt': '2',
33
- 'fid': 'f3',
34
- 'fs': 'm:0 f:4,m:1 f:4',
35
- 'fields': 'f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152',
36
- '_': '1631107510188',
29
+ "pn": "1",
30
+ "pz": "100",
31
+ "po": "1",
32
+ "np": "1",
33
+ "ut": "bd1d9ddb04089700cf9c27f6f7426281",
34
+ "fltt": "2",
35
+ "invt": "2",
36
+ "fid": "f3",
37
+ "fs": "m:0 f:4,m:1 f:4",
38
+ "fields": "f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,"
39
+ "f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152",
37
40
  }
38
- r = requests.get(url, params=params)
39
- data_json = r.json()
40
- temp_df = pd.DataFrame(data_json['data']['diff'])
41
- temp_df.reset_index(inplace=True)
42
- temp_df['index'] = range(1, len(temp_df)+1)
41
+ temp_df = fetch_paginated_data(url, params)
43
42
  temp_df.columns = [
44
- '序号',
45
- '最新价',
46
- '涨跌幅',
47
- '涨跌额',
48
- '成交量',
49
- '成交额',
50
- '振幅',
51
- '换手率',
52
- '市盈率-动态',
53
- '量比',
54
- '_',
55
- '代码',
56
- '_',
57
- '名称',
58
- '最高',
59
- '最低',
60
- '今开',
61
- '昨收',
62
- '_',
63
- '_',
64
- '_',
65
- '市净率',
66
- '_',
67
- '_',
68
- '_',
69
- '_',
70
- '_',
71
- '_',
72
- '_',
73
- '_',
74
- '_',
43
+ "序号",
44
+ "最新价",
45
+ "涨跌幅",
46
+ "涨跌额",
47
+ "成交量",
48
+ "成交额",
49
+ "振幅",
50
+ "换手率",
51
+ "市盈率-动态",
52
+ "量比",
53
+ "_",
54
+ "代码",
55
+ "_",
56
+ "名称",
57
+ "最高",
58
+ "最低",
59
+ "今开",
60
+ "昨收",
61
+ "_",
62
+ "_",
63
+ "_",
64
+ "市净率",
65
+ "_",
66
+ "_",
67
+ "_",
68
+ "_",
69
+ "_",
70
+ "_",
71
+ "_",
72
+ "_",
73
+ "_",
75
74
  ]
76
- temp_df = temp_df[[
77
- '序号',
78
- '代码',
79
- '名称',
80
- '最新价',
81
- '涨跌幅',
82
- '涨跌额',
83
- '成交量',
84
- '成交额',
85
- '振幅',
86
- '最高',
87
- '最低',
88
- '今开',
89
- '昨收',
90
- '量比',
91
- '换手率',
92
- '市盈率-动态',
93
- '市净率',
94
- ]]
95
- temp_df['最新价'] = pd.to_numeric(temp_df['最新价'], errors="coerce")
96
- temp_df['涨跌幅'] = pd.to_numeric(temp_df['涨跌幅'], errors="coerce")
97
- temp_df['涨跌额'] = pd.to_numeric(temp_df['涨跌额'], errors="coerce")
98
- temp_df['成交量'] = pd.to_numeric(temp_df['成交量'], errors="coerce")
99
- temp_df['成交额'] = pd.to_numeric(temp_df['成交额'], errors="coerce")
100
- temp_df['振幅'] = pd.to_numeric(temp_df['振幅'], errors="coerce")
101
- temp_df['最高'] = pd.to_numeric(temp_df['最高'], errors="coerce")
102
- 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")
75
+ temp_df = temp_df[
76
+ [
77
+ "序号",
78
+ "代码",
79
+ "名称",
80
+ "最新价",
81
+ "涨跌幅",
82
+ "涨跌额",
83
+ "成交量",
84
+ "成交额",
85
+ "振幅",
86
+ "最高",
87
+ "最低",
88
+ "今开",
89
+ "昨收",
90
+ "量比",
91
+ "换手率",
92
+ "市盈率-动态",
93
+ "市净率",
94
+ ]
95
+ ]
96
+ temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
97
+ temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce")
98
+ temp_df["涨跌额"] = pd.to_numeric(temp_df["涨跌额"], errors="coerce")
99
+ temp_df["成交量"] = pd.to_numeric(temp_df["成交量"], errors="coerce")
100
+ temp_df["成交额"] = pd.to_numeric(temp_df["成交额"], errors="coerce")
101
+ temp_df["振幅"] = pd.to_numeric(temp_df["振幅"], errors="coerce")
102
+ 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")
106
+ temp_df["换手率"] = pd.to_numeric(temp_df["换手率"], errors="coerce")
106
107
  return temp_df
107
108
 
108
109
 
@@ -113,195 +114,191 @@ def stock_zh_a_new_em() -> pd.DataFrame:
113
114
  :return: 新股
114
115
  :rtype: pandas.DataFrame
115
116
  """
116
- url = 'http://40.push2.eastmoney.com/api/qt/clist/get'
117
+ url = "https://40.push2.eastmoney.com/api/qt/clist/get"
117
118
  params = {
118
- 'pn': '1',
119
- 'pz': '2000',
120
- 'po': '1',
121
- 'np': '1',
122
- 'ut': 'bd1d9ddb04089700cf9c27f6f7426281',
123
- 'fltt': '2',
124
- 'invt': '2',
125
- 'fid': 'f26',
126
- 'fs': 'm:0 f:8,m:1 f:8',
127
- 'fields': 'f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152',
128
- '_': '1631107510188',
119
+ "pn": "1",
120
+ "pz": "100",
121
+ "po": "1",
122
+ "np": "1",
123
+ "ut": "bd1d9ddb04089700cf9c27f6f7426281",
124
+ "fltt": "2",
125
+ "invt": "2",
126
+ "fid": "f26",
127
+ "fs": "m:0 f:8,m:1 f:8",
128
+ "fields": "f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,"
129
+ "f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152",
129
130
  }
130
- r = requests.get(url, params=params)
131
- data_json = r.json()
132
- temp_df = pd.DataFrame(data_json['data']['diff'])
133
- temp_df.reset_index(inplace=True)
134
- temp_df['index'] = range(1, len(temp_df)+1)
131
+ temp_df = fetch_paginated_data(url, params)
135
132
  temp_df.columns = [
136
- '序号',
137
- '最新价',
138
- '涨跌幅',
139
- '涨跌额',
140
- '成交量',
141
- '成交额',
142
- '振幅',
143
- '换手率',
144
- '市盈率-动态',
145
- '量比',
146
- '_',
147
- '代码',
148
- '_',
149
- '名称',
150
- '最高',
151
- '最低',
152
- '今开',
153
- '昨收',
154
- '_',
155
- '_',
156
- '_',
157
- '市净率',
158
- '_',
159
- '_',
160
- '_',
161
- '_',
162
- '_',
163
- '_',
164
- '_',
165
- '_',
166
- '_',
133
+ "序号",
134
+ "最新价",
135
+ "涨跌幅",
136
+ "涨跌额",
137
+ "成交量",
138
+ "成交额",
139
+ "振幅",
140
+ "换手率",
141
+ "市盈率-动态",
142
+ "量比",
143
+ "_",
144
+ "代码",
145
+ "_",
146
+ "名称",
147
+ "最高",
148
+ "最低",
149
+ "今开",
150
+ "昨收",
151
+ "_",
152
+ "_",
153
+ "_",
154
+ "市净率",
155
+ "_",
156
+ "_",
157
+ "_",
158
+ "_",
159
+ "_",
160
+ "_",
161
+ "_",
162
+ "_",
163
+ "_",
167
164
  ]
168
- temp_df = temp_df[[
169
- '序号',
170
- '代码',
171
- '名称',
172
- '最新价',
173
- '涨跌幅',
174
- '涨跌额',
175
- '成交量',
176
- '成交额',
177
- '振幅',
178
- '最高',
179
- '最低',
180
- '今开',
181
- '昨收',
182
- '量比',
183
- '换手率',
184
- '市盈率-动态',
185
- '市净率',
186
- ]]
187
- temp_df['最新价'] = pd.to_numeric(temp_df['最新价'], errors="coerce")
188
- temp_df['涨跌幅'] = pd.to_numeric(temp_df['涨跌幅'], errors="coerce")
189
- temp_df['涨跌额'] = pd.to_numeric(temp_df['涨跌额'], errors="coerce")
190
- temp_df['成交量'] = pd.to_numeric(temp_df['成交量'], errors="coerce")
191
- temp_df['成交额'] = pd.to_numeric(temp_df['成交额'], errors="coerce")
192
- temp_df['振幅'] = pd.to_numeric(temp_df['振幅'], errors="coerce")
193
- temp_df['最高'] = pd.to_numeric(temp_df['最高'], errors="coerce")
194
- temp_df['最低'] = pd.to_numeric(temp_df['最低'], errors="coerce")
195
- temp_df['今开'] = pd.to_numeric(temp_df['今开'], errors="coerce")
196
- temp_df['量比'] = pd.to_numeric(temp_df['量比'], errors="coerce")
197
- temp_df['换手率'] = pd.to_numeric(temp_df['换手率'], errors="coerce")
165
+ temp_df = temp_df[
166
+ [
167
+ "序号",
168
+ "代码",
169
+ "名称",
170
+ "最新价",
171
+ "涨跌幅",
172
+ "涨跌额",
173
+ "成交量",
174
+ "成交额",
175
+ "振幅",
176
+ "最高",
177
+ "最低",
178
+ "今开",
179
+ "昨收",
180
+ "量比",
181
+ "换手率",
182
+ "市盈率-动态",
183
+ "市净率",
184
+ ]
185
+ ]
186
+ temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
187
+ temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce")
188
+ temp_df["涨跌额"] = pd.to_numeric(temp_df["涨跌额"], errors="coerce")
189
+ temp_df["成交量"] = pd.to_numeric(temp_df["成交量"], errors="coerce")
190
+ temp_df["成交额"] = pd.to_numeric(temp_df["成交额"], errors="coerce")
191
+ temp_df["振幅"] = pd.to_numeric(temp_df["振幅"], errors="coerce")
192
+ temp_df["最高"] = pd.to_numeric(temp_df["最高"], errors="coerce")
193
+ temp_df["最低"] = pd.to_numeric(temp_df["最低"], errors="coerce")
194
+ temp_df["今开"] = pd.to_numeric(temp_df["今开"], errors="coerce")
195
+ temp_df["量比"] = pd.to_numeric(temp_df["量比"], errors="coerce")
196
+ temp_df["换手率"] = pd.to_numeric(temp_df["换手率"], errors="coerce")
198
197
  return temp_df
199
198
 
200
199
 
201
200
  def stock_zh_a_stop_em() -> pd.DataFrame:
202
201
  """
203
202
  东方财富网-行情中心-沪深个股-两网及退市
204
- http://quote.eastmoney.com/center/gridlist.html#staq_net_board
203
+ https://quote.eastmoney.com/center/gridlist.html#staq_net_board
205
204
  :return: 两网及退市
206
205
  :rtype: pandas.DataFrame
207
206
  """
208
- url = 'http://40.push2.eastmoney.com/api/qt/clist/get'
207
+ url = "https://40.push2.eastmoney.com/api/qt/clist/get"
209
208
  params = {
210
- 'pn': '1',
211
- 'pz': '2000',
212
- 'po': '1',
213
- 'np': '1',
214
- 'ut': 'bd1d9ddb04089700cf9c27f6f7426281',
215
- 'fltt': '2',
216
- 'invt': '2',
217
- 'fid': 'f3',
218
- 'fs': 'm:0 s:3',
219
- 'fields': 'f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152',
220
- '_': '1631107510188',
209
+ "pn": "1",
210
+ "pz": "100",
211
+ "po": "1",
212
+ "np": "1",
213
+ "ut": "bd1d9ddb04089700cf9c27f6f7426281",
214
+ "fltt": "2",
215
+ "invt": "2",
216
+ "fid": "f3",
217
+ "fs": "m:0 s:3",
218
+ "fields": "f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,"
219
+ "f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152",
221
220
  }
222
- r = requests.get(url, params=params)
223
- data_json = r.json()
224
- temp_df = pd.DataFrame(data_json['data']['diff'])
225
- temp_df.reset_index(inplace=True)
226
- temp_df['index'] = range(1, len(temp_df)+1)
221
+ temp_df = fetch_paginated_data(url, params)
227
222
  temp_df.columns = [
228
- '序号',
229
- '最新价',
230
- '涨跌幅',
231
- '涨跌额',
232
- '成交量',
233
- '成交额',
234
- '振幅',
235
- '换手率',
236
- '市盈率-动态',
237
- '量比',
238
- '_',
239
- '代码',
240
- '_',
241
- '名称',
242
- '最高',
243
- '最低',
244
- '今开',
245
- '昨收',
246
- '_',
247
- '_',
248
- '_',
249
- '市净率',
250
- '_',
251
- '_',
252
- '_',
253
- '_',
254
- '_',
255
- '_',
256
- '_',
257
- '_',
258
- '_',
223
+ "序号",
224
+ "最新价",
225
+ "涨跌幅",
226
+ "涨跌额",
227
+ "成交量",
228
+ "成交额",
229
+ "振幅",
230
+ "换手率",
231
+ "市盈率-动态",
232
+ "量比",
233
+ "_",
234
+ "代码",
235
+ "_",
236
+ "名称",
237
+ "最高",
238
+ "最低",
239
+ "今开",
240
+ "昨收",
241
+ "_",
242
+ "_",
243
+ "_",
244
+ "市净率",
245
+ "_",
246
+ "_",
247
+ "_",
248
+ "_",
249
+ "_",
250
+ "_",
251
+ "_",
252
+ "_",
253
+ "_",
254
+ ]
255
+ temp_df = temp_df[
256
+ [
257
+ "序号",
258
+ "代码",
259
+ "名称",
260
+ "最新价",
261
+ "涨跌幅",
262
+ "涨跌额",
263
+ "成交量",
264
+ "成交额",
265
+ "振幅",
266
+ "最高",
267
+ "最低",
268
+ "今开",
269
+ "昨收",
270
+ "量比",
271
+ "换手率",
272
+ "市盈率-动态",
273
+ "市净率",
274
+ ]
259
275
  ]
260
- temp_df = temp_df[[
261
- '序号',
262
- '代码',
263
- '名称',
264
- '最新价',
265
- '涨跌幅',
266
- '涨跌额',
267
- '成交量',
268
- '成交额',
269
- '振幅',
270
- '最高',
271
- '最低',
272
- '今开',
273
- '昨收',
274
- '量比',
275
- '换手率',
276
- '市盈率-动态',
277
- '市净率',
278
- ]]
279
- temp_df['最新价'] = pd.to_numeric(temp_df['最新价'], errors="coerce")
280
- temp_df['涨跌幅'] = pd.to_numeric(temp_df['涨跌幅'], errors="coerce")
281
- temp_df['涨跌额'] = pd.to_numeric(temp_df['涨跌额'], errors="coerce")
282
- temp_df['成交量'] = pd.to_numeric(temp_df['成交量'], errors="coerce")
283
- temp_df['成交额'] = pd.to_numeric(temp_df['成交额'], errors="coerce")
284
- temp_df['振幅'] = pd.to_numeric(temp_df['振幅'], errors="coerce")
285
- temp_df['最高'] = pd.to_numeric(temp_df['最高'], errors="coerce")
286
- temp_df['最低'] = pd.to_numeric(temp_df['最低'], errors="coerce")
287
- temp_df['今开'] = pd.to_numeric(temp_df['今开'], errors="coerce")
288
- temp_df['量比'] = pd.to_numeric(temp_df['量比'], errors="coerce")
289
- temp_df['换手率'] = pd.to_numeric(temp_df['换手率'], errors="coerce")
276
+ temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
277
+ temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce")
278
+ temp_df["涨跌额"] = pd.to_numeric(temp_df["涨跌额"], errors="coerce")
279
+ temp_df["成交量"] = pd.to_numeric(temp_df["成交量"], errors="coerce")
280
+ temp_df["成交额"] = pd.to_numeric(temp_df["成交额"], errors="coerce")
281
+ temp_df["振幅"] = pd.to_numeric(temp_df["振幅"], errors="coerce")
282
+ temp_df["最高"] = pd.to_numeric(temp_df["最高"], errors="coerce")
283
+ temp_df["最低"] = pd.to_numeric(temp_df["最低"], errors="coerce")
284
+ temp_df["今开"] = pd.to_numeric(temp_df["今开"], errors="coerce")
285
+ temp_df["量比"] = pd.to_numeric(temp_df["量比"], errors="coerce")
286
+ temp_df["换手率"] = pd.to_numeric(temp_df["换手率"], errors="coerce")
290
287
  return temp_df
291
288
 
292
289
 
293
290
  def stock_zh_a_new() -> pd.DataFrame:
294
291
  """
295
292
  新浪财经-行情中心-沪深股市-次新股
296
- http://vip.stock.finance.sina.com.cn/mkt/#new_stock
293
+ https://vip.stock.finance.sina.com.cn/mkt/#new_stock
297
294
  :return: 次新股行情数据
298
295
  :rtype: pandas.DataFrame
299
296
  """
300
- url = "http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeStockCount"
297
+ url = "https://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeStockCount"
301
298
  params = {"node": "new_stock"}
302
299
  r = requests.get(url, params=params)
303
300
  total_page = math.ceil(int(r.json()) / 80)
304
- url = "http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeData"
301
+ url = "https://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeData"
305
302
  big_df = pd.DataFrame()
306
303
  for page in range(1, total_page + 1):
307
304
  params = {
@@ -332,9 +329,9 @@ def stock_zh_a_new() -> pd.DataFrame:
332
329
  "turnoverratio",
333
330
  ]
334
331
  ]
335
- big_df['open'] = pd.to_numeric(big_df['open'])
336
- big_df['high'] = pd.to_numeric(big_df['high'])
337
- big_df['low'] = pd.to_numeric(big_df['low'])
332
+ big_df["open"] = pd.to_numeric(big_df["open"])
333
+ big_df["high"] = pd.to_numeric(big_df["high"])
334
+ big_df["low"] = pd.to_numeric(big_df["low"])
338
335
  return big_df
339
336
 
340
337
 
@@ -6,6 +6,7 @@ Desc: 腾讯-股票-实时行情-成交明细
6
6
  成交明细-每个交易日 16:00 提供当日数据
7
7
  港股报价延时 15 分钟
8
8
  """
9
+
9
10
  import warnings
10
11
 
11
12
  import pandas as pd
@@ -36,17 +37,24 @@ def stock_zh_a_tick_tx_js(symbol: str = "sz000001") -> pd.DataFrame:
36
37
  r = requests.get(url, params=params)
37
38
  text_data = r.text
38
39
  temp_df = (
39
- pd.DataFrame(eval(text_data[text_data.find("["):])[1].split("|"))
40
+ pd.DataFrame(eval(text_data[text_data.find("[") :])[1].split("|"))
40
41
  .iloc[:, 0]
41
42
  .str.split("/", expand=True)
42
43
  )
43
44
  page += 1
44
45
  big_df = pd.concat([big_df, temp_df], ignore_index=True)
45
- except:
46
+ except: # noqa: E722
46
47
  break
47
48
  if not big_df.empty:
48
49
  big_df = big_df.iloc[:, 1:].copy()
49
- big_df.columns = ["成交时间", "成交价格", "价格变动", "成交量", "成交金额", "性质"]
50
+ big_df.columns = [
51
+ "成交时间",
52
+ "成交价格",
53
+ "价格变动",
54
+ "成交量",
55
+ "成交金额",
56
+ "性质",
57
+ ]
50
58
  big_df.reset_index(drop=True, inplace=True)
51
59
  property_map = {
52
60
  "S": "卖盘",