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
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/3/25 12:30
4
+ Date: 2025/3/10 19:00
5
5
  Desc: 东方财富网-数据中心-资金流向
6
6
  https://data.eastmoney.com/zjlx/detail.html
7
7
  """
8
8
 
9
- import json
9
+ import math
10
10
  import time
11
11
  from functools import lru_cache
12
12
 
13
13
  import pandas as pd
14
14
  import requests
15
15
 
16
+ from akshare.utils.func import fetch_paginated_data
17
+ from akshare.utils.tqdm import get_tqdm
18
+
16
19
 
17
20
  def stock_individual_fund_flow(
18
21
  stock: str = "600094", market: str = "sh"
@@ -43,8 +46,8 @@ def stock_individual_fund_flow(
43
46
  "_": int(time.time() * 1000),
44
47
  }
45
48
  r = requests.get(url, params=params, headers=headers)
46
- json_data = r.json()
47
- content_list = json_data["data"]["klines"]
49
+ data_json = r.json()
50
+ content_list = data_json["data"]["klines"]
48
51
  temp_df = pd.DataFrame([item.split(",") for item in content_list])
49
52
  temp_df.columns = [
50
53
  "日期",
@@ -147,7 +150,7 @@ def stock_individual_fund_flow_rank(indicator: str = "5日") -> pd.DataFrame:
147
150
  params = {
148
151
  "fid": indicator_map[indicator][0],
149
152
  "po": "1",
150
- "pz": "10000",
153
+ "pz": "100",
151
154
  "pn": "1",
152
155
  "np": "1",
153
156
  "fltt": "2",
@@ -158,7 +161,20 @@ def stock_individual_fund_flow_rank(indicator: str = "5日") -> pd.DataFrame:
158
161
  }
159
162
  r = requests.get(url, params=params)
160
163
  data_json = r.json()
161
- temp_df = pd.DataFrame(data_json["data"]["diff"])
164
+ total_page = math.ceil(data_json["data"]["total"] / 100)
165
+ temp_list = []
166
+ tqdm = get_tqdm()
167
+ for page in tqdm(range(1, total_page + 1), leave=False):
168
+ params.update(
169
+ {
170
+ "pn": page,
171
+ }
172
+ )
173
+ r = requests.get(url, params=params, timeout=15)
174
+ data_json = r.json()
175
+ inner_temp_df = pd.DataFrame(data_json["data"]["diff"])
176
+ temp_list.append(inner_temp_df)
177
+ temp_df = pd.concat(temp_list, ignore_index=True)
162
178
  temp_df.reset_index(inplace=True)
163
179
  temp_df["index"] = range(1, len(temp_df) + 1)
164
180
  if indicator == "今日":
@@ -348,13 +364,11 @@ def stock_market_fund_flow() -> pd.DataFrame:
348
364
  "fields1": "f1,f2,f3,f7",
349
365
  "fields2": "f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f62,f63,f64,f65",
350
366
  "ut": "b2884a393a59ad64002292a3e90d46a5",
351
- "cb": "jQuery183003743205523325188_1589197499471",
352
367
  "_": int(time.time() * 1000),
353
368
  }
354
369
  r = requests.get(url, params=params, headers=headers)
355
- text_data = r.text
356
- json_data = json.loads(text_data[text_data.find("{"): -2])
357
- content_list = json_data["data"]["klines"]
370
+ data_json = r.json()
371
+ content_list = data_json["data"]["klines"]
358
372
  temp_df = pd.DataFrame([item.split(",") for item in content_list])
359
373
  temp_df.columns = [
360
374
  "日期",
@@ -468,7 +482,7 @@ def stock_sector_fund_flow_rank(
468
482
  }
469
483
  params = {
470
484
  "pn": "1",
471
- "pz": "5000",
485
+ "pz": "100",
472
486
  "po": "1",
473
487
  "np": "1",
474
488
  "ut": "b2884a393a59ad64002292a3e90d46a5",
@@ -479,13 +493,25 @@ def stock_sector_fund_flow_rank(
479
493
  "stat": indicator_map[indicator][1],
480
494
  "fields": indicator_map[indicator][2],
481
495
  "rt": "52975239",
482
- "cb": "jQuery18308357908311220152_1589256588824",
483
496
  "_": int(time.time() * 1000),
484
497
  }
485
498
  r = requests.get(url, params=params, headers=headers)
486
- text_data = r.text
487
- json_data = json.loads(text_data[text_data.find("{"): -2])
488
- temp_df = pd.DataFrame(json_data["data"]["diff"])
499
+ data_json = r.json()
500
+ total_page = math.ceil(data_json["data"]["total"] / 100)
501
+ temp_list = []
502
+ tqdm = get_tqdm()
503
+ for page in tqdm(range(1, total_page + 1), leave=False):
504
+ params.update(
505
+ {
506
+ "pn": page,
507
+ }
508
+ )
509
+ r = requests.get(url, params=params, timeout=15)
510
+ data_json = r.json()
511
+ inner_temp_df = pd.DataFrame(data_json["data"]["diff"])
512
+ temp_list.append(inner_temp_df)
513
+ temp_df = pd.concat(temp_list, ignore_index=True)
514
+
489
515
  if indicator == "今日":
490
516
  temp_df.columns = [
491
517
  "-",
@@ -630,28 +656,19 @@ def _get_stock_sector_fund_flow_summary_code() -> dict:
630
656
  :rtype: dict
631
657
  """
