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
@@ -28,7 +28,8 @@ def stock_comment_em() -> pd.DataFrame:
28
28
  "pageSize": "500",
29
29
  "pageNumber": "1",
30
30
  "reportName": "RPT_DMSK_TS_STOCKNEW",
31
- "quoteColumns": "f2~01~SECURITY_CODE~CLOSE_PRICE,f8~01~SECURITY_CODE~TURNOVERRATE,f3~01~SECURITY_CODE~CHANGE_RATE,f9~01~SECURITY_CODE~PE_DYNAMIC",
31
+ "quoteColumns": "f2~01~SECURITY_CODE~CLOSE_PRICE,f8~01~SECURITY_CODE~TURNOVERRATE,"
32
+ "f3~01~SECURITY_CODE~CHANGE_RATE,f9~01~SECURITY_CODE~PE_DYNAMIC",
32
33
  "columns": "ALL",
33
34
  "filter": "",
34
35
  "token": "894050c76af8597a853f5b408b759f5d",
@@ -79,6 +80,7 @@ def stock_comment_em() -> pd.DataFrame:
79
80
  "目前排名",
80
81
  "关注指数",
81
82
  "-",
83
+ "-",
82
84
  ]
83
85
  big_df = big_df[
84
86
  [
@@ -131,17 +133,16 @@ def stock_comment_detail_zlkp_jgcyd_em(symbol: str = "600000") -> pd.DataFrame:
131
133
  "client": "WEB",
132
134
  "sortColumns": "TRADE_DATE",
133
135
  "sortTypes": "-1",
134
- "_": "1655387358195",
135
136
  }
136
137
  r = requests.get(url, params=params)
137
138
  data_json = r.json()
138
139
  temp_df = pd.DataFrame(data_json["result"]["data"])
139
140
  temp_df = temp_df[["TRADE_DATE", "ORG_PARTICIPATE"]]
140
- temp_df.columns = ["date", "value"]
141
- temp_df["date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
142
- temp_df.sort_values(["date"], inplace=True)
141
+ temp_df.columns = ["交易日", "机构参与度"]
142
+ temp_df["交易日"] = pd.to_datetime(temp_df["交易日"], errors="coerce").dt.date
143
+ temp_df.sort_values(["交易日"], inplace=True)
143
144
  temp_df.reset_index(inplace=True, drop=True)
144
- temp_df["value"] = pd.to_numeric(temp_df["value"], errors="coerce") * 100
145
+ temp_df["机构参与度"] = pd.to_numeric(temp_df["机构参与度"], errors="coerce") * 100
145
146
  return temp_df
146
147
 
147
148
 
@@ -154,36 +155,31 @@ def stock_comment_detail_zhpj_lspf_em(symbol: str = "600000") -> pd.DataFrame:
154
155
  :return: 综合评价-历史评分
155
156
  :rtype: pandas.DataFrame
156
157
  """
157
- url = f"https://data.eastmoney.com/stockcomment/api/{symbol}.json"
158
- try_count = 10
159
- data_json = None
160
- while try_count:
161
- try:
162
- r = requests.get(url)
163
- data_json = r.json()
164
- break
165
- except requests.exceptions.JSONDecodeError:
166
- try_count -= 1
167
- time.sleep(1)
168
- continue
169
- current_year = data_json["ApiResults"]["zhpj"]["ComprehensiveScoreRank1"][0][0][
170
- "TradeDate"
171
- ].split("/")[0]
172
-
173
- temp_df = pd.DataFrame(
174
- [
175
- data_json["ApiResults"]["zhpj"]["HistoryScore"]["XData"],
176
- data_json["ApiResults"]["zhpj"]["HistoryScore"]["Ydata"]["Score"],
177
- data_json["ApiResults"]["zhpj"]["HistoryScore"]["Ydata"]["Price"],
178
- ]
179
- ).T
180
- temp_df.columns = ["日期", "评分", "股价"]
181
- temp_df["日期"] = current_year + "-" + temp_df["日期"]
182
- temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
183
- temp_df.sort_values(by=["日期"], inplace=True)
158
+ url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
159
+ params = {
160
+ "filter": f'(SECURITY_CODE="{symbol}")',
161
+ "columns": "ALL",
162
+ "source": "WEB",
163
+ "client": "WEB",
164
+ "reportName": "RPT_STOCK_HISTORYMARK",
165
+ "sortColumns": "DIAGNOSE_DATE",
166
+ "sortTypes": "1",
167
+ }
168
+ r = requests.get(url=url, params=params)
169
+ data_json = r.json()
170
+ temp_df = pd.DataFrame(data_json["result"]["data"])
171
+ temp_df.rename(
172
+ columns={
173
+ "TOTAL_SCORE": "评分",
174
+ "DIAGNOSE_DATE": "交易日",
175
+ },
176
+ inplace=True,
177
+ )
178
+ temp_df = temp_df[["交易日", "评分"]]
179
+ temp_df["交易日"] = pd.to_datetime(temp_df["交易日"], errors="coerce").dt.date
180
+ temp_df.sort_values(by=["交易日"], inplace=True)
184
181
  temp_df.reset_index(inplace=True, drop=True)
185
182
  temp_df["评分"] = pd.to_numeric(temp_df["评分"], errors="coerce")
186
- temp_df["股价"] = pd.to_numeric(temp_df["股价"], errors="coerce")
187
183
  return temp_df
188
184
 
189
185
 
@@ -196,36 +192,32 @@ def stock_comment_detail_scrd_focus_em(symbol: str = "600000") -> pd.DataFrame:
196
192
  :return: 市场热度-用户关注指数
197
193
  :rtype: pandas.DataFrame
198
194
  """
199
- url = f"https://data.eastmoney.com/stockcomment/api/{symbol}.json"
200
- try_count = 10
201
- data_json = None
202
- while try_count:
203
- try:
204
- r = requests.get(url)
205
- data_json = r.json()
206
- break
207
- except requests.exceptions.JSONDecodeError:
208
- try_count -= 1
209
- time.sleep(1)
210
- continue
211
-
212
- current_year = data_json["ApiResults"]["scrd"]["focus"][0][0]["UpdateDate"].split(
213
- "/"
214
- )[0]
215
- temp_df = pd.DataFrame(
216
- [
217
- data_json["ApiResults"]["scrd"]["focus"][1]["XData"],
218
- data_json["ApiResults"]["scrd"]["focus"][1]["Ydata"]["StockFocus"],
219
- data_json["ApiResults"]["scrd"]["focus"][1]["Ydata"]["ClosePrice"],
220
- ]
221
- ).T
222
- temp_df.columns = ["日期", "用户关注指数", "收盘价"]
223
- temp_df["日期"] = current_year + "-" + temp_df["日期"]
224
- temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
225
- temp_df.sort_values(by=["日期"], inplace=True)
195
+ url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
196
+ params = {
197
+ "filter": f'(SECURITY_CODE="{symbol}")',
198
+ "columns": "ALL",
199
+ "source": "WEB",
200
+ "client": "WEB",
201
+ "reportName": "RPT_STOCK_MARKETFOCUS",
202
+ "sortColumns": "TRADE_DATE",
203
+ "sortTypes": "-1",
204
+ "pageSize": "30",
205
+ }
206
+ r = requests.get(url=url, params=params)
207
+ data_json = r.json()
208
+ temp_df = pd.DataFrame(data_json["result"]["data"])
209
+ temp_df.rename(
210
+ columns={
211
+ "MARKET_FOCUS": "用户关注指数",
212
+ "TRADE_DATE": "交易日",
213
+ },
214
+ inplace=True,
215
+ )
216
+ temp_df = temp_df[["交易日", "用户关注指数"]]
217
+ temp_df["交易日"] = pd.to_datetime(temp_df["交易日"], errors="coerce").dt.date
218
+ temp_df.sort_values(by=["交易日"], inplace=True)
226
219
  temp_df.reset_index(inplace=True, drop=True)
227
220
  temp_df["用户关注指数"] = pd.to_numeric(temp_df["用户关注指数"], errors="coerce")
228
- temp_df["收盘价"] = pd.to_numeric(temp_df["收盘价"], errors="coerce")
229
221
  return temp_df
230
222
 
231
223
 
@@ -289,86 +281,36 @@ def stock_comment_detail_scrd_desire_daily_em(
289
281
  :return: 市场热度-日度市场参与意愿
290
282
  :rtype: pandas.DataFrame
291
283
  """
292
- url = f"https://data.eastmoney.com/stockcomment/api/{symbol}.json"
293
- try_count = 10
294
- data_json = None
295
- while try_count:
296
- try:
297
- r = requests.get(url)
298
- data_json = r.json()
299
- break
300
- except requests.exceptions.JSONDecodeError:
301
- try_count -= 1
302
- time.sleep(1)
303
- continue
304
-
305
- date_str = (
306
- data_json["ApiResults"]["scrd"]["desire"][0][0]["UpdateTime"]
307
- .split(" ")[0]
308
- .replace("/", "-")
284
+ url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
285
+ params = {
286
+ "filter": f'(SECURITY_CODE="{symbol}")',
287
+ "columns": "ALL",
288
+ "source": "WEB",
289
+ "client": "WEB",
290
+ "reportName": "RPT_STOCK_PARTICIPATION",
291
+ "sortColumns": "TRADE_DATE",
292
+ "sortTypes": "-1",
293
+ "pageSize": "30",
294
+ }
295
+ r = requests.get(url=url, params=params)
296
+ data_json = r.json()
297
+ temp_df = pd.DataFrame(data_json["result"]["data"])
298
+ temp_df.rename(
299
+ columns={
300
+ "PARTICIPATION_WISH_5DAYSCHANGE": "5日平均参与意愿变化",
301
+ "PARTICIPATION_WISH_CHANGE": "当日意愿上升",
302
+ "TRADE_DATE": "交易日",
303
+ },
304
+ inplace=True,
309
305
  )
310
-
311
- temp_df = pd.DataFrame(
312
- [
313
- data_json["ApiResults"]["scrd"]["desire"][2]["XData"],
314
- data_json["ApiResults"]["scrd"]["desire"][2]["Ydata"]["PeopleNumChg"],
315
- data_json["ApiResults"]["scrd"]["desire"][2]["Ydata"][
316
- "TotalPeopleNumChange"
317
- ],
318
- ]
319
- ).T
320
- temp_df.columns = ["日期", "当日意愿下降", "五日累计意愿"]
321
- temp_df["日期"] = date_str[:4] + "-" + temp_df["日期"]
322
- temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
323
-
324
- temp_df.sort_values(by=["日期"], inplace=True)
306
+ temp_df = temp_df[["交易日", "当日意愿上升", "5日平均参与意愿变化"]]
307
+ temp_df["交易日"] = pd.to_datetime(temp_df["交易日"], errors="coerce").dt.date
308
+ temp_df.sort_values(by=["交易日"], inplace=True)
325
309
  temp_df.reset_index(inplace=True, drop=True)
326
- temp_df["当日意愿下降"] = pd.to_numeric(temp_df["当日意愿下降"], errors="coerce")
327
- temp_df["五日累计意愿"] = pd.to_numeric(temp_df["五日累计意愿"], errors="coerce")
328
- return temp_df
329
-
330
-
331
- def stock_comment_detail_scrd_cost_em(symbol: str = "600000") -> pd.DataFrame:
332
- """
333
- 东方财富网-数据中心-特色数据-千股千评-市场热度-市场成本
334
- https://data.eastmoney.com/stockcomment/stock/600000.html
335
- :param symbol: 股票代码
336
- :type symbol: str
337
- :return: 市场热度-市场成本
338
- :rtype: pandas.DataFrame
339
- """
340
- url = f"https://data.eastmoney.com/stockcomment/api/{symbol}.json"
341
- try_count = 10
342
- data_json = None
343
- while try_count:
344
- try:
345
- r = requests.get(url)
346
- data_json = r.json()
347
- break
348
- except requests.exceptions.JSONDecodeError:
349
- try_count -= 1
350
- time.sleep(1)
351
- continue
352
- date_str = (
353
- data_json["ApiResults"]["scrd"]["cost"][0][0]["UpdateDate"]
354
- .split(" ")[0]
355
- .replace("/", "-")
310
+ temp_df["当日意愿上升"] = pd.to_numeric(temp_df["当日意愿上升"], errors="coerce")
311
+ temp_df["5日平均参与意愿变化"] = pd.to_numeric(
312
+ temp_df["5日平均参与意愿变化"], errors="coerce"
356
313
  )
357
-
358
- temp_df = pd.DataFrame(
359
- [
360
- data_json["ApiResults"]["scrd"]["cost"][1]["XData"],
361
- data_json["ApiResults"]["scrd"]["cost"][1]["Ydata"]["AvgBuyPrice"],
362
- data_json["ApiResults"]["scrd"]["cost"][1]["Ydata"]["FiveDayAvgBuyPrice"],
363
- ]
364
- ).T
365
- temp_df.columns = ["日期", "市场成本", "5日市场成本"]
366
- temp_df["日期"] = date_str[:4] + "-" + temp_df["日期"]
367
- temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
368
- temp_df.sort_values(by=["日期"], inplace=True)
369
- temp_df.reset_index(inplace=True, drop=True)
370
- temp_df["市场成本"] = pd.to_numeric(temp_df["市场成本"], errors="coerce")
371
- temp_df["5日市场成本"] = pd.to_numeric(temp_df["5日市场成本"], errors="coerce")
372
314
  return temp_df
373
315
 
374
316
 
@@ -400,8 +342,3 @@ if __name__ == "__main__":
400
342
  stock_comment_detail_scrd_desire_daily_em(symbol="600000")
401
343
  )
402
344
  print(stock_comment_detail_scrd_desire_daily_em_df)
403
-
404
- stock_comment_detail_scrd_cost_em_df = stock_comment_detail_scrd_cost_em(
405
- symbol="600000"
406
- )
407
- print(stock_comment_detail_scrd_cost_em_df)
@@ -5,6 +5,7 @@ Date: 2023/4/7 15:05
5
5
  Desc: 乐咕乐股-大盘拥挤度
6
6
  https://legulegu.com/stockdata/ashares-congestion
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
@@ -24,7 +25,7 @@ def stock_a_congestion_lg() -> pd.DataFrame:
24
25
  r = requests.get(
25
26
  url,
26
27
  params=params,
27
- **get_cookie_csrf(url="https://legulegu.com/stockdata/ashares-congestion")
28
+ **get_cookie_csrf(url="https://legulegu.com/stockdata/ashares-congestion"),
28
29
  )
29
30
  data_json = r.json()
30
31
  temp_df = pd.DataFrame(data_json["items"])
@@ -1,19 +1,16 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/4/4 19:00
4
+ Date: 2025/11/4 18:00
5
5
  Desc: 东方财富网-概念板-行情中心-日K-筹码分布
6
6
  https://quote.eastmoney.com/concept/sz000001.html
7
7
  """
8
8
 
9
- import json
10
9
  from datetime import datetime
11
10
 
12
11
  import pandas as pd
13
- import requests
14
12
  import py_mini_racer
15
-
16
- from akshare.stock_feature.stock_hist_em import code_id_map_em
13
+ import requests
17
14
 
18
15
 
19
16
  def stock_cyq_em(symbol: str = "000001", adjust: str = "") -> pd.DataFrame:
@@ -222,22 +219,19 @@ def stock_cyq_em(symbol: str = "000001", adjust: str = "") -> pd.DataFrame:
222
219
  js_code = py_mini_racer.MiniRacer()
223
220
  js_code.eval(html_str)
224
221
  adjust_dict = {"qfq": "1", "hfq": "2", "": "0"}
225
- code_id_dict = code_id_map_em()
222
+ market_code = 1 if symbol.startswith("6") else 0
226
223
  url = "https://push2his.eastmoney.com/api/qt/stock/kline/get"
227
224
  params = {
228
- "secid": f"{code_id_dict[symbol]}.{symbol}",
229
- "ut": "fa5fd1943c7b386f172d6893dbfba10b",
225
+ "secid": f"{market_code}.{symbol}",
230
226
  "fields1": "f1,f2,f3,f4,f5,f6",
231
227
  "fields2": "f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",
232
228
  "klt": "101",
233
229
  "fqt": adjust_dict[adjust],
234
230
  "end": datetime.now().date().strftime("%Y%m%d"),
235
231
  "lmt": "210",
236
- "cb": "quote_jp1",
237
232
  }
238
233
  r = requests.get(url, params=params)
239
- data_json = r.text.strip("quote_jp1(").strip(");")
240
- data_json = json.loads(data_json)
234
+ data_json = r.json()
241
235
  temp_df = pd.DataFrame([item.split(",") for item in data_json["data"]["klines"]])
242
236
  temp_df.columns = [
243
237
  "date",
@@ -119,8 +119,8 @@ def stock_zh_a_disclosure_report_cninfo(
119
119
  "预披露": "pre_disclosure",
120
120
  }
121
121
  stock_id_map = ""
122
- if market == "沪深京":
123
- stock_id_map = __get_stock_json(symbol)
122
+ if market == "沪深京" or "基金":
123
+ stock_id_map = __get_stock_json(market)
124
124
  category_dict = __get_category_dict()
125
125
  url = "http://www.cninfo.com.cn/new/hisAnnouncement/query"
126
126
  stock_item = "" if symbol == "" else f"{symbol},{stock_id_map[symbol]}"
@@ -283,12 +283,12 @@ def stock_zh_a_disclosure_relation_cninfo(
283
283
 
284
284
  if __name__ == "__main__":
285
285
  stock_zh_a_disclosure_report_cninfo_df = stock_zh_a_disclosure_report_cninfo(
286
- symbol="",
287
- market="沪深京",
286
+ symbol="164701",
287
+ market="基金",
288
288
  keyword="大模型",
289
289
  category="",
290
- start_date="20231003",
291
- end_date="20240430",
290
+ start_date="20240422",
291
+ end_date="20250422",
292
292
  )
293
293
  print(stock_zh_a_disclosure_report_cninfo_df)
294
294