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
@@ -2,5 +2,5 @@
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
4
  Date: 2020/5/14 15:34
5
- Desc:
5
+ Desc:
6
6
  """
@@ -0,0 +1,119 @@
1
+ # !/usr/bin/env python
2
+ # -*- coding:utf-8 -*-
3
+ """
4
+ Date: 2025/5/16 19:00
5
+ Desc: 雪球-个股-公司概况-公司简介
6
+ https://xueqiu.com/snowman/S/SH601127/detail#/GSJJ
7
+ """
8
+
9
+ import pandas as pd
10
+ import requests
11
+
12
+ from akshare.utils.cons import headers
13
+
14
+
15
+ def stock_individual_basic_info_xq(
16
+ symbol: str = "SH601127", token: str = None, timeout: float = None
17
+ ) -> pd.DataFrame:
18
+ """
19
+ 雪球-个股-公司概况-公司简介
20
+ https://xueqiu.com/snowman/S/SH601127/detail#/GSJJ
21
+ :param symbol: 证券代码
22
+ :type symbol: str
23
+ :param token: 雪球财经的 token
24
+ :type token: str
25
+ :param timeout: 设置超时时间
26
+ :type timeout: float
27
+ :return: 公司简介
28
+ :rtype: pandas.DataFrame
29
+ """
30
+ from akshare.stock.cons import xq_a_token
31
+ xq_a_token = token or xq_a_token
32
+ url = "https://stock.xueqiu.com/v5/stock/f10/cn/company.json"
33
+ params = {
34
+ "symbol": symbol,
35
+ }
36
+ headers.update({"cookie": f"xq_a_token={xq_a_token};"})
37
+ r = requests.get(url, params=params, headers=headers, timeout=timeout)
38
+ data_json = r.json()
39
+ temp_df = pd.DataFrame(data_json["data"])
40
+ temp_df.reset_index(inplace=True)
41
+ temp_df.columns = ["item", "value"]
42
+ return temp_df
43
+
44
+
45
+ def stock_individual_basic_info_us_xq(
46
+ symbol: str = "NVDA", token: str = None, timeout: float = None
47
+ ) -> pd.DataFrame:
48
+ """
49
+ 雪球-个股-公司概况-公司简介
50
+ https://xueqiu.com/snowman/S/NVDA/detail#/GSJJ
51
+ :param symbol: 证券代码
52
+ :type symbol: str
53
+ :param token: 雪球财经的 token
54
+ :type token: str
55
+ :param timeout: 设置超时时间
56
+ :type timeout: float
57
+ :return: 公司简介
58
+ :rtype: pandas.DataFrame
59
+ """
60
+ from akshare.stock.cons import xq_a_token
61
+ xq_a_token = token or xq_a_token
62
+ url = "https://stock.xueqiu.com/v5/stock/f10/us/company.json"
63
+ params = {
64
+ "symbol": symbol,
65
+ }
66
+ headers.update({"cookie": f"xq_a_token={xq_a_token};"})
67
+ r = requests.get(url, params=params, headers=headers, timeout=timeout)
68
+ data_json = r.json()
69
+ temp_df = pd.DataFrame(data_json["data"])
70
+ temp_df.reset_index(inplace=True)
71
+ temp_df.columns = ["item", "value"]
72
+ return temp_df
73
+
74
+
75
+ def stock_individual_basic_info_hk_xq(
76
+ symbol: str = "02097", token: str = None, timeout: float = None
77
+ ) -> pd.DataFrame:
78
+ """
79
+ 雪球-个股-公司概况-公司简介
80
+ https://xueqiu.com/S/00700
81
+ :param symbol: 证券代码
82
+ :type symbol: str
83
+ :param token: 雪球财经的 token
84
+ :type token: str
85
+ :param timeout: 设置超时时间
86
+ :type timeout: float
87
+ :return: 公司简介
88
+ :rtype: pandas.DataFrame
89
+ """
90
+ from akshare.stock.cons import xq_a_token
91
+ xq_a_token = token or xq_a_token
92
+ url = "https://stock.xueqiu.com/v5/stock/f10/hk/company.json"
93
+ params = {
94
+ "symbol": symbol,
95
+ }
96
+ headers.update({"cookie": f"xq_a_token={xq_a_token};"})
97
+ r = requests.get(url, params=params, headers=headers, timeout=timeout)
98
+ data_json = r.json()
99
+ temp_df = pd.DataFrame(data_json["data"])
100
+ temp_df.reset_index(inplace=True)
101
+ temp_df.columns = ["item", "value"]
102
+ return temp_df
103
+
104
+
105
+ if __name__ == "__main__":
106
+ stock_individual_basic_info_xq_df = stock_individual_basic_info_xq(
107
+ symbol="SH601127"
108
+ )
109
+ print(stock_individual_basic_info_xq_df)
110
+
111
+ stock_us_individual_basic_info_us_xq_df = stock_individual_basic_info_us_xq(
112
+ symbol="NVDA"
113
+ )
114
+ print(stock_us_individual_basic_info_us_xq_df)
115
+
116
+ stock_individual_basic_info_hk_xq_df = stock_individual_basic_info_hk_xq(
117
+ symbol="02097"
118
+ )
119
+ print(stock_individual_basic_info_hk_xq_df)
@@ -1,10 +1,11 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2023/7/31 12:00
4
+ Date: 2025/3/4 17:00
5
5
  Desc: 港股-基本面数据
6
6
  https://emweb.securities.eastmoney.com/PC_HKF10/FinancialAnalysis/index?type=web&code=00700
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
@@ -20,32 +21,34 @@ def stock_financial_hk_report_em(
20
21
  :param symbol: choice of {"资产负债表", "利润表", "现金流量表"}
21
22
  :type symbol: str
22
23
  :param indicator: choice of {"年度", "报告期"}
23
- :type indicator:
24
+ :type indicator: str
24
25
  :return: 东方财富-港股-财务报表-三大报表
25
26
  :rtype: pandas.DataFrame
26
27
  """