632
658
  url = "https://push2.eastmoney.com/api/qt/clist/get"
633
- headers = {
634
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
635
- "(KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36",
636
- }
637
659
  params = {
638
- "pn": "1",
639
- "pz": "5000",
660
+ "fid": "f62",
640
661
  "po": "1",
662
+ "pz": "100",
663
+ "pn": "1",
641
664
  "np": "1",
642
- "ut": "b2884a393a59ad64002292a3e90d46a5",
643
665
  "fltt": "2",
644
666
  "invt": "2",
645
- "fid0": "f62",
667
+ "ut": "8dec03ba335b81bf4ebdf7b29ec27d15",
646
668
  "fs": "m:90 t:2",
647
- "stat": "1",
648
- "fields": "f12,f14,f2,f3,f62,f184,f66,f69,f72,f75,f78,f81,f84,f87,f204,f205,f124",
649
- "rt": "52975239",
650
- "_": int(time.time() * 1000),
669
+ "fields": "f12,f14,f2,f3,f62,f184,f66,f69,f72,f75,f78,f81,f84,f87,f204,f205,f124,f1,f13",
651
670
  }
652
- r = requests.get(url, params=params, headers=headers)
653
- data_json = r.json()
654
- temp_df = pd.DataFrame(data_json["data"]["diff"])
671
+ temp_df = fetch_paginated_data(url, params)
655
672
  name_code_map = dict(zip(temp_df["f14"], temp_df["f12"]))
656
673
  return name_code_map
657
674
 
