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,212 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding:utf-8 -*-
3
+ """
4
+ Date: 2025/3/16 12:00
5
+ Desc: 东方财富网-行情首页-沪深京 A 股
6
+ https://quote.eastmoney.com/
7
+ 异步接口-测试版
8
+ """
9
+
10
+ import asyncio
11
+ from typing import Dict, List
12
+
13
+ import aiohttp
14
+ import pandas as pd
15
+
16
+
17
+ async def fetch_single_page(
18
+ session: aiohttp.ClientSession, url: str, params: Dict
19
+ ) -> Dict:
20
+ """异步获取单页数据"""
21
+ async with session.get(url, params=params, ssl=False) as response:
22
+ return await response.json()
23
+
24
+
25
+ async def fetch_all_pages_async(url: str, base_params: Dict) -> List[Dict]:
26
+ """异步获取所有页面数据"""
27
+ # 首先获取总数以计算页数
28
+ first_page_params = base_params.copy()
29
+ first_page_params["pn"] = "1"
30
+
31
+ async with aiohttp.ClientSession() as session:
32
+ first_page_data = await fetch_single_page(session, url, first_page_params)
33
+
34
+ # 检查是否成功获取数据
35
+ if first_page_data.get("rc") != 0 or not first_page_data.get("data"):
36
+ return [first_page_data] # 返回错误信息
37
+
38
+ total = first_page_data["data"]["total"]
39
+ page_size = int(base_params["pz"])
40
+ total_pages = (total + page_size - 1) // page_size
41
+
42
+ # 限制页数,避免过大请求
43
+ total_pages = min(total_pages, 100)
44
+
45
+ # 创建所有页面的任务
46
+ tasks = []
47
+ for page in range(1, total_pages + 1):
48
+ page_params = base_params.copy()
49
+ page_params["pn"] = str(page)
50
+ tasks.append(fetch_single_page(session, url, page_params))
51
+
52
+ # 并发执行所有任务
53
+ results = await asyncio.gather(*tasks)
54
+ return results
55
+
56
+
57
+ def process_data(page_results: List[Dict]) -> pd.DataFrame:
58
+ """处理获取到的数据,转换为DataFrame"""
59
+ all_data = []
60
+
61
+ # 保存每个页面的结果和页码
62
+ page_number = 1
63
+ items_per_page = 100 # 假设每页100条
64
+
65
+ for result in page_results:
66
+ if result.get("rc") == 0 and result.get("data") and result["data"].get("diff"):
67
+ page_data = result["data"]["diff"]
68
+ for item in page_data:
69
+ item["page_number"] = page_number
70
+ item["page_index"] = page_data.index(item)
71
+ all_data.extend(page_data)
72
+ page_number += 1
73
+ if not all_data:
74
+ return pd.DataFrame()
75
+ df = pd.DataFrame(all_data)
76
+ df["序号"] = df.apply(
77
+ lambda row: (row["page_number"] - 1) * items_per_page + row["page_index"] + 1,
78
+ axis=1,
79
+ )
80
+ df.drop(columns=["page_number", "page_index"], inplace=True, errors="ignore")
81
+ column_map = {
82
+ "f1": "原序号",
83
+ "f2": "最新价",
84
+ "f3": "涨跌幅",
85
+ "f4": "涨跌额",
86
+ "f5": "成交量",
87
+ "f6": "成交额",
88
+ "f7": "振幅",
89
+ "f8": "换手率",
90
+ "f9": "市盈率-动态",
91
+ "f10": "量比",
92
+ "f11": "5分钟涨跌",
93
+ "f12": "代码",
94
+ "f13": "_",
95
+ "f14": "名称",
96
+ "f15": "最高",
97
+ "f16": "最低",
98
+ "f17": "今开",
99
+ "f18": "昨收",
100
+ "f20": "总市值",
101
+ "f21": "流通市值",
102
+ "f22": "涨速",
103
+ "f23": "市净率",
104
+ "f24": "60日涨跌幅",
105
+ "f25": "年初至今涨跌幅",
106
+ "f62": "-",
107
+ "f115": "-",
108
+ "f128": "-",
109
+ "f136": "-",
110
+ "f152": "-",
111
+ }
112
+
113
+ df.rename(columns=column_map, inplace=True)
114
+ desired_columns = [
115
+ "序号",
116
+ "代码",
117
+ "名称",
118
+ "最新价",
119
+ "涨跌幅",
120
+ "涨跌额",
121
+ "成交量",
122
+ "成交额",
123
+ "振幅",
124
+ "最高",
125
+ "最低",
126
+ "今开",
127
+ "昨收",
128
+ "量比",
129
+ "换手率",
130
+ "市盈率-动态",
131
+ "市净率",
132
+ "总市值",
133
+ "流通市值",
134
+ "涨速",
135
+ "5分钟涨跌",
136
+ "60日涨跌幅",
137
+ "年初至今涨跌幅",
138
+ ]
139
+ available_columns = [col for col in desired_columns if col in df.columns]
140
+ df = df[available_columns]
141
+ numeric_columns = [
142
+ "最新价",
143
+ "涨跌幅",
144
+ "涨跌额",
145
+ "成交量",
146
+ "成交额",
147
+ "振幅",
148
+ "最高",
149
+ "最低",
150
+ "今开",
151
+ "昨收",
152
+ "量比",
153
+ "换手率",
154
+ "市盈率-动态",
155
+ "市净率",
156
+ "总市值",
157
+ "流通市值",
158
+ "涨速",
159
+ "5分钟涨跌",
160
+ "60日涨跌幅",
161
+ "年初至今涨跌幅",
162
+ ]
163
+ for col in numeric_columns:
164
+ if col in df.columns:
165
+ df[col] = pd.to_numeric(df[col], errors="coerce")
166
+ df.sort_values(by="涨跌幅", ascending=False, inplace=True)
167
+ df.reset_index(drop=True, inplace=True)
168
+ df["序号"] = df.index + 1
169
+ return df
170
+
171
+
172
+ async def stock_zh_a_spot_em_async() -> pd.DataFrame:
173
+ """
174
+ 异步获取东方财富网-沪深京 A 股-实时行情
175
+ https://quote.eastmoney.com/center/gridlist.html#hs_a_board
176
+ :return: 实时行情
177
+ :rtype: pandas.DataFrame
178
+ """
179
+ url = "https://82.push2.eastmoney.com/api/qt/clist/get"
180
+ params = {
181
+ "pn": "1",
182
+ "pz": "100",
183
+ "po": "1",
184
+ "np": "1",
185
+ "ut": "bd1d9ddb04089700cf9c27f6f7426281",
186
+ "fltt": "2",
187
+ "invt": "2",
188
+ "fid": "f12",
189
+ "fs": "m:0 t:6,m:0 t:80,m:1 t:2,m:1 t:23,m:0 t:81 s:2048",
190
+ "fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,"
191
+ "f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152",
192
+ }
193
+ results = await fetch_all_pages_async(url, params)
194
+ return process_data(results)
195
+
196
+
197
+ def stock_zh_a_spot_em() -> pd.DataFrame:
198
+ """
199
+ 东方财富网-沪深京 A 股-实时行情 (同步接口)
200
+ https://quote.eastmoney.com/center/gridlist.html#hs_a_board
201
+ :return: 实时行情
202
+ :rtype: pandas.DataFrame
203
+ """
204
+ import nest_asyncio
205
+
206
+ nest_asyncio.apply()
207
+ return asyncio.run(stock_zh_a_spot_em_async())
208
+
209
+
210
+ if __name__ == "__main__":
211
+ stock_zh_a_spot_em_df = stock_zh_a_spot_em()
212
+ print(stock_zh_a_spot_em_df)
@@ -4,6 +4,7 @@
4
4
  Date: 2019/12/30 21:02