27
28
  url = "https://datacenter.eastmoney.com/securities/api/data/v1/get"
28
29
  params = {
29
- 'reportName': 'RPT_CUSTOM_HKSK_APPFN_CASHFLOW_SUMMARY',
30
- 'columns': 'SECUCODE,SECURITY_CODE,SECURITY_NAME_ABBR,START_DATE,REPORT_DATE,FISCAL_YEAR,CURRENCY,ACCOUNT_STANDARD,REPORT_TYPE',
31
- 'quoteColumns': '',
32
- 'filter': f'(SECUCODE="{stock}.HK")',
33
- 'source': 'F10',
34
- 'client': 'PC',
35
- 'v': '02092616586970355',
30
+ "reportName": "RPT_CUSTOM_HKSK_APPFN_CASHFLOW_SUMMARY",
31
+ "columns": "SECUCODE,SECURITY_CODE,SECURITY_NAME_ABBR,START_DATE,REPORT_DATE,FISCAL_YEAR,"
32
+ "CURRENCY,ACCOUNT_STANDARD,REPORT_TYPE",
33
+ "quoteColumns": "",
34
+ "filter": f'(SECUCODE="{stock}.HK")',
35
+ "source": "F10",
36
+ "client": "PC",
37
+ "v": "02092616586970355",
36
38
  }
37
39
  r = requests.get(url, params=params)
38
40
  data_json = r.json()
39
- temp_df = pd.DataFrame(data_json['result']['data'][0]['REPORT_LIST'])
41
+ temp_df = pd.DataFrame(data_json["result"]["data"][0]["REPORT_LIST"])
40
42
  if indicator == "年度":
41
- temp_df = temp_df[temp_df['REPORT_TYPE'] == "年报"]
43
+ temp_df = temp_df[temp_df["REPORT_TYPE"] == "年报"]
42
44
  else:
43
45
  temp_df = temp_df
44
- year_list = [item.split(" ")[0] for item in temp_df['REPORT_DATE']]
46
+ year_list = [item.split(" ")[0] for item in temp_df["REPORT_DATE"]]
45
47
  if symbol == "资产负债表":