@@ -675,9 +692,9 @@ def stock_sector_fund_flow_summary(
675
692
  params = {
676
693
  "fid": "f62",
677
694
  "po": "1",
678
- "pz": "50",
695
+ "pz": "5000",
679
696
  "pn": "1",
680
- "np": "1",
697
+ "np": "2",
681
698
  "fltt": "2",
682
699
  "invt": "2",
683
700
  "fs": f"b:{code_name_map[symbol]}",
@@ -685,9 +702,9 @@ def stock_sector_fund_flow_summary(
685
702
  }
686
703
  r = requests.get(url, params=params)
687
704
  data_json = r.json()
688
- temp_df = pd.DataFrame(data_json["data"]["diff"])
705
+ temp_df = pd.DataFrame(data_json["data"]["diff"]).T
689
706
  temp_df.reset_index(inplace=True)
690
- temp_df["index"] = temp_df["index"] + 1
707
+ temp_df["index"] = temp_df["index"].astype(int) + 1
691
708
  temp_df.rename(
692
709
  columns={
693
710
  "index": "序号",
@@ -764,9 +781,9 @@ def stock_sector_fund_flow_summary(
764
781
  params = {
765
782
  "fid": "f164",
766
783
  "po": "1",
767
- "pz": "50",
784
+ "pz": "50000",
768
785
  "pn": "1",
769
- "np": "1",
786
+ "np": "2",
770
787
  "fltt": "2",
771
788
  "invt": "2",
772
789
  "fs": f"b:{code_name_map[symbol]}",
@@ -774,9 +791,9 @@ def stock_sector_fund_flow_summary(
774
791
  }
775
792
  r = requests.get(url, params=params)
776
793
  data_json = r.json()
777
- temp_df = pd.DataFrame(data_json["data"]["diff"])
794
+ temp_df = pd.DataFrame(data_json["data"]["diff"]).T
778
795
  temp_df.reset_index(inplace=True)
779
- temp_df["index"] = temp_df["index"] + 1
796
+ temp_df["index"] = temp_df["index"].astype(int) + 1
780
797
  temp_df.rename(
781
798
  columns={
782
799
  "index": "序号",
@@ -853,9 +870,9 @@ def stock_sector_fund_flow_summary(
853
870
  params = {
854
871
  "fid": "f174",
855
872
  "po": "1",
856
- "pz": "50",
873
+ "pz": "50000",
857
874
  "pn": "1",
858
- "np": "1",
875
+ "np": "2",
859
876
  "fltt": "2",
860
877
  "invt": "2",
861
878
  "fs": f"b:{code_name_map[symbol]}",
@@ -863,9 +880,9 @@ def stock_sector_fund_flow_summary(
863
880
  }
864
881
  r = requests.get(url, params=params)
865
882
  data_json = r.json()
866
- temp_df = pd.DataFrame(data_json["data"]["diff"])
883
+ temp_df = pd.DataFrame(data_json["data"]["diff"]).T
867
884
  temp_df.reset_index(inplace=True)
868
- temp_df["index"] = temp_df["index"] + 1
885
+ temp_df["index"] = temp_df["index"].astype(int) + 1
869
886
  temp_df.rename(
870
887
  columns={
871
888
  "index": "序号",
@@ -938,9 +955,11 @@ def stock_sector_fund_flow_summary(
938
955
  temp_df["10日小单净流入-净占比"], errors="coerce"
939
956
  )
940
957
  return temp_df
958
+ else:
959
+ return pd.DataFrame()
941
960
 
942
961
 
943
- def stock_sector_fund_flow_hist(symbol: str = "电源设备") -> pd.DataFrame:
962
+ def stock_sector_fund_flow_hist(symbol: str = "汽车服务") -> pd.DataFrame:
944
963
  """
945
964
  东方财富网-数据中心-资金流向-行业资金流-行业历史资金流
946
965
  https://data.eastmoney.com/bkzj/BK1034.html
@@ -957,7 +976,6 @@ def stock_sector_fund_flow_hist(symbol: str = "电源设备") -> pd.DataFrame:
957
976
  "fields1": "f1,f2,f3,f7",
958
977
  "fields2": "f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f62,f63,f64,f65",
959
978
  "secid": f"90.{code_name_map[symbol]}",
960
- "_": "1678954135116",
961
979
  }
962
980
  r = requests.get(url, params=params)
963
981
  data_json = r.json()
@@ -1024,7 +1042,7 @@ def stock_sector_fund_flow_hist(symbol: str = "电源设备") -> pd.DataFrame:
1024
1042
  temp_df["小单净流入-净占比"] = pd.to_numeric(
1025
1043
  temp_df["小单净流入-净占比"], errors="coerce"
1026
1044
  )
1027
- temp_df["日期"] = pd.to_datetime(temp_df["日期"]).dt.date
1045
+ temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
1028
1046
  return temp_df
1029
1047
 
1030
1048
 
@@ -1037,29 +1055,23 @@ def _get_stock_concept_fund_flow_summary_code() -> dict:
1037
1055
  :rtype: dict
1038
1056
  """
1039
1057
  url = "https://push2.eastmoney.com/api/qt/clist/get"
1040
- headers = {
1041
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
1042
- "(KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36",
1043
- }
1044
1058
  params = {
1045
1059
  "pn": "1",
1046
- "pz": "5000",
1060
+ "pz": "100",
1047
1061
  "po": "1",
1048
1062
  "np": "1",
1049
- "fields": "f12,f13,f14,f62",
1063
+ "fields": "f3,f12,f13,f14,f62",
1050
1064
  "fid": "f62",
1051
1065
  "fs": "m:90+t:3",
1052
1066
  "ut": "b2884a393a59ad64002292a3e90d46a5",
1053
1067
  "_": int(time.time() * 1000),
1054
1068
  }
1055
- r = requests.get(url, params=params, headers=headers)
1056
- data_json = r.json()
1057
- temp_df = pd.DataFrame(data_json["data"]["diff"])
1069
+ temp_df = fetch_paginated_data(url, params)
1058
1070
  name_code_map = dict(zip(temp_df["f14"], temp_df["f12"]))
1059
1071
  return name_code_map
1060
1072
 
1061
1073
 
1062
- def stock_concept_fund_flow_hist(symbol: str = "锂电池") -> pd.DataFrame:
1074
+ def stock_concept_fund_flow_hist(symbol: str = "数据要素") -> pd.DataFrame:
1063
1075
  """
1064
1076
  东方财富网-数据中心-资金流向-概念资金流-概念历史资金流
1065
1077
  https://data.eastmoney.com/bkzj/BK0574.html
@@ -1076,7 +1088,6 @@ def stock_concept_fund_flow_hist(symbol: str = "锂电池") -> pd.DataFrame:
1076
1088
  "fields1": "f1,f2,f3,f7",
1077
1089
  "fields2": "f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f62,f63,f64,f65",
1078
1090
  "secid": f"90.{code_name_map[symbol]}",
1079
- "_": "1678954135116",
1080
1091
  }
1081
1092
  r = requests.get(url, params=params)
1082
1093
  data_json = r.json()
@@ -1170,7 +1181,7 @@ def stock_main_fund_flow(symbol: str = "全部股票") -> pd.DataFrame:
1170
1181
  params = {
1171
1182
  "fid": "f184",
1172
1183
  "po": "1",
1173
- "pz": "50000",
1184
+ "pz": "100",
1174
1185
  "pn": "1",
1175
1186
  "np": "1",
1176
1187
  "fltt": "2",
@@ -1179,10 +1190,7 @@ def stock_main_fund_flow(symbol: str = "全部股票") -> pd.DataFrame:
1179
1190
  "ut": "b2884a393a59ad64002292a3e90d46a5",
1180
1191
  "fs": symbol_map[symbol],
1181
1192
  }
1182
- r = requests.get(url, params=params, timeout=15)
1183
- data_json = r.json()
1184
- temp_df = pd.DataFrame(data_json["data"]["diff"])
1185
- temp_df.reset_index(inplace=True)
1193
+ temp_df = fetch_paginated_data(url, params)
1186
1194
  temp_df.rename(
1187
1195
  columns={
1188
1196
  "index": "序号",
@@ -1296,14 +1304,14 @@ if __name__ == "__main__":
1296
1304
  print(stock_sector_fund_flow_rank_df)
1297
1305
 
1298
1306
  stock_sector_fund_flow_summary_df = stock_sector_fund_flow_summary(
1299
- symbol="电源设备", indicator="今日"
1307
+ symbol="文化传媒", indicator="今日"
1300
1308
  )
1301
1309
  print(stock_sector_fund_flow_summary_df)
1302
1310
 
1303
- stock_sector_fund_flow_hist_df = stock_sector_fund_flow_hist(symbol="电源设备")
1311
+ stock_sector_fund_flow_hist_df = stock_sector_fund_flow_hist(symbol="汽车服务")
1304
1312
  print(stock_sector_fund_flow_hist_df)
1305
1313
 
1306
- stock_concept_fund_flow_hist_df = stock_concept_fund_flow_hist(symbol="锂电池")
1314
+ stock_concept_fund_flow_hist_df = stock_concept_fund_flow_hist(symbol="半导体概念")
1307
1315
  print(stock_concept_fund_flow_hist_df)
1308
1316
 
1309
1317
  stock_main_fund_flow_df = stock_main_fund_flow(symbol="全部股票")
@@ -5,11 +5,10 @@ Date: 2021/12/19 13:09
5
5
  Desc: 东方财富网-数据中心-主力数据-基金持仓
6
6
  http://data.eastmoney.com/zlsj/2020-06-30-1-2.html
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
11
- from akshare.utils import demjson
12
-
13
12
 
14
13
  def stock_report_fund_hold(
15
14
  symbol: str = "基金持仓", date: str = "20210331"
@@ -5,6 +5,7 @@ Date: 2023/8/8 21:30
5
5
  Desc: 东方财富网-数据中心-股市日历
6
6
  https://data.eastmoney.com/gsrl/gsdt.html
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
@@ -0,0 +1,175 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding:utf-8 -*-
3
+ """
4
+ Date: 2025/9/24 15:00
5
+ Desc: 东方财富-港股-行业对比
6
+ https://emweb.securities.eastmoney.com/PC_HKF10/pages/home/index.html?code=03900&type=web&color=w#/IndustryComparison
7
+ """
8
+
9
+ import pandas as pd
10
+ import requests
11
+
12
+
13
+ def stock_hk_growth_comparison_em(symbol: str = "03900") -> pd.DataFrame:
14
+ """
15
+ 东方财富-港股-行业对比-成长性对比
16
+ https://emweb.securities.eastmoney.com/PC_HKF10/pages/home/index.html?code=03900&type=web&color=w#/IndustryComparison
17
+ :param symbol: 股票代码
18
+ :type symbol: str
19
+ :return: 成长性对比
20
+ :rtype: pandas.DataFrame
21
+ """
22
+ url = 'https://datacenter.eastmoney.com/securities/api/data/v1/get'
23
+ params = {
24
+ 'reportName': 'RPT_PCF10_INDUSTRY_HKGROWTH',
25
+ 'columns': 'SECUCODE,SECURITY_CODE,ORG_CODE,REPORT_DATE,TYPE_ID,TYPE_TYPE,'
26
+ 'TYPE_NAME,TYPE_NAME_EN,CORRE_SECURITY_CODE,CORRE_SECUCODE,'
27
+ 'CORRE_SECURITY_NAME,EPS_YOY,OPERATE_INCOME_YOY,OPERATE_PROFIT_YOY,'
28
+ 'TOTAL_ASSET_YOY,EPS_YOY_RANK,OPINCOME_YOY_RANK,OPROFIT_YOY_RANK,TOASSET_YOY_RANK',
29
+ 'quoteColumns': '',
30
+ 'filter': f'(SECUCODE="{symbol}.HK")(CORRE_SECUCODE="{symbol}.HK")',
31
+ 'pageNumber': '1',
32
+ 'pageSize': '',
33
+ 'sortTypes': '',
34
+ 'sortColumns': '',
35
+ 'source': 'F10',
36
+ 'client': 'PC',
37
+ 'v': '03313416193688571'
38
+ }
39
+ r = requests.get(url, params=params)
40
+ data_json = r.json()
41
+ field_mapping = {
42
+ 'CORRE_SECURITY_CODE': '代码',
43
+ 'CORRE_SECURITY_NAME': '简称',
44
+ 'EPS_YOY': '基本每股收益同比增长率',
45
+ 'EPS_YOY_RANK': '基本每股收益同比增长率排名',
46
+ 'OPERATE_INCOME_YOY': '营业收入同比增长率',
47
+ 'OPINCOME_YOY_RANK': '营业收入同比增长率排名',
48
+ 'OPERATE_PROFIT_YOY': '营业利润率同比增长率',
49
+ 'OPROFIT_YOY_RANK': '营业利润率同比增长率排名',
50
+ 'TOTAL_ASSET_YOY': '基本每股收总资产同比增长率益同比增长率',
51
+ 'TOASSET_YOY_RANK': '总资产同比增长率排名',
52
+ }
53
+ temp_df = pd.DataFrame(columns=field_mapping.values())
54
+ if data_json['result'] is not None:
55
+ temp_df = pd.DataFrame(data_json['result']['data'])
56
+ temp_df.rename(columns=field_mapping, inplace=True)
57
+ temp_df = temp_df[field_mapping.values()]
58
+ return temp_df
59
+
60
+
61
+ def stock_hk_valuation_comparison_em(symbol: str = "03900") -> pd.DataFrame:
62
+ """
63
+ 东方财富-港股-行业对比-估值对比
64
+ https://emweb.securities.eastmoney.com/PC_HKF10/pages/home/index.html?code=03900&type=web&color=w#/IndustryComparison
65
+ :param symbol: 股票代码
66
+ :type symbol: str
67
+ :return: 估值对比
68
+ :rtype: pandas.DataFrame
69
+ """
70
+ url = 'https://datacenter.eastmoney.com/securities/api/data/v1/get'
71
+ params = {
72
+ 'reportName': 'RPT_PCF10_INDUSTRY_HKCVALUE',
73
+ 'columns': 'SECUCODE,SECURITY_CODE,ORG_CODE,REPORT_DATE,TYPE_ID,'
74
+ 'TYPE_TYPE,TYPE_NAME,TYPE_NAME_EN,CORRE_SECURITY_CODE,'
75
+ 'CORRE_SECUCODE,CORRE_SECURITY_NAME,PE_TTM,PE_LYR,PB_MQR,'
76
+ 'PB_LYR,PS_TTM,PS_LYR,PCE_TTM,PCE_LYR,PE_TTM_RANK,PE_LYR_RANK,'
77
+ 'PB_MQR_RANK,PB_LYR_RANK,PS_TTM_RANK,PS_LYR_RANK,PCE_TTM_RANK,PCE_LYR_RANK',
78
+ 'quoteColumns': '',
79
+ 'filter': f'(SECUCODE="{symbol}.HK")(CORRE_SECUCODE="{symbol}.HK")',
80
+ 'pageNumber': '1',
81
+ 'pageSize': '',
82
+ 'sortTypes': '',
83
+ 'sortColumns': '',
84
+ 'source': 'F10',
85
+ 'client': 'PC',
86
+ 'v': '03445297742754925'
87
+ }
88
+ r = requests.get(url, params=params)
89
+ data_json = r.json()
90
+ field_mapping = {
91
+ 'CORRE_SECURITY_CODE': '代码',
92
+ 'CORRE_SECURITY_NAME': '简称',
93
+ 'PE_TTM': '市盈率-TTM',
94
+ 'PE_TTM_RANK': '市盈率-TTM排名',
95
+ 'PE_LYR': '市盈率-LYR',
96
+ 'PE_LYR_RANK': '市盈率-LYR排名',
97
+ 'PB_MQR': '市净率-MRQ',
98
+ 'PB_MQR_RANK': '市净率-MRQ排名',
99
+ 'PB_LYR': '市净率-LYR',
100
+ 'PB_LYR_RANK': '市净率-LYR排名',
101
+ 'PS_TTM': '市销率-TTM',
102
+ 'PS_TTM_RANK': '市销率-TTM排名',
103
+ 'PS_LYR': '市销率-LYR',
104
+ 'PS_LYR_RANK': '市销率-LYR排名',
105
+ 'PCE_TTM': '市现率-TTM',
106
+ 'PCE_TTM_RANK': '市现率-TTM排名',
107
+ 'PCE_LYR': '市现率-LYR',
108
+ 'PCE_LYR_RANK': '市现率-LYR排名',
109
+ }
110
+ temp_df = pd.DataFrame(columns=field_mapping.values())
111
+ if data_json['result'] is not None:
112
+ temp_df = pd.DataFrame(data_json['result']['data'])
113
+ temp_df.rename(columns=field_mapping, inplace=True)
114
+ temp_df = temp_df[field_mapping.values()]
115
+ return temp_df
116
+
117
+
118
+ def stock_hk_scale_comparison_em(symbol: str = "03900") -> pd.DataFrame:
119
+ """
120
+ 东方财富-港股-行业对比-规模对比
121
+ https://emweb.securities.eastmoney.com/PC_HKF10/pages/home/index.html?code=03900&type=web&color=w#/IndustryComparison
122
+ :param symbol: 股票代码
123
+ :type symbol: str
124
+ :return: 规模对比
125
+ :rtype: pandas.DataFrame
126
+ """
127
+ url = 'https://datacenter.eastmoney.com/securities/api/data/v1/get'
128
+ params = {
129
+ 'reportName': 'RPT_PCF10_INDUSTRY_SCALE',
130
+ 'columns': 'SECURITY_CODE,SECUCODE,TYPE_ID,TYPE_TYPE,TYPE_NAME,'
131
+ 'TYPE_NAME_EN,CORRE_SECURITY_CODE,CORRE_SECUCODE,'
132
+ 'CORRE_SECURITY_NAME,MAXSTDREPORTDATE,HKSDQMV,'
133
+ 'HKTOTAL_MARKET_CAP,OPERATE_INCOME,GROSS_PROFIT,'
134
+ 'HKSDQMV_RANK,HKTOTAL_CAP_RANK,OPERATE_INCOME_RANK,GROSS_PROFIT_RANK',
135
+ 'quoteColumns': '',
136
+ 'filter': f'(SECUCODE="{symbol}.HK")(CORRE_SECUCODE="{symbol}.HK")',
137
+ 'pageNumber': '1',
138
+ 'pageSize': '',
139
+ 'sortTypes': '',
140
+ 'sortColumns': '',
141
+ 'source': 'F10',
142
+ 'client': 'PC',
143
+ 'v': '07839693368708753'
144
+ }
145
+ r = requests.get(url, params=params)
146
+ data_json = r.json()
147
+ field_mapping = {
148
+ 'CORRE_SECURITY_CODE': '代码',
149
+ 'CORRE_SECURITY_NAME': '简称',
150
+ 'HKSDQMV': '总市值',
151
+ 'HKSDQMV_RANK': '总市值排名',
152
+ 'HKTOTAL_MARKET_CAP': '流通市值',
153
+ 'HKTOTAL_CAP_RANK': '流通市值排名',
154
+ 'OPERATE_INCOME': '营业总收入',
155
+ 'OPERATE_INCOME_RANK': '营业总收入排名',
156
+ 'GROSS_PROFIT': '净利润',
157
+ 'GROSS_PROFIT_RANK': '净利润排名',
158
+ }
159
+ temp_df = pd.DataFrame(columns=field_mapping.values())
160
+ if data_json['result'] is not None:
161
+ temp_df = pd.DataFrame(data_json['result']['data'])
162
+ temp_df.rename(columns=field_mapping, inplace=True)
163
+ temp_df = temp_df[field_mapping.values()]
164
+ return temp_df
165
+
166
+
167
+ if __name__ == "__main__":
168
+ stock_hk_growth_comparison_em_df = stock_hk_growth_comparison_em(symbol="03900")
169
+ print(stock_hk_growth_comparison_em_df)
170
+
171
+ stock_hk_valuation_comparison_em_df = stock_hk_valuation_comparison_em(symbol="03900")
172
+ print(stock_hk_valuation_comparison_em_df)
173
+
174
+ stock_hk_scale_comparison_em_df = stock_hk_scale_comparison_em(symbol="03900")
175
+ print(stock_hk_scale_comparison_em_df)
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/7/26 18:30
4
+ Date: 2025/2/24 18:30
5
5
  Desc: 东方财富网-行情中心-港股市场-知名港股
6
6
  https://quote.eastmoney.com/center/gridlist.html#hk_wellknown
7
7
  """
@@ -20,9 +20,9 @@ def stock_hk_famous_spot_em() -> pd.DataFrame:
20
20
  url = "https://69.push2.eastmoney.com/api/qt/clist/get"
21
21
  params = {
22
22
  "pn": "1",
23
- "pz": "2000",
23
+ "pz": "50000",
24
24
  "po": "1",
25
- "np": "1",
25
+ "np": "2",
26
26
  "ut": "bd1d9ddb04089700cf9c27f6f7426281",
27
27
  "fltt": "2",
28
28
  "invt": "2",
@@ -32,11 +32,10 @@ def stock_hk_famous_spot_em() -> pd.DataFrame:
32
32
  "fs": "b:DLMK0106",
33
33
  "fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,"
34
34
  "f25,f26,f22,f33,f11,f62,f128,f136,f115,f152",
35
- "_": "1631271634231",
36
35
  }
37
36
  r = requests.get(url, params=params)
38
37
  data_json = r.json()
39
- temp_df = pd.DataFrame(data_json["data"]["diff"])
38
+ temp_df = pd.DataFrame(data_json["data"]["diff"]).T
40
39
  temp_df.columns = [
41
40
  "_",
42
41
  "最新价",
@@ -5,6 +5,7 @@ Date: 2024/1/16 15:30
5
5
  Desc: 同花顺-港股-分红派息
6
6
  https://stockpage.10jqka.com.cn/HK0700/bonus/
7
7
  """
8
+
8
9
  from io import StringIO
9
10
 
10
11
  import pandas as pd
@@ -57,7 +58,7 @@ def stock_hk_fhpx_detail_ths(symbol: str = "0700") -> pd.DataFrame:
57
58
  temp_df["过户日期起止日-截止"] = pd.to_datetime(
58
59
  temp_df["过户日期起止日-截止"], format="%Y-%m-%d", errors="coerce"
59
60
  ).dt.date
60
- temp_df.sort_values(['公告日期'], inplace=True, ignore_index=True)
61
+ temp_df.sort_values(["公告日期"], inplace=True, ignore_index=True)
61
62
  return temp_df
62
63
 
63
64
 
@@ -5,6 +5,7 @@ Date: 2023/3/25 22:15
5
5
  Desc: 东方财富个股人气榜-港股市场
6
6
  https://guba.eastmoney.com/rank/
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11