5
5
  Desc:
6
6
  """
7
+
7
8
  stock_em_sy_js = """
8
9
  function getCode(num) {
9
10
  var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
@@ -1,13 +1,16 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2023/9/10 15:30
4
+ Date: 2024/4/30 10:30
5
5
  Desc: 破净股统计历史走势
6
6
  https://www.legulegu.com/stockdata/below-net-asset-statistics
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
12
+ from akshare.utils.cons import headers
13
+
11
14
 
12
15
  def stock_a_below_net_asset_statistics(symbol: str = "全部A股") -> pd.DataFrame:
13
16
  """
@@ -29,7 +32,7 @@ def stock_a_below_net_asset_statistics(symbol: str = "全部A股") -> pd.DataFra
29
32
  "marketId": symbol_map[symbol],
30
33
  "token": "325843825a2745a2a8f9b9e3355cb864",
31
34
  }
32
- r = requests.get(url, params=params)
35
+ r = requests.get(url, params=params, headers=headers)
33
36
  data_json = r.json()
34
37
  temp_df = pd.DataFrame(data_json)
35
38
  temp_df["date"] = pd.to_datetime(temp_df["date"], unit="ms").dt.date
@@ -5,9 +5,12 @@ Date: 2023/9/10 15:32
5
5
  Desc: 乐咕乐股-创新高、新低的股票数量
6
6
  https://www.legulegu.com/stockdata/high-low-statistics
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
12
+ from akshare.utils.cons import headers
13
+
11
14
 
12
15
  def stock_a_high_low_statistics(symbol: str = "all") -> pd.DataFrame:
13
16
  """
@@ -19,7 +22,7 @@ def stock_a_high_low_statistics(symbol: str = "all") -> pd.DataFrame:
19
22
  :rtype: pandas.DataFrame
20
23
  """
21
24
  url = f"https://www.legulegu.com/stockdata/member-ship/get-high-low-statistics/{symbol}"
22
- r = requests.get(url)
25
+ r = requests.get(url, headers=headers)
23
26
  data_json = r.json()
24
27
  temp_df = pd.DataFrame(data_json)
25
28
  del temp_df["indexCode"]
@@ -31,7 +34,7 @@ def stock_a_high_low_statistics(symbol: str = "all") -> pd.DataFrame:
31
34
  temp_df["low60"] = pd.to_numeric(temp_df["low60"], errors="coerce")
32
35
  temp_df["high120"] = pd.to_numeric(temp_df["high120"], errors="coerce")
33
36
  temp_df["low120"] = pd.to_numeric(temp_df["low120"], errors="coerce")
34
- temp_df.sort_values(["date"], inplace=True, ignore_index=True)
37
+ temp_df.sort_values(by=["date"], inplace=True, ignore_index=True)
35
38
  return temp_df
36
39
 
37
40
 
@@ -1,11 +1,12 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/02/14 01:24
4
+ Date: 2025/10/30 20:24
5
5
  Desc: 市盈率, 市净率和股息率查询
6
6
  https://www.legulegu.com/stocklist
7
7
  https://www.legulegu.com/s/000001
8
8
  """
9
+
9
10
  from datetime import datetime
10
11
  from hashlib import md5
11
12
 
@@ -13,6 +14,8 @@ import pandas as pd
13
14
  import requests
14
15
  from bs4 import BeautifulSoup
15
16
 
17
+ from akshare.utils.cons import headers
18
+
16
19
 
17
20
  def get_cookie_csrf(url: str = "") -> dict:
18
21
  """
@@ -21,12 +24,17 @@ def get_cookie_csrf(url: str = "") -> dict:
21
24
  :return: 指定市场的市盈率数据
22
25
  :rtype: pandas.DataFrame
23
26
  """
24
- r = requests.get(url)
27
+ # 创建独立的 session,避免污染全局状态
28
+ session = requests.Session()
29
+ session.headers.update(headers)
30
+ r = session.get(url)
25
31
  soup = BeautifulSoup(r.text, features="lxml")
26
32
  csrf_tag = soup.find(name="meta", attrs={"name": "_csrf"})
27
33
  csrf_token = csrf_tag.attrs["content"]
28
- headers = {"X-CSRF-Token": csrf_token}
29
- return {"cookies": r.cookies, "headers": headers}
34
+ # 创建新的 headers
35
+ local_headers = headers.copy()
36
+ local_headers.update({"X-CSRF-Token": csrf_token})
37
+ return {"cookies": r.cookies, "headers": local_headers}
30
38
 
31
39
 
32
40
  def get_token_lg() -> str:
@@ -43,52 +51,8 @@ def get_token_lg() -> str:
43
51
  return token
44
52
 
45
53
 
46
- def stock_a_indicator_lg(symbol: str = "002174") -> pd.DataFrame:
47
- """
48
- 市盈率, 市净率, 股息率数据接口
49
- https://legulegu.com/stocklist
50
- :param symbol: 通过 ak.stock_a_indicator_lg(symbol="all") 来获取所有股票的代码
51
- :type symbol: str
52
- :return: 市盈率, 市净率, 股息率查询
53
- :rtype: pandas.DataFrame
54
- """
55
- if symbol == "all":
56
- url = "https://legulegu.com/stocklist"
57
- r = requests.get(url)
58
- soup = BeautifulSoup(r.text, features="lxml")
59
- node_list = soup.find_all(attrs={"class": "col-xs-6"})
60
- href_list = [item.find("a")["href"] for item in node_list]
61
- title_list = [item.find("a")["title"] for item in node_list]
62
- temp_df = pd.DataFrame([title_list, href_list]).T
63
- temp_df.columns = ["stock_name", "short_url"]
64
- temp_df["code"] = temp_df["short_url"].str.split("/", expand=True).iloc[:, -1]
65
- del temp_df["short_url"]
66
- temp_df = temp_df[["code", "stock_name"]]
67
- return temp_df
68
- else:
69
- url = "https://legulegu.com/api/s/base-info/"
70
- token = get_token_lg()
71
- params = {"token": token, "id": symbol}
72
- r = requests.post(
73
- url,
74
- params=params,
75
- **get_cookie_csrf(url="https://legulegu.com/"),
76
- )
77
- temp_json = r.json()
78
- temp_df = pd.DataFrame(
79
- temp_json["data"]["items"],
80
- columns=temp_json["data"]["fields"],
81
- )
82
- temp_df["trade_date"] = pd.to_datetime(temp_df["trade_date"]).dt.date
83
- temp_df[temp_df.columns[1:]] = temp_df[temp_df.columns[1:]].astype(float)
84
- temp_df.sort_values(by=["trade_date"], inplace=True, ignore_index=True)
85
- if len(set(temp_df['trade_date'])) <= 0:
86
- raise ValueError("数据获取失败, 请检查是否输入正确的股票代码")
87
- return temp_df
88
-
89
-
90
54
  def stock_hk_indicator_eniu(
91
- symbol: str = "hk01093", indicator: str = "市盈率"
55
+ symbol: str = "hk01093", indicator: str = "市盈率"
92
56
  ) -> pd.DataFrame:
93
57
  """
94
58
  亿牛网-港股指标
@@ -102,7 +66,7 @@ def stock_hk_indicator_eniu(
102
66
  """
103
67
  if indicator == "港股":
104
68
  url = "https://eniu.com/static/data/stock_list.json"
105
- r = requests.get(url)
69
+ r = requests.get(url, headers=headers)
106
70
  data_json = r.json()
107
71
  temp_df = pd.DataFrame(data_json)
108
72
  temp_df = temp_df[temp_df["stock_id"].str.contains("hk")]
@@ -118,19 +82,13 @@ def stock_hk_indicator_eniu(
118
82
  url = f"https://eniu.com/chart/roeh/{symbol}"
119
83
  else:
120
84
  url = f"https://eniu.com/chart/marketvalueh/{symbol}"
121
- r = requests.get(url)
85
+ r = requests.get(url, headers=headers)
122
86
  data_json = r.json()
123
87
  temp_df = pd.DataFrame(data_json)
124
88
  return temp_df
125
89
 
126
90
 
127
91
  if __name__ == "__main__":
128
- stock_a_indicator_lg_all_df = stock_a_indicator_lg(symbol="all")
129
- print(stock_a_indicator_lg_all_df)
130
-
131
- stock_a_indicator_lg_df = stock_a_indicator_lg(symbol="000001")
132
- print(stock_a_indicator_lg_df)
133
-
134
92
  stock_hk_indicator_eniu_df = stock_hk_indicator_eniu(
135
93
  symbol="hk01093", indicator="市盈率"
136
94
  )
@@ -1,15 +1,16 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2023/4/6 16:24
4
+ Date: 2025/3/20 20:00
5
5
  Desc: 乐咕乐股-A 股市盈率和市净率
6
6
  https://legulegu.com/stockdata/shanghaiPE
7
7
  """
8
+
8
9
  from datetime import datetime
9
10
 
10
11
  import pandas as pd
12
+ import py_mini_racer
11
13
  import requests
12
- from py_mini_racer import py_mini_racer
13
14
 
14
15
  from akshare.stock_feature.stock_a_indicator import get_cookie_csrf
15
16
 
@@ -316,9 +317,6 @@ function E(n, e, t, r, o, f, i) {
316
317
  return A(t ^ (e | ~r), n, e, o, f, i)
317
318
  }
318
319
  """
319
- js_functions = py_mini_racer.MiniRacer()
320
- js_functions.eval(hash_code)
321
- token = js_functions.call("hex", datetime.now().date().isoformat()).lower()
322
320
 
323
321
 
324
322
  def stock_market_pe_lg(symbol: str = "深证") -> pd.DataFrame:
@@ -330,6 +328,9 @@ def stock_market_pe_lg(symbol: str = "深证") -> pd.DataFrame:
330
328
  :return: 指定市场的市盈率数据
331
329
  :rtype: pandas.DataFrame
332
330
  """
331
+ js_functions = py_mini_racer.MiniRacer()
332
+ js_functions.eval(hash_code)
333
+ token = js_functions.call("hex", datetime.now().date().isoformat()).lower()
333
334
  if symbol in {"上证", "深证", "创业板"}:
334
335
  url = "https://legulegu.com/api/stock-data/market-pe"
335
336
  symbol_map = {
@@ -367,7 +368,11 @@ def stock_market_pe_lg(symbol: str = "深证") -> pd.DataFrame:
367
368
  else:
368
369
  url = "https://legulegu.com/api/stockdata/get-ke-chuang-ban-pe"
369
370
  params = {"token": token}
370
- r = requests.get(url, params=params, **get_cookie_csrf(url="https://legulegu.com/stockdata/ke-chuang-ban-pe"))
371
+ r = requests.get(
372
+ url,
373
+ params=params,
374
+ **get_cookie_csrf(url="https://legulegu.com/stockdata/ke-chuang-ban-pe"),
375
+ )
371
376
  data_json = r.json()
372
377
  temp_df = pd.DataFrame(data_json["data"])
373
378
  temp_df["date"] = (
@@ -399,6 +404,9 @@ def stock_index_pe_lg(symbol: str = "沪深300") -> pd.DataFrame:
399
404
  :return: 指定指数的市盈率数据
400
405
  :rtype: pandas.DataFrame
401
406
  """
407
+ js_functions = py_mini_racer.MiniRacer()
408
+ js_functions.eval(hash_code)
409
+ token = js_functions.call("hex", datetime.now().date().isoformat()).lower()
402
410
  symbol_map = {
403
411
  "上证50": "000016.SH",
404
412
  "沪深300": "000300.SH",
@@ -415,7 +423,11 @@ def stock_index_pe_lg(symbol: str = "沪深300") -> pd.DataFrame:
415
423
  }
416
424
  url = "https://legulegu.com/api/stockdata/index-basic-pe"
417
425
  params = {"token": token, "indexCode": symbol_map[symbol]}
418
- r = requests.get(url, params=params, **get_cookie_csrf(url="https://legulegu.com/stockdata/sz50-ttm-lyr"))
426
+ r = requests.get(
427
+ url,
428
+ params=params,
429
+ **get_cookie_csrf(url="https://legulegu.com/stockdata/sz50-ttm-lyr"),
430
+ )
419
431
  data_json = r.json()
420
432
  temp_df = pd.DataFrame(data_json["data"])
421
433
  temp_df["date"] = (
@@ -457,6 +469,9 @@ def stock_market_pb_lg(symbol: str = "上证") -> pd.DataFrame:
457
469
  :return: 指定市场的市净率数据
458
470
  :rtype: pandas.DataFrame
459
471
  """
472
+ js_functions = py_mini_racer.MiniRacer()
473
+ js_functions.eval(hash_code)
474
+ token = js_functions.call("hex", datetime.now().date().isoformat()).lower()
460
475
  url = "https://legulegu.com/api/stockdata/index-basic-pb"
461
476
  symbol_map = {"上证": "1", "深证": "2", "创业板": "4", "科创版": "7"}
462
477
  url_map = {
@@ -502,6 +517,9 @@ def stock_index_pb_lg(symbol: str = "上证50") -> pd.DataFrame:
502
517
  :return: 指定指数的市净率数据
503
518
  :rtype: pandas.DataFrame
504
519
  """
520
+ js_functions = py_mini_racer.MiniRacer()
521
+ js_functions.eval(hash_code)
522
+ token = js_functions.call("hex", datetime.now().date().isoformat()).lower()
505
523
  symbol_map = {
506
524
  "上证50": "000016.SH",
507
525
  "沪深300": "000300.SH",
@@ -518,7 +536,11 @@ def stock_index_pb_lg(symbol: str = "上证50") -> pd.DataFrame:
518
536
  }
519
537
  url = "https://legulegu.com/api/stockdata/index-basic-pb"
520
538
  params = {"token": token, "indexCode": symbol_map[symbol]}
521
- r = requests.get(url, params=params, **get_cookie_csrf(url="https://legulegu.com/stockdata/zz500-ttm-lyr"))
539
+ r = requests.get(
540
+ url,
541
+ params=params,
542
+ **get_cookie_csrf(url="https://legulegu.com/stockdata/zz500-ttm-lyr"),
543
+ )
522
544
  data_json = r.json()
523
545
  temp_df = pd.DataFrame(data_json["data"])
524
546
  temp_df["date"] = (
@@ -546,10 +568,19 @@ def stock_index_pb_lg(symbol: str = "上证50") -> pd.DataFrame:
546
568
 
547
569
 
548
570
  if __name__ == "__main__":
571
+ stock_market_pe_lg_df = stock_market_pe_lg(symbol="上证")
572
+ print(stock_market_pe_lg_df)
573
+
574
+ stock_market_pe_lg_df = stock_market_pe_lg(symbol="科创版")
575
+ print(stock_market_pe_lg_df)
576
+
549
577
  for item in {"上证", "深证", "创业板", "科创版"}:
550
578
  stock_market_pe_lg_df = stock_market_pe_lg(symbol=item)
551
579
  print(stock_market_pe_lg_df)
552
580
 
581
+ stock_index_pe_lg_df = stock_index_pe_lg(symbol="上证50")
582
+ print(stock_index_pe_lg_df)
583
+
553
584
  for item in [
554
585
  "上证50",
555
586
  "沪深300",
@@ -585,6 +616,5 @@ if __name__ == "__main__":
585
616
  "中证100",
586
617
  "中证800",
587
618
  ]:
588
- print(item)
589
619
  stock_index_pe_lg_df = stock_index_pb_lg(symbol=item)
590
620
  print(stock_index_pe_lg_df)
@@ -31,7 +31,6 @@ def stock_account_statistics_em() -> pd.DataFrame:
31
31
  "pageNo": "1",
32
32
  "pageNum": "1",
33
33
  "pageNumber": "1",
34
- "_": "1640749656405",
35
34
  }
36
35
  r = requests.get(url, params=params)
37
36
  data_json = r.json()
@@ -5,6 +5,7 @@ Date: 2023/4/11 20:40
5
5
  Desc: 全部A股-等权重市净率、中位数市净率
6
6
  https://www.legulegu.com/stockdata/all-pb
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
@@ -26,7 +27,7 @@ def stock_a_all_pb() -> pd.DataFrame:
26
27
  r = requests.get(
27
28
  url,
28
29
  params=params,
29
- **get_cookie_csrf(url="https://legulegu.com/stockdata/all-pb")
30
+ **get_cookie_csrf(url="https://legulegu.com/stockdata/all-pb"),
30
31
  )
31
32
  data_json = r.json()
32
33
  temp_df = pd.DataFrame(data_json["data"])