46
48
  params = {
47
49
  "reportName": "RPT_HKF10_FN_BALANCE_PC",
48
- "columns": "SECUCODE,SECURITY_CODE,SECURITY_NAME_ABBR,ORG_CODE,REPORT_DATE,DATE_TYPE_CODE,FISCAL_YEAR,STD_ITEM_CODE,STD_ITEM_NAME,AMOUNT,STD_REPORT_DATE",
50
+ "columns": "SECUCODE,SECURITY_CODE,SECURITY_NAME_ABBR,ORG_CODE,REPORT_DATE,DATE_TYPE_CODE,"
51
+ "FISCAL_YEAR,STD_ITEM_CODE,STD_ITEM_NAME,AMOUNT,STD_REPORT_DATE",
49
52
  "quoteColumns": "",
50
53
  "filter": f"""(SECUCODE="{stock}.HK")(REPORT_DATE in ({"'" + "','".join(year_list) + "'"}))""",
51
54
  "pageNumber": "1",
@@ -63,7 +66,8 @@ def stock_financial_hk_report_em(
63
66
  elif symbol == "利润表":
64
67
  params = {
65
68
  "reportName": "RPT_HKF10_FN_INCOME_PC",
66
- "columns": "SECUCODE,SECURITY_CODE,SECURITY_NAME_ABBR,ORG_CODE,REPORT_DATE,DATE_TYPE_CODE,FISCAL_YEAR,START_DATE,STD_ITEM_CODE,STD_ITEM_NAME,AMOUNT",
69
+ "columns": "SECUCODE,SECURITY_CODE,SECURITY_NAME_ABBR,ORG_CODE,REPORT_DATE,DATE_TYPE_CODE,"
70
+ "FISCAL_YEAR,START_DATE,STD_ITEM_CODE,STD_ITEM_NAME,AMOUNT",
67
71
  "quoteColumns": "",
68
72
  "filter": f"""(SECUCODE="{stock}.HK")(REPORT_DATE in ({"'" + "','".join(year_list) + "'"}))""",
69
73
  "pageNumber": "1",
@@ -81,7 +85,8 @@ def stock_financial_hk_report_em(
81
85
  elif symbol == "现金流量表":
82
86
  params = {
83
87
  "reportName": "RPT_HKF10_FN_CASHFLOW_PC",
84
- "columns": "SECUCODE,SECURITY_CODE,SECURITY_NAME_ABBR,ORG_CODE,REPORT_DATE,DATE_TYPE_CODE,FISCAL_YEAR,START_DATE,STD_ITEM_CODE,STD_ITEM_NAME,AMOUNT",
88
+ "columns": "SECUCODE,SECURITY_CODE,SECURITY_NAME_ABBR,ORG_CODE,REPORT_DATE,DATE_TYPE_CODE,"
89
+ "FISCAL_YEAR,START_DATE,STD_ITEM_CODE,STD_ITEM_NAME,AMOUNT",
85
90
  "quoteColumns": "",
86
91
  "filter": f"""(SECUCODE="{stock}.HK")(REPORT_DATE in ({"'" + "','".join(year_list) + "'"}))""",
87
92
  "pageNumber": "1",
@@ -96,6 +101,8 @@ def stock_financial_hk_report_em(
96
101
  data_json = r.json()
97
102
  temp_df = pd.DataFrame(data_json["result"]["data"])
98
103
  return temp_df
104
+ else:
105
+ return pd.DataFrame()
99
106
 
100
107
 
101
108
  def stock_financial_hk_analysis_indicator_em(
@@ -108,7 +115,7 @@ def stock_financial_hk_analysis_indicator_em(
108
115
  :type symbol: str
109
116
  :param indicator: choice of {"年度", "报告期"}
110
117
  :type indicator: str
111
- :return: 新浪财经-港股-财务分析-主要指标
118
+ :return: 东方财富-港股-财务分析-主要指标
112
119
  :rtype: pandas.DataFrame
113
120
  """
114
121
  url = "https://datacenter.eastmoney.com/securities/api/data/v1/get"
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/6/7 22:00
4
+ Date: 2024/10/2 9:00
5
5
  Desc: 股票基本面数据
6
6
  新浪财经-财务报表-财务摘要
7
7
  https://vip.stock.finance.sina.com.cn/corp/go.php/vFD_FinanceSummary/stockid/600004.phtml
@@ -17,6 +17,7 @@ from io import StringIO
17
17
  import pandas as pd
18
18
  import requests
19
19
  from bs4 import BeautifulSoup
20
+
20
21
  from akshare.utils.tqdm import get_tqdm
21
22
 
22
23
 
@@ -40,7 +41,7 @@ def stock_financial_report_sina(
40
41
  "source": symbol_map[symbol],
41
42
  "type": "0",
42
43
  "page": "1",
43
- "num": "100",
44
+ "num": "1000",
44
45
  }
45
46
  r = requests.get(url, params=params)
46
47
  data_json = r.json()
@@ -105,7 +106,7 @@ def stock_financial_abstract(symbol: str = "600004") -> pd.DataFrame:
105
106
  "source": "gjzb",
106
107
  "type": "0",
107
108
  "page": "1",
108
- "num": "100",
109
+ "num": "1000",
109
110
  }
110
111
  r = requests.get(url, params=params)
111
112
  data_json = r.json()
@@ -177,6 +178,53 @@ def stock_financial_abstract(symbol: str = "600004") -> pd.DataFrame:
177
178
  return big_df
178
179
 
179
180
 
181
+ def stock_financial_analysis_indicator_em(
182
+ symbol: str = "301389.SZ", indicator: str = "按报告期"
183
+ ) -> pd.DataFrame:
184
+ """
185
+ 东方财富-A股-财务分析-主要指标
186
+ https://emweb.securities.eastmoney.com/pc_hsf10/pages/index.html?type=web&code=SZ301389&color=b#/cwfx
187
+ :param symbol: 股票代码(带市场标识)
188
+ :type symbol: str
189
+ :param indicator: choice of {"按报告期", "按单季度"}
190
+ :type indicator: str
191
+ :return: 东方财富-A股-财务分析-主要指标
192
+ :rtype: pandas.DataFrame
193
+ """
194
+ if indicator == "按报告期":
195
+ url = "https://datacenter.eastmoney.com/securities/api/data/get"
196
+ params = {
197
+ "type": "RPT_F10_FINANCE_MAINFINADATA",
198
+ "sty": "APP_F10_MAINFINADATA",
199
+ "quoteColumns": "",
200
+ "filter": f"""(SECUCODE="{symbol}")""",
201
+ "p": "1",
202
+ "ps": "200",
203
+ "sr": "-1",
204
+ "st": "REPORT_DATE",
205
+ "source": "HSF10",
206
+ "client": "PC",
207
+ }
208
+ else:
209
+ url = "https://datacenter.eastmoney.com/securities/api/data/v1/get"
210
+ params = {
211
+ "reportName": "RPT_F10_QTR_MAINFINADATA",
212
+ "columns": "ALL",
213
+ "quoteColumns": "",
214
+ "filter": f"""(SECUCODE="{symbol}")""",
215
+ "pageNumber": "1",
216
+ "pageSize": "200",
217
+ "sortTypes": "-1",
218
+ "sortColumns": "REPORT_DATE",
219
+ "source": "HSF10",
220
+ "client": "PC",
221
+ }
222
+ r = requests.get(url, params=params)
223
+ data_json = r.json()
224
+ temp_df = pd.DataFrame(data_json["result"]["data"])
225
+ return temp_df
226
+
227
+
180
228
  def stock_financial_analysis_indicator(
181
229
  symbol: str = "600004", start_year: str = "1900"
182
230
  ) -> pd.DataFrame:
@@ -200,6 +248,8 @@ def stock_financial_analysis_indicator(
200
248
  year_list = [item.text for item in year_context]
201
249
  if start_year in year_list:
202
250
  year_list = year_list[: year_list.index(start_year) + 1]
251
+ else:
252
+ return pd.DataFrame()
203
253
  out_df = pd.DataFrame()
204
254
  tqdm = get_tqdm()
205
255
  for year_item in tqdm(year_list, leave=False):
@@ -257,12 +307,12 @@ def stock_financial_analysis_indicator(
257
307
  def stock_history_dividend() -> pd.DataFrame:
258
308
  """
259
309
  新浪财经-发行与分配-历史分红
260
- https://vip.stock.finance.sina.com.cn/q/go.php/vInvestConsult/kind/lsfh/index.phtml?p=1&num=5000
310
+ https://vip.stock.finance.sina.com.cn/q/go.php/vInvestConsult/kind/lsfh/index.phtml
261
311
  :return: 所有股票的历史分红数据
262
312
  :rtype: pandas.DataFrame
263
313
  """
264
314
  url = "https://vip.stock.finance.sina.com.cn/q/go.php/vInvestConsult/kind/lsfh/index.phtml"
265
- params = {"p": "1", "num": "5000"}
315
+ params = {"p": "1", "num": "50000"}
266
316
  r = requests.get(url, params=params)
267
317
  temp_df = pd.read_html(StringIO(r.text))[0]
268
318
  temp_df["代码"] = temp_df["代码"].astype(str).str.zfill(6)
@@ -712,11 +762,11 @@ if __name__ == "__main__":
712
762
  )
713
763
  print(stock_financial_report_sina_df)
714
764
 
715
- stock_financial_abstract_df = stock_financial_abstract(symbol="600004")
765
+ stock_financial_abstract_df = stock_financial_abstract(symbol="600600")
716
766
  print(stock_financial_abstract_df)
717
767
 
718
768
  stock_financial_analysis_indicator_df = stock_financial_analysis_indicator(
719
- symbol="600004", start_year="2020"
769
+ symbol="600519", start_year="2019"
720
770
  )
721
771
  print(stock_financial_analysis_indicator_df)
722
772
 
@@ -762,3 +812,6 @@ if __name__ == "__main__":
762
812
 
763
813
  stock_main_stock_holder_df = stock_main_stock_holder(stock="600000")
764
814
  print(stock_main_stock_holder_df)
815
+
816
+ stock_financial_analysis_indicator_em_df = stock_financial_analysis_indicator_em(symbol="301389.SZ", indicator="按报告期")
817
+ print(stock_financial_analysis_indicator_em_df)