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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (388) hide show
  1. akshare/__init__.py +757 -161
  2. akshare/air/air_hebei.py +79 -53
  3. akshare/air/air_zhenqi.py +3 -7
  4. akshare/air/cons.py +1 -0
  5. akshare/air/crypto.js +1 -1
  6. akshare/air/outcrypto.js +1 -1
  7. akshare/air/sunrise_tad.py +32 -17
  8. akshare/article/cons.py +1 -0
  9. akshare/article/epu_index.py +4 -3
  10. akshare/article/ff_factor.py +19 -8
  11. akshare/article/fred_md.py +4 -1
  12. akshare/article/risk_rv.py +3 -8
  13. akshare/bank/bank_cbirc_2020.py +11 -11
  14. akshare/bank/cons.py +7 -6
  15. akshare/bond/bond_buy_back_em.py +228 -0
  16. akshare/bond/bond_cb_sina.py +1 -0
  17. akshare/bond/bond_cb_ths.py +17 -9
  18. akshare/bond/bond_cbond.py +19 -14
  19. akshare/bond/bond_china.py +38 -39
  20. akshare/bond/bond_china_money.py +75 -48
  21. akshare/bond/bond_convert.py +10 -9
  22. akshare/bond/bond_em.py +37 -17
  23. akshare/bond/bond_info_cm.py +28 -8
  24. akshare/bond/bond_issue_cninfo.py +73 -30
  25. akshare/bond/bond_summary.py +38 -37
  26. akshare/bond/bond_zh_cov.py +31 -40
  27. akshare/bond/bond_zh_sina.py +61 -51
  28. akshare/bond/cons.py +14 -11
  29. akshare/cal/__init__.py +0 -0
  30. akshare/cal/rv.py +170 -0
  31. akshare/cost/cost_living.py +7 -5
  32. akshare/crypto/__init__.py +1 -1
  33. akshare/crypto/crypto_bitcoin_cme.py +9 -7
  34. akshare/crypto/crypto_hold.py +4 -2
  35. akshare/currency/currency.py +1 -0
  36. akshare/currency/currency_china_bank_sina.py +11 -6
  37. akshare/currency/currency_safe.py +7 -6
  38. akshare/data/__init__.py +1 -1
  39. akshare/data/cninfo.js +1 -1
  40. akshare/datasets.py +10 -21
  41. akshare/economic/cons.py +10 -3
  42. akshare/economic/macro_australia.py +74 -69
  43. akshare/economic/macro_bank.py +95 -653
  44. akshare/economic/macro_canada.py +92 -81
  45. akshare/economic/macro_china.py +163 -117
  46. akshare/economic/macro_china_hk.py +0 -1
  47. akshare/economic/macro_china_nbs.py +24 -7
  48. akshare/economic/macro_euro.py +103 -56
  49. akshare/economic/macro_finance_ths.py +135 -0
  50. akshare/economic/macro_germany.py +1 -1
  51. akshare/economic/macro_info_ws.py +100 -0
  52. akshare/economic/macro_japan.py +0 -1
  53. akshare/economic/macro_other.py +1 -6
  54. akshare/economic/macro_swiss.py +2 -3
  55. akshare/economic/macro_uk.py +1 -1
  56. akshare/economic/macro_usa.py +7 -9
  57. akshare/economic/marco_cnbs.py +11 -6
  58. akshare/energy/energy_carbon.py +94 -126
  59. akshare/energy/energy_oil_em.py +1 -2
  60. akshare/event/cons.py +1 -0
  61. akshare/event/migration.py +3 -2
  62. akshare/exceptions.py +43 -0
  63. akshare/file_fold/calendar.json +245 -2
  64. akshare/forex/__init__.py +0 -0
  65. akshare/forex/cons.py +192 -0
  66. akshare/forex/forex_em.py +149 -0
  67. akshare/fortune/fortune_500.py +15 -48
  68. akshare/fortune/fortune_bloomberg.py +6 -3
  69. akshare/fortune/fortune_forbes_500.py +3 -6
  70. akshare/fortune/fortune_hurun.py +2 -1
  71. akshare/fortune/fortune_xincaifu_500.py +17 -14
  72. akshare/fund/fund_amac.py +38 -15
  73. akshare/fund/fund_announcement_em.py +145 -0
  74. akshare/fund/fund_aum_em.py +49 -35
  75. akshare/fund/fund_em.py +251 -220
  76. akshare/fund/fund_etf_em.py +44 -35
  77. akshare/fund/fund_etf_sina.py +76 -27
  78. akshare/fund/fund_etf_ths.py +95 -0
  79. akshare/fund/fund_fee_em.py +172 -0
  80. akshare/fund/fund_fhsp_em.py +42 -32
  81. akshare/fund/fund_init_em.py +8 -5
  82. akshare/fund/fund_lof_em.py +12 -19
  83. akshare/fund/fund_manager.py +25 -11
  84. akshare/fund/fund_overview_em.py +42 -0
  85. akshare/fund/fund_portfolio_em.py +78 -66
  86. akshare/fund/fund_position_lg.py +19 -8
  87. akshare/fund/fund_rank_em.py +90 -84
  88. akshare/fund/fund_rating.py +33 -12
  89. akshare/fund/fund_report_cninfo.py +63 -48
  90. akshare/fund/fund_scale_em.py +24 -13
  91. akshare/fund/fund_scale_sina.py +20 -10
  92. akshare/fund/fund_xq.py +3 -2
  93. akshare/futures/cons.py +141 -46
  94. akshare/futures/cot.py +89 -88
  95. akshare/futures/futures_basis.py +99 -33
  96. akshare/futures/futures_comex_em.py +1 -0
  97. akshare/futures/futures_comm_ctp.py +13 -2
  98. akshare/futures/futures_contract_detail.py +59 -9
  99. akshare/futures/futures_daily_bar.py +75 -62
  100. akshare/futures/futures_foreign.py +14 -8
  101. akshare/futures/futures_hf_em.py +215 -61
  102. akshare/futures/futures_hist_em.py +191 -0
  103. akshare/futures/futures_hq_sina.py +79 -61
  104. akshare/futures/futures_index_ccidx.py +24 -82
  105. akshare/futures/futures_inventory_99.py +70 -272
  106. akshare/futures/futures_inventory_em.py +14 -11
  107. akshare/futures/futures_news_shmet.py +2 -2
  108. akshare/futures/futures_roll_yield.py +11 -24
  109. akshare/futures/futures_rule.py +7 -3
  110. akshare/futures/futures_rule_em.py +38 -0
  111. akshare/futures/futures_settlement_price_sgx.py +21 -6
  112. akshare/futures/futures_stock_js.py +1 -2
  113. akshare/futures/futures_to_spot.py +43 -39
  114. akshare/futures/futures_warehouse_receipt.py +53 -48
  115. akshare/futures/futures_zh_sina.py +4 -4
  116. akshare/futures/receipt.py +298 -165
  117. akshare/futures/requests_fun.py +16 -3
  118. akshare/futures/symbol_var.py +32 -13
  119. akshare/futures_derivative/cons.py +100 -103
  120. akshare/futures_derivative/futures_contract_info_cffex.py +55 -39
  121. akshare/futures_derivative/futures_contract_info_czce.py +2 -0
  122. akshare/futures_derivative/futures_contract_info_dce.py +43 -17
  123. akshare/futures_derivative/futures_contract_info_gfex.py +43 -31
  124. akshare/futures_derivative/futures_contract_info_ine.py +43 -34
  125. akshare/futures_derivative/futures_contract_info_shfe.py +7 -8
  126. akshare/futures_derivative/futures_cot_sina.py +28 -19
  127. akshare/futures_derivative/futures_index_sina.py +25 -13
  128. akshare/fx/cons.py +12 -7
  129. akshare/fx/currency_investing.py +19 -285
  130. akshare/fx/fx_c_swap_cm.py +62 -0
  131. akshare/fx/fx_quote.py +3 -2
  132. akshare/fx/fx_quote_baidu.py +2 -1
  133. akshare/hf/__init__.py +1 -1
  134. akshare/hf/hf_sp500.py +8 -7
  135. akshare/index/cons.py +132 -28
  136. akshare/index/index_cflp.py +29 -26
  137. akshare/index/index_cni.py +89 -91
  138. akshare/index/index_cons.py +26 -10
  139. akshare/index/index_csindex.py +68 -0
  140. akshare/index/index_cx.py +263 -62
  141. akshare/index/index_drewry.py +17 -16
  142. akshare/index/index_eri.py +1 -0
  143. akshare/index/index_global_em.py +167 -0
  144. akshare/index/index_global_sina.py +82 -0
  145. akshare/index/index_kq_fz.py +17 -14
  146. akshare/index/index_kq_ss.py +1 -0
  147. akshare/index/index_option_qvix.py +351 -16
  148. akshare/index/index_research_sw.py +38 -38
  149. akshare/index/index_spot.py +9 -5
  150. akshare/index/index_stock_hk.py +6 -10
  151. akshare/index/index_stock_us_sina.py +1 -1
  152. akshare/index/index_stock_zh.py +193 -101
  153. akshare/index/index_stock_zh_csindex.py +15 -369
  154. akshare/index/index_sugar.py +18 -4
  155. akshare/index/index_sw.py +62 -34
  156. akshare/index/index_yw.py +53 -75
  157. akshare/index/index_zh_em.py +15 -82
  158. akshare/interest_rate/interbank_rate_em.py +14 -10
  159. akshare/movie/artist_yien.py +32 -5
  160. akshare/movie/jm.js +0 -1
  161. akshare/movie/movie_yien.py +92 -18
  162. akshare/movie/video_yien.py +28 -5
  163. akshare/news/__init__.py +1 -1
  164. akshare/news/news_baidu.py +395 -220
  165. akshare/news/news_cctv.py +38 -38
  166. akshare/news/news_stock.py +49 -13
  167. akshare/nlp/nlp_interface.py +7 -8
  168. akshare/option/cons.py +12 -12
  169. akshare/option/option_comm_qihuo.py +86 -0
  170. akshare/option/option_commodity.py +355 -211
  171. akshare/option/option_commodity_sina.py +22 -26
  172. akshare/option/option_contract_info_ctp.py +63 -0
  173. akshare/option/option_current_sse.py +61 -0
  174. akshare/option/option_current_szse.py +84 -0
  175. akshare/option/option_czce.py +37 -9
  176. akshare/option/option_daily_stats_sse_szse.py +145 -0
  177. akshare/option/option_em.py +4 -8
  178. akshare/option/option_finance.py +60 -12
  179. akshare/option/option_finance_sina.py +28 -26
  180. akshare/option/option_lhb_em.py +62 -57
  181. akshare/option/option_margin.py +62 -0
  182. akshare/option/option_premium_analysis_em.py +58 -53
  183. akshare/option/option_risk_analysis_em.py +11 -8
  184. akshare/option/option_risk_indicator_sse.py +18 -16
  185. akshare/option/option_value_analysis_em.py +62 -55
  186. akshare/other/__init__.py +1 -1
  187. akshare/other/other_car_cpca.py +20 -20
  188. akshare/pro/__init__.py +0 -1
  189. akshare/pro/client.py +6 -4
  190. akshare/pro/cons.py +3 -2
  191. akshare/pro/data_pro.py +6 -5
  192. akshare/qdii/__init__.py +0 -0
  193. akshare/qdii/qdii_jsl.py +233 -0
  194. akshare/qhkc/__init__.py +1 -6
  195. akshare/qhkc/qhkc_api.py +64 -22
  196. akshare/qhkc_web/__init__.py +1 -6
  197. akshare/qhkc_web/qhkc_fund.py +10 -6
  198. akshare/qhkc_web/qhkc_index.py +28 -14
  199. akshare/qhkc_web/qhkc_tool.py +62 -59
  200. akshare/rate/__init__.py +1 -1
  201. akshare/rate/repo_rate.py +36 -32
  202. akshare/reits/__init__.py +1 -1
  203. akshare/reits/reits_basic.py +149 -13
  204. akshare/request.py +117 -0
  205. akshare/spot/__init__.py +1 -1
  206. akshare/spot/spot_hog_soozhu.py +232 -0
  207. akshare/spot/spot_price_qh.py +121 -0
  208. akshare/spot/spot_sge.py +70 -9
  209. akshare/stock/cons.py +60 -23
  210. akshare/stock/stock_allotment_cninfo.py +10 -9
  211. akshare/stock/stock_ask_bid_em.py +3 -78
  212. akshare/stock/stock_board_concept_em.py +160 -35
  213. akshare/stock/stock_board_industry_em.py +163 -70
  214. akshare/stock/stock_cg_equity_mortgage.py +15 -11
  215. akshare/stock/stock_cg_guarantee.py +41 -51
  216. akshare/stock/stock_cg_lawsuit.py +36 -35
  217. akshare/stock/stock_dividend_cninfo.py +36 -16
  218. akshare/stock/stock_dzjy_em.py +347 -260
  219. akshare/stock/stock_fund_em.py +73 -64
  220. akshare/stock/stock_fund_hold.py +1 -2
  221. akshare/stock/stock_gsrl_em.py +1 -0
  222. akshare/stock/stock_hk_comparison_em.py +175 -0
  223. akshare/stock/stock_hk_famous.py +107 -0
  224. akshare/stock/stock_hk_fhpx_ths.py +2 -1
  225. akshare/stock/stock_hk_hot_rank_em.py +1 -0
  226. akshare/stock/stock_hk_sina.py +91 -42
  227. akshare/stock/stock_hold_control_cninfo.py +100 -15
  228. akshare/stock/stock_hold_control_em.py +4 -5
  229. akshare/stock/stock_hold_num_cninfo.py +18 -12
  230. akshare/stock/stock_hot_rank_em.py +4 -1
  231. akshare/stock/stock_hot_search_baidu.py +32 -19
  232. akshare/stock/stock_hot_up_em.py +4 -1
  233. akshare/stock/stock_hsgt_em.py +155 -0
  234. akshare/stock/stock_industry.py +1 -0
  235. akshare/stock/stock_industry_cninfo.py +25 -20
  236. akshare/stock/stock_industry_pe_cninfo.py +45 -31
  237. akshare/stock/stock_industry_sw.py +5 -9
  238. akshare/stock/stock_info.py +31 -19
  239. akshare/stock/stock_info_em.py +17 -11
  240. akshare/stock/stock_intraday_em.py +9 -80
  241. akshare/stock/stock_intraday_sina.py +2 -2
  242. akshare/stock/stock_ipo_summary_cninfo.py +25 -10
  243. akshare/stock/stock_new_cninfo.py +32 -19
  244. akshare/stock/stock_news_cx.py +39 -0
  245. akshare/stock/stock_profile_cninfo.py +9 -8
  246. akshare/stock/stock_profile_em.py +302 -0
  247. akshare/stock/stock_rank_forecast.py +8 -6
  248. akshare/stock/stock_repurchase_em.py +7 -2
  249. akshare/stock/stock_share_changes_cninfo.py +18 -14
  250. akshare/stock/stock_share_hold.py +24 -20
  251. akshare/stock/stock_stop.py +6 -6
  252. akshare/stock/stock_summary.py +153 -417
  253. akshare/stock/stock_us_famous.py +19 -11
  254. akshare/stock/stock_us_js.py +3 -2
  255. akshare/stock/stock_us_pink.py +38 -27
  256. akshare/stock/stock_us_sina.py +15 -12
  257. akshare/stock/stock_weibo_nlp.py +18 -20
  258. akshare/stock/stock_xq.py +36 -9
  259. akshare/stock/stock_zh_a_sina.py +58 -80
  260. akshare/stock/stock_zh_a_special.py +240 -243
  261. akshare/stock/stock_zh_a_tick_tx.py +11 -3
  262. akshare/stock/stock_zh_ah_tx.py +23 -26
  263. akshare/stock/stock_zh_b_sina.py +32 -55
  264. akshare/stock/stock_zh_comparison_em.py +250 -0
  265. akshare/stock/stock_zh_kcb_report.py +11 -9
  266. akshare/stock/stock_zh_kcb_sina.py +67 -64
  267. akshare/stock_a/__init__.py +0 -0
  268. akshare/stock_a/stock_board_concept_name_em.py +170 -0
  269. akshare/stock_a/stock_individual_fund_flow_rank.py +258 -0
  270. akshare/stock_a/stock_zh_a_spot.py +212 -0
  271. akshare/stock_feature/cons.py +1 -0
  272. akshare/stock_feature/stock_a_below_net_asset_statistics.py +5 -2
  273. akshare/stock_feature/stock_a_high_low.py +5 -2
  274. akshare/stock_feature/stock_a_indicator.py +15 -57
  275. akshare/stock_feature/stock_a_pe_and_pb.py +39 -9
  276. akshare/stock_feature/stock_account_em.py +0 -1
  277. akshare/stock_feature/stock_all_pb.py +2 -1
  278. akshare/stock_feature/stock_analyst_em.py +36 -30
  279. akshare/stock_feature/stock_board_concept_ths.py +144 -252
  280. akshare/stock_feature/stock_board_industry_ths.py +137 -401
  281. akshare/stock_feature/stock_buffett_index_lg.py +10 -8
  282. akshare/stock_feature/stock_classify_sina.py +3 -6
  283. akshare/stock_feature/stock_comment_em.py +81 -144
  284. akshare/stock_feature/stock_concept_futu.py +183 -0
  285. akshare/stock_feature/stock_congestion_lg.py +2 -1
  286. akshare/stock_feature/stock_cyq_em.py +5 -11
  287. akshare/stock_feature/stock_disclosure_cninfo.py +20 -10
  288. akshare/stock_feature/stock_dxsyl_em.py +121 -74
  289. akshare/stock_feature/stock_ebs_lg.py +5 -4
  290. akshare/stock_feature/stock_esg_sina.py +33 -15
  291. akshare/stock_feature/stock_fhps_em.py +62 -26
  292. akshare/stock_feature/stock_fhps_ths.py +34 -7
  293. akshare/stock_feature/stock_fund_flow.py +38 -25
  294. akshare/stock_feature/stock_gddh_em.py +19 -11
  295. akshare/stock_feature/stock_gdfx_em.py +226 -113
  296. akshare/stock_feature/stock_gdhs.py +75 -50
  297. akshare/stock_feature/stock_gdzjc_em.py +21 -10
  298. akshare/stock_feature/stock_gpzy_em.py +78 -46
  299. akshare/stock_feature/stock_gxl_lg.py +3 -2
  300. akshare/stock_feature/stock_hist_em.py +158 -237
  301. akshare/stock_feature/stock_hist_tx.py +13 -10
  302. akshare/stock_feature/stock_hk_valuation_baidu.py +20 -8
  303. akshare/stock_feature/stock_hot_xq.py +4 -6
  304. akshare/stock_feature/stock_hsgt_em.py +269 -97
  305. akshare/stock_feature/stock_hsgt_exchange_rate.py +115 -87
  306. akshare/stock_feature/stock_hsgt_min_em.py +13 -16
  307. akshare/stock_feature/stock_info.py +8 -81
  308. akshare/stock_feature/stock_inner_trade_xq.py +38 -31
  309. akshare/stock_feature/stock_irm_cninfo.py +32 -9
  310. akshare/stock_feature/stock_jgdy_em.py +43 -40
  311. akshare/stock_feature/stock_lh_yybpm.py +36 -37
  312. akshare/stock_feature/stock_lhb_em.py +165 -35
  313. akshare/stock_feature/stock_lhb_sina.py +93 -46
  314. akshare/stock_feature/stock_margin_em.py +101 -0
  315. akshare/stock_feature/{stock_sse_margin.py → stock_margin_sse.py} +21 -17
  316. akshare/stock_feature/{stock_szse_margin.py → stock_margin_szse.py} +7 -7
  317. akshare/stock_feature/stock_market_legu.py +4 -2
  318. akshare/stock_feature/stock_pankou_em.py +71 -35
  319. akshare/stock_feature/stock_qsjy_em.py +13 -4
  320. akshare/stock_feature/stock_report_em.py +152 -8
  321. akshare/stock_feature/stock_research_report_em.py +55 -20
  322. akshare/stock_feature/stock_sns_sseinfo.py +15 -12
  323. akshare/stock_feature/stock_sy_em.py +20 -15
  324. akshare/stock_feature/stock_technology_ths.py +152 -120
  325. akshare/stock_feature/stock_tfp_em.py +37 -14
  326. akshare/stock_feature/stock_three_report_em.py +120 -78
  327. akshare/stock_feature/stock_ttm_lyr.py +18 -9
  328. akshare/stock_feature/stock_value_em.py +83 -0
  329. akshare/stock_feature/stock_yjbb_em.py +58 -32
  330. akshare/stock_feature/stock_yjyg_cninfo.py +6 -2
  331. akshare/stock_feature/stock_yjyg_em.py +1 -1
  332. akshare/stock_feature/stock_yzxdr_em.py +24 -22
  333. akshare/stock_feature/stock_zdhtmx_em.py +20 -6
  334. akshare/stock_feature/stock_zh_valuation_baidu.py +3 -2
  335. akshare/stock_feature/stock_zh_vote_baidu.py +4 -1
  336. akshare/stock_feature/stock_ztb_em.py +39 -24
  337. akshare/stock_fundamental/__init__.py +1 -1
  338. akshare/stock_fundamental/stock_basic_info_xq.py +119 -0
  339. akshare/stock_fundamental/{stock_finance_hk.py → stock_finance_hk_em.py} +23 -16
  340. akshare/stock_fundamental/{stock_finance.py → stock_finance_sina.py} +203 -59
  341. akshare/stock_fundamental/stock_finance_ths.py +524 -57
  342. akshare/stock_fundamental/stock_finance_us_em.py +268 -0
  343. akshare/stock_fundamental/stock_gbjg_em.py +80 -0
  344. akshare/stock_fundamental/stock_hold.py +26 -17
  345. akshare/stock_fundamental/stock_ipo_declare.py +1 -0
  346. akshare/stock_fundamental/stock_kcb_detail_sse.py +10 -10
  347. akshare/stock_fundamental/stock_kcb_sse.py +26 -25
  348. akshare/stock_fundamental/stock_notice.py +41 -18
  349. akshare/stock_fundamental/stock_profit_forecast_em.py +31 -13
  350. akshare/stock_fundamental/stock_profit_forecast_hk_etnet.py +64 -41
  351. akshare/stock_fundamental/stock_profit_forecast_ths.py +86 -35
  352. akshare/stock_fundamental/stock_recommend.py +20 -4
  353. akshare/stock_fundamental/stock_register_em.py +448 -0
  354. akshare/stock_fundamental/stock_zygc.py +5 -62
  355. akshare/tool/trade_date_hist.py +1 -1
  356. akshare/utils/context.py +43 -0
  357. akshare/utils/demjson.py +2009 -1338
  358. akshare/utils/func.py +49 -2
  359. akshare/utils/multi_decrypt.py +53 -0
  360. akshare/utils/token_process.py +6 -5
  361. akshare/utils/tqdm.py +13 -3
  362. {akshare-1.13.46.dist-info → akshare-1.17.99.dist-info}/METADATA +56 -86
  363. akshare-1.17.99.dist-info/RECORD +409 -0
  364. {akshare-1.13.46.dist-info → akshare-1.17.99.dist-info}/WHEEL +1 -1
  365. {akshare-1.13.46.dist-info → akshare-1.17.99.dist-info/licenses}/LICENSE +1 -1
  366. tests/test_func.py +3 -5
  367. akshare/bond/bond_futures.py +0 -50
  368. akshare/bond/bond_investing.py +0 -139
  369. akshare/crypto/crypto_hist_investing.py +0 -249
  370. akshare/fortune/fortune_it_juzi.py +0 -123
  371. akshare/fund/fund_announcement.py +0 -56
  372. akshare/futures/futures_international.py +0 -170
  373. akshare/futures/futures_news_baidu.py +0 -54
  374. akshare/futures/inventory_data.py +0 -100
  375. akshare/futures_derivative/futures_index_price_nh.py +0 -61
  376. akshare/futures_derivative/futures_index_return_nh.py +0 -47
  377. akshare/futures_derivative/futures_index_volatility_nh.py +0 -51
  378. akshare/futures_derivative/futures_other_index_nh.py +0 -145
  379. akshare/index/index_fear_greed_funddb.py +0 -78
  380. akshare/index/index_investing.py +0 -232
  381. akshare/sport/__init__.py +0 -6
  382. akshare/sport/sport_olympic.py +0 -27
  383. akshare/sport/sport_olympic_winter.py +0 -39
  384. akshare/stock_feature/stock_wencai.py +0 -104
  385. akshare/stock_fundamental/stock_mda_ym.py +0 -40
  386. akshare/stock_fundamental/stock_register.py +0 -292
  387. akshare-1.13.46.dist-info/RECORD +0 -380
  388. {akshare-1.13.46.dist-info → akshare-1.17.99.dist-info}/top_level.txt +0 -0
akshare/index/cons.py CHANGED
@@ -4,9 +4,11 @@
4
4
  Date: 2021/5/27 20:19
5
5
  Desc: 指数配置文件
6
6
  """
7
+
7
8
  # weibo-user-agent
8
9
  index_weibo_headers = {
9
- "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1",
10
+ "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) "
11
+ "AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1",
10
12
  "Referer": "http://data.weibo.com/index/newindex",
11
13
  "Accept": "application/json",
12
14
  "Origin": "https://data.weibo.com",
@@ -24,7 +26,8 @@ sw_cons_headers = {
24
26
  "Host": "www.swsindex.com",
25
27
  "Origin": "http://www.swsindex.com",
26
28
  "Referer": "http://www.swsindex.com/idx0210.aspx?swindexcode=801010",
27
- 'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36",
29
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
30
+ "Chrome/78.0.3904.108 Safari/537.36",
28
31
  "X-AjaxPro-Method": "ReturnContent",
29
32
  }
30
33
 
@@ -36,7 +39,10 @@ sw_payload = {
36
39
  "tablename": "swzs",
37
40
  "key": "L1",
38
41
  "p": "1",
39
- "where": "L1 in('801010','801020','801030','801040','801050','801080','801110','801120','801130','801140','801150','801160','801170','801180','801200','801210','801230','801710','801720','801730','801740','801750','801760','801770','801780','801790','801880','801890','801950','801960','801970','801980')",
42
+ "where": "L1 in('801010','801020','801030','801040','801050','801080','801110','801120','801130',"
43
+ "'801140','801150','801160','801170','801180','801200','801210','801230','801710','801720',"
44
+ "'801730','801740','801750','801760','801770','801780','801790','801880','801890','801950',"
45
+ "'801960','801970','801980')",
40
46
  "orderby": "",
41
47
  "fieldlist": "L1,L2,L3,L4,L5,L6,L7,L8,L11",
42
48
  "pagecount": "28",
@@ -45,47 +51,145 @@ sw_payload = {
45
51
 
46
52
  # sw-headers
47
53
  sw_headers = {
48
- 'Accept': 'application/json, text/javascript, */*',
49
- 'Accept-Encoding': 'gzip, deflate',
50
- 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
51
- 'Cache-Control': 'no-cache',
52
- 'Content-Type': 'application/x-www-form-urlencoded',
53
- 'DNT': '1',
54
- 'Host': 'www.swsindex.com',
55
- 'Origin': 'http://www.swsindex.com',
56
- 'Pragma': 'no-cache',
57
- 'Referer': 'http://www.swsindex.com/idx0120.aspx?columnid=8832',
58
- 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36',
59
- 'X-Requested-With': 'XMLHttpRequest'
54
+ "Accept": "application/json, text/javascript, */*",
55
+ "Accept-Encoding": "gzip, deflate",
56
+ "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
57
+ "Cache-Control": "no-cache",
58
+ "Content-Type": "application/x-www-form-urlencoded",
59
+ "DNT": "1",
60
+ "Host": "www.swsindex.com",
61
+ "Origin": "http://www.swsindex.com",
62
+ "Pragma": "no-cache",
63
+ "Referer": "http://www.swsindex.com/idx0120.aspx?columnid=8832",
64
+ "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
65
+ "Chrome/74.0.3729.169 Safari/537.36",
66
+ "X-Requested-With": "XMLHttpRequest",
60
67
  }
61
68
 
62
69
  # zh-sina-a
63
- zh_sina_index_stock_url = "http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeDataSimple"
70
+ zh_sina_index_stock_url = (
71
+ "http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/"
72
+ "Market_Center.getHQNodeDataSimple"
73
+ )
64
74
  zh_sina_index_stock_payload = {
65
75
  "page": "1",
66
76
  "num": "80",
67
77
  "sort": "symbol",
68
78
  "asc": "1",
69
79
  "node": "hs_s",
70
- "_s_r_a": "page"
80
+ "_s_r_a": "page",
71
81
  }
72
- zh_sina_index_stock_count_url = "http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeStockCountSimple?node=hs_s"
73
- zh_sina_index_stock_hist_url = "https://finance.sina.com.cn/realstock/company/{}/hisdata/klc_kl.js"
82
+ zh_sina_index_stock_count_url = (
83
+ "http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/"
84
+ "Market_Center.getHQNodeStockCountSimple?node=hs_s"
85
+ )
86
+ zh_sina_index_stock_hist_url = (
87
+ "https://finance.sina.com.cn/realstock/company/{}/hisdata/klc_kl.js"
88
+ )
74
89
 
75
90
  # investing
76
91
  short_headers = {
77
- 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.91 Safari/537.36'
92
+ "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
93
+ "Chrome/61.0.3163.91 Safari/537.36"
78
94
  }
79
95
 
80
96
  long_headers = {
81
- 'accept': 'text/plain, */*; q=0.01',
97
+ "accept": "text/plain, */*; q=0.01",
82
98
  # 'accept-encoding': 'gzip, deflate, br',
83
- 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
99
+ "accept-language": "zh-CN,zh;q=0.9,en;q=0.8",
84
100
  # 'cache-control': 'no-cache',
85
- 'content-length': '267',
86
- 'content-type': 'application/x-www-form-urlencoded',
87
- 'origin': 'https://cn.investing.com',
88
- 'referer': 'https://cn.investing.com/commodities/brent-oil-historical-data',
89
- 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.91 Safari/537.36',
90
- 'x-requested-with': 'XMLHttpRequest',
101
+ "content-length": "267",
102
+ "content-type": "application/x-www-form-urlencoded",
103
+ "origin": "https://cn.investing.com",
104
+ "referer": "https://cn.investing.com/commodities/brent-oil-historical-data",
105
+ "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
106
+ "Chrome/61.0.3163.91 Safari/537.36",
107
+ "x-requested-with": "XMLHttpRequest",
108
+ }
109
+
110
+ index_global_sina_symbol_map = {
111
+ # 欧洲股市
112
+ "英国富时100指数": "UKX",
113
+ "德国DAX 30种股价指数": "DAX",
114
+ "俄罗斯MICEX指数": "INDEXCF",
115
+ "法CAC40指数": "CAC",
116
+ "瑞士股票指数": "SWI20",
117
+ "富时意大利MIB指数": "FTSEMIB",
118
+ "荷兰AEX综合指数": "AEX",
119
+ "西班牙IBEX指数": "IBEX",
120
+ "欧洲Stoxx50指数": "SX5E",
121
+ # 美洲股市
122
+ "加拿大S&P/TSX综合指数": "GSPTSE",
123
+ "墨西哥BOLSA指数": "MXX",
124
+ "巴西BOVESPA股票指数": "IBOV",
125
+ # 亚洲股市
126
+ "中国台湾加权指数": "TWJQ",
127
+ "日经225指数": "NKY",
128
+ "首尔综合指数": "KOSPI",
129
+ "印度尼西亚雅加达综合指数": "JCI",
130
+ "印度孟买SENSEX指数": "SENSEX",
131
+ # 澳洲股市
132
+ "澳大利亚标准普尔200指数": "AS51",
133
+ "新西兰NZSE 50指数": "NZ250",
134
+ # 非洲股市
135
+ "埃及CASE 30指数": "CASE",
136
+ }
137
+
138
+ index_global_em_symbol_map = {
139
+ "波罗的海BDI指数": {"code": "BDI", "market": "100"},
140
+ "葡萄牙PSI20": {"code": "PSI20", "market": "100"},
141
+ "菲律宾马尼拉": {"code": "PSI", "market": "100"},
142
+ "泰国SET": {"code": "SET", "market": "100"},
143
+ "俄罗斯RTS": {"code": "RTS", "market": "100"},
144
+ "巴基斯坦卡拉奇": {"code": "KSE100", "market": "100"},
145
+ "越南胡志明": {"code": "VNINDEX", "market": "100"},
146
+ "红筹指数": {"code": "HSCCI", "market": "124"},
147
+ "印尼雅加达综合": {"code": "JKSE", "market": "100"},
148
+ "希腊雅典ASE": {"code": "ASE", "market": "100"},
149
+ "墨西哥BOLSA": {"code": "MXX", "market": "100"},
150
+ "挪威OSEBX": {"code": "OSEBX", "market": "100"},
151
+ "巴西BOVESPA": {"code": "BVSP", "market": "100"},
152
+ "波兰WIG": {"code": "WIG", "market": "100"},
153
+ "印度孟买SENSEX": {"code": "SENSEX", "market": "100"},
154
+ "布拉格指数": {"code": "PX", "market": "100"},
155
+ "荷兰AEX": {"code": "AEX", "market": "100"},
156
+ "冰岛ICEX": {"code": "ICEXI", "market": "100"},
157
+ "斯里兰卡科伦坡": {"code": "CSEALL", "market": "100"},
158
+ "富时新加坡海峡时报": {"code": "STI", "market": "100"},
159
+ "富时意大利MIB": {"code": "MIB", "market": "100"},
160
+ "路透CRB商品指数": {"code": "CRB", "market": "100"},
161
+ "比利时BFX": {"code": "BFX", "market": "100"},
162
+ "富时AIM全股": {"code": "AXX", "market": "100"},
163
+ "新西兰50": {"code": "NZ50", "market": "100"},
164
+ "上证指数": {"code": "000001", "market": "1"},
165
+ "国企指数": {"code": "HSCEI", "market": "100"},
166
+ "沪深300": {"code": "000300", "market": "1"},
167
+ "英国富时100": {"code": "FTSE", "market": "100"},
168
+ "中小100": {"code": "399005", "market": "0"},
169
+ "瑞士SMI": {"code": "SSMI", "market": "100"},
170
+ "西班牙IBEX35": {"code": "IBEX", "market": "100"},
171
+ "瑞典OMXSPI": {"code": "OMXSPI", "market": "100"},
172
+ "爱尔兰综合": {"code": "ISEQ", "market": "100"},
173
+ "韩国KOSPI": {"code": "KS11", "market": "100"},
174
+ "深证成指": {"code": "399001", "market": "0"},
175
+ "韩国KOSPI200": {"code": "KOSPI200", "market": "100"},
176
+ "芬兰赫尔辛基": {"code": "HEX", "market": "100"},
177
+ "恒生指数": {"code": "HSI", "market": "100"},
178
+ "欧洲斯托克50": {"code": "SX5E", "market": "100"},
179
+ "美元指数": {"code": "UDI", "market": "100"},
180
+ "法国CAC40": {"code": "FCHI", "market": "100"},
181
+ "台湾加权": {"code": "TWII", "market": "100"},
182
+ "英国富时250": {"code": "MCX", "market": "100"},
183
+ "富时马来西亚KLCI": {"code": "KLSE", "market": "100"},
184
+ "OMX哥本哈根20": {"code": "OMXC20", "market": "100"},
185
+ "道琼斯": {"code": "DJIA", "market": "100"},
186
+ "奥地利ATX": {"code": "ATX", "market": "100"},
187
+ "加拿大S&P/TSX": {"code": "TSX", "market": "100"},
188
+ "德国DAX30": {"code": "GDAXI", "market": "100"},
189
+ "创业板指": {"code": "399006", "market": "0"},
190
+ "澳大利亚普通股": {"code": "AORD", "market": "100"},
191
+ "标普500": {"code": "SPX", "market": "100"},
192
+ "澳大利亚标普200": {"code": "AS51", "market": "100"},
193
+ "日经225": {"code": "N225", "market": "100"},
194
+ "纳斯达克": {"code": "NDX", "market": "100"},
91
195
  }
@@ -5,11 +5,12 @@ Date: 2021/12/27 15:47
5
5
  Desc: 中国公路物流运价、运量指数
6
6
  http://index.0256.cn/expx.htm
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
11
12
 
12
- def index_cflp_price(symbol: str = "周指数") -> pd.DataFrame:
13
+ def index_price_cflp(symbol: str = "周指数") -> pd.DataFrame:
13
14
  """
14
15
  中国公路物流运价指数
15
16
  http://index.0256.cn/expx.htm
@@ -38,7 +39,8 @@ def index_cflp_price(symbol: str = "周指数") -> pd.DataFrame:
38
39
  headers = {
39
40
  "Origin": "http://index.0256.cn",
40
41
  "Referer": "http://index.0256.cn/expx.htm",
41
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36",
42
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
43
+ "Chrome/90.0.4430.212 Safari/537.36",
42
44
  }
43
45
  r = requests.post(url, data=params, headers=headers)
44
46
  data_json = r.json()
@@ -51,14 +53,14 @@ def index_cflp_price(symbol: str = "周指数") -> pd.DataFrame:
51
53
  ]
52
54
  ).T
53
55
  temp_df.columns = ["日期", "定基指数", "环比指数", "同比指数"]
54
- temp_df["日期"] = pd.to_datetime(temp_df["日期"]).dt.date
55
- temp_df["定基指数"] = pd.to_numeric(temp_df["定基指数"])
56
- temp_df["环比指数"] = pd.to_numeric(temp_df["环比指数"])
57
- temp_df["同比指数"] = pd.to_numeric(temp_df["同比指数"])
56
+ temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
57
+ temp_df["定基指数"] = pd.to_numeric(temp_df["定基指数"], errors="coerce")
58
+ temp_df["环比指数"] = pd.to_numeric(temp_df["环比指数"], errors="coerce")
59
+ temp_df["同比指数"] = pd.to_numeric(temp_df["同比指数"], errors="coerce")
58
60
  return temp_df
59
61
 
60
62
 
61
- def index_cflp_volume(symbol: str = "月指数") -> pd.DataFrame:
63
+ def index_volume_cflp(symbol: str = "月指数") -> pd.DataFrame:
62
64
  """
63
65
  中国公路物流运量指数
64
66
  http://index.0256.cn/expx.htm
@@ -86,7 +88,8 @@ def index_cflp_volume(symbol: str = "月指数") -> pd.DataFrame:
86
88
  headers = {
87
89
  "Origin": "http://index.0256.cn",
88
90
  "Referer": "http://index.0256.cn/expx.htm",
89
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36",
91
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
92
+ "Chrome/90.0.4430.212 Safari/537.36",
90
93
  }
91
94
  r = requests.post(url, data=params, headers=headers)
92
95
  data_json = r.json()
@@ -99,31 +102,31 @@ def index_cflp_volume(symbol: str = "月指数") -> pd.DataFrame:
99
102
  ]
100
103
  ).T
101
104
  temp_df.columns = ["日期", "定基指数", "环比指数", "同比指数"]
102
- temp_df["日期"] = pd.to_datetime(temp_df["日期"]).dt.date
103
- temp_df["定基指数"] = pd.to_numeric(temp_df["定基指数"])
104
- temp_df["环比指数"] = pd.to_numeric(temp_df["环比指数"])
105
- temp_df["同比指数"] = pd.to_numeric(temp_df["同比指数"])
105
+ temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
106
+ temp_df["定基指数"] = pd.to_numeric(temp_df["定基指数"], errors="coerce")
107
+ temp_df["环比指数"] = pd.to_numeric(temp_df["环比指数"], errors="coerce")
108
+ temp_df["同比指数"] = pd.to_numeric(temp_df["同比指数"], errors="coerce")
106
109
  return temp_df
107
110
 
108
111
 
109
112
  if __name__ == "__main__":
110
- index_cflp_price_df = index_cflp_price(symbol="周指数")
111
- print(index_cflp_price_df)
113
+ index_price_cflp_df = index_price_cflp(symbol="周指数")
114
+ print(index_price_cflp_df)
112
115
 
113
- index_cflp_price_df = index_cflp_price(symbol="月指数")
114
- print(index_cflp_price_df)
116
+ index_price_cflp_df = index_price_cflp(symbol="月指数")
117
+ print(index_price_cflp_df)
115
118
 
116
- index_cflp_price_df = index_cflp_price(symbol="季度指数")
117
- print(index_cflp_price_df)
119
+ index_price_cflp_df = index_price_cflp(symbol="季度指数")
120
+ print(index_price_cflp_df)
118
121
 
119
- index_cflp_price_df = index_cflp_price(symbol="年度指数")
120
- print(index_cflp_price_df)
122
+ index_price_cflp_df = index_price_cflp(symbol="年度指数")
123
+ print(index_price_cflp_df)
121
124
 
122
- index_cflp_volume_df = index_cflp_volume(symbol="月指数")
123
- print(index_cflp_volume_df)
125
+ index_volume_cflp_df = index_volume_cflp(symbol="月指数")
126
+ print(index_volume_cflp_df)
124
127
 
125
- index_cflp_volume_df = index_cflp_volume(symbol="季度指数")
126
- print(index_cflp_volume_df)
128
+ index_volume_cflp_df = index_volume_cflp(symbol="季度指数")
129
+ print(index_volume_cflp_df)
127
130
 
128
- index_cflp_volume_df = index_cflp_volume(symbol="年度指数")
129
- print(index_cflp_volume_df)
131
+ index_volume_cflp_df = index_volume_cflp(symbol="年度指数")
132
+ print(index_volume_cflp_df)
@@ -5,6 +5,7 @@ Date: 2024/1/14 18:00
5
5
  Desc: 国证指数
6
6
  http://www.cnindex.com.cn/index.html
7
7
  """
8
+
8
9
  import zipfile
9
10
  from io import BytesIO
10
11
 
@@ -68,14 +69,16 @@ def index_all_cni() -> pd.DataFrame:
68
69
  "自由流通市值",
69
70
  ]
70
71
  ]
71
- temp_df['成交量'] = temp_df['成交量'] / 100000
72
- temp_df['成交额'] = temp_df['成交额'] / 100000000
73
- temp_df['总市值'] = temp_df['总市值'] / 100000000
74
- temp_df['自由流通市值'] = temp_df['自由流通市值'] / 100000000
72
+ temp_df["成交量"] = temp_df["成交量"] / 100000
73
+ temp_df["成交额"] = temp_df["成交额"] / 100000000
74
+ temp_df["总市值"] = temp_df["总市值"] / 100000000
75
+ temp_df["自由流通市值"] = temp_df["自由流通市值"] / 100000000
75
76
  return temp_df
76
77
 
77
78
 
78
- def index_hist_cni(symbol: str = "399001", start_date: str = "20230114", end_date: str = "20240114") -> pd.DataFrame:
79
+ def index_hist_cni(
80
+ symbol: str = "399001", start_date: str = "20230114", end_date: str = "20240114"
81
+ ) -> pd.DataFrame:
79
82
  """
80
83
  指数历史行情数据
81
84
  http://www.cnindex.com.cn/module/index-detail.html?act_menu=1&indexCode=399001
@@ -128,120 +131,111 @@ def index_hist_cni(symbol: str = "399001", start_date: str = "20230114", end_dat
128
131
  temp_df["涨跌幅"] = temp_df["涨跌幅"].str.replace("%", "")
129
132
  temp_df["涨跌幅"] = temp_df["涨跌幅"].astype("float")
130
133
  temp_df["涨跌幅"] = temp_df["涨跌幅"] / 100
131
- temp_df.sort_values(['日期'], inplace=True, ignore_index=True)
132
- temp_df['日期'] = pd.to_datetime(temp_df['日期'], errors="coerce").dt.date
133
- temp_df['开盘价'] = pd.to_numeric(temp_df['开盘价'], errors="coerce")
134
- temp_df['最高价'] = pd.to_numeric(temp_df['最高价'], errors="coerce")
135
- temp_df['最低价'] = pd.to_numeric(temp_df['最低价'], errors="coerce")
136
- temp_df['收盘价'] = pd.to_numeric(temp_df['收盘价'], errors="coerce")
137
- temp_df['涨跌幅'] = pd.to_numeric(temp_df['涨跌幅'], errors="coerce")
138
- temp_df['成交量'] = pd.to_numeric(temp_df['成交量'], errors="coerce")
139
- temp_df['成交额'] = pd.to_numeric(temp_df['成交额'], errors="coerce")
134
+ temp_df.sort_values(["日期"], inplace=True, ignore_index=True)
135
+ temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
136
+ temp_df["开盘价"] = pd.to_numeric(temp_df["开盘价"], errors="coerce")
137
+ temp_df["最高价"] = pd.to_numeric(temp_df["最高价"], errors="coerce")
138
+ temp_df["最低价"] = pd.to_numeric(temp_df["最低价"], errors="coerce")
139
+ temp_df["收盘价"] = pd.to_numeric(temp_df["收盘价"], errors="coerce")
140
+ temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce")
141
+ temp_df["成交量"] = pd.to_numeric(temp_df["成交量"], errors="coerce")
142
+ temp_df["成交额"] = pd.to_numeric(temp_df["成交额"], errors="coerce")
140
143
  return temp_df
141
144
 
142
145
 
143
- def index_detail_cni(symbol: str = '399005', date: str = '202011') -> pd.DataFrame:
146
+ def index_detail_cni(symbol: str = "399001") -> pd.DataFrame:
144
147
  """
145
148
  国证指数-样本详情-指定日期的样本成份
146
- http://www.cnindex.com.cn/module/index-detail.html?act_menu=1&indexCode=399001
149
+ https://www.cnindex.com.cn/module/index-detail.html?act_menu=1&indexCode=399001
147
150
  :param symbol: 指数代码
148
151
  :type symbol: str
149
- :param date: 指定月份
150
- :type date: str
151
152
  :return: 指定日期的样本成份
152
153
  :rtype: pandas.DataFrame
153
154
  """
154
- url = 'http://www.cnindex.com.cn/sample-detail/download'
155
- params = {
156
- 'indexcode': symbol,
157
- 'dateStr': '-'.join([date[:4], date[4:]])
158
- }
155
+ import warnings
156
+ warnings.simplefilter(action="ignore", category=UserWarning)
157
+ url = "https://www.cnindex.com.cn/sample-detail/download-history"
158
+ params = {"indexcode": symbol}
159
159
  r = requests.get(url, params=params)
160
160
  temp_df = pd.read_excel(BytesIO(r.content))
161
- temp_df['样本代码'] = temp_df['样本代码'].astype(str).str.zfill(6)
161
+ temp_df["样本代码"] = temp_df["样本代码"].astype(str).str.zfill(6)
162
162
  temp_df.columns = [
163
- '日期',
164
- '样本代码',
165
- '样本简称',
166
- '所属行业',
167
- '自由流通市值',
168
- '总市值',
169
- '权重',
163
+ "日期",
164
+ "样本代码",
165
+ "样本简称",
166
+ "所属行业",
167
+ "总市值",
168
+ "权重",
170
169
  ]
171
- temp_df['自由流通市值'] = pd.to_numeric(temp_df['自由流通市值'], errors="coerce")
172
- temp_df['总市值'] = pd.to_numeric(temp_df['总市值'], errors="coerce")
173
- temp_df['权重'] = pd.to_numeric(temp_df['权重'], errors="coerce")
170
+ temp_df["总市值"] = pd.to_numeric(temp_df["总市值"], errors="coerce")
171
+ temp_df["权重"] = pd.to_numeric(temp_df["权重"], errors="coerce")
174
172
  return temp_df
175
173
 
176
174
 
177
- def index_detail_hist_cni(symbol: str = '399001', date: str = "") -> pd.DataFrame:
175
+ def index_detail_hist_cni(symbol: str = "399001", date: str = "") -> pd.DataFrame:
178
176
  """
179
177
  国证指数-样本详情-历史样本
180
178
  http://www.cnindex.com.cn/module/index-detail.html?act_menu=1&indexCode=399001
181
- :param date: 指数代码
182
- :type date: str
183
- :param symbol: 指数代码
179
+ :param symbol: 指数代码; "399001"
184
180
  :type symbol: str
181
+ :param date: 指定月份; "202201", 为空返回所有数据
182
+ :type date: str
185
183
  :return: 历史样本
186
184
  :rtype: pandas.DataFrame
187
185
  """
188
186
  if date:
189
- url = 'http://www.cnindex.com.cn/sample-detail/detail'
187
+ url = "http://www.cnindex.com.cn/sample-detail/detail"
190
188
  params = {
191
- 'indexcode': symbol,
192
- 'dateStr': '-'.join([date[:4], date[4:]]),
193
- 'pageNum': '1',
194
- 'rows': '50000',
189
+ "indexcode": symbol,
190
+ "dateStr": "-".join([date[:4], date[4:]]),
191
+ "pageNum": "1",
192
+ "rows": "50000",
195
193
  }
196
194
  r = requests.get(url, params=params)
197
195
  data_json = r.json()
198
- temp_df = pd.DataFrame(data_json['data']['rows'])
196
+ temp_df = pd.DataFrame(data_json["data"]["rows"])
199
197
  temp_df.columns = [
200
- '-',
201
- '-',
202
- '日期',
203
- '样本代码',
204
- '样本简称',
205
- '所属行业',
206
- '-',
207
- '自由流通市值',
208
- '总市值',
209
- '权重',
210
- '-',
198
+ "-",
199
+ "-",
200
+ "日期",
201
+ "样本代码",
202
+ "样本简称",
203
+ "所属行业",
204
+ "-",
205
+ "总市值",
206
+ "权重",
207
+ "-",
208
+ ]
209
+ temp_df = temp_df[
210
+ [
211
+ "日期",
212
+ "样本代码",
213
+ "样本简称",
214
+ "所属行业",
215
+ "总市值",
216
+ "权重",
217
+ ]
211
218
  ]
212
- temp_df = temp_df[[
213
- '日期',
214
- '样本代码',
215
- '样本简称',
216
- '所属行业',
217
- '自由流通市值',
218
- '总市值',
219
- '权重',
220
- ]]
221
219
  else:
222
- url = 'http://www.cnindex.com.cn/sample-detail/download-history'
223
- params = {
224
- 'indexcode': symbol
225
- }
220
+ url = "http://www.cnindex.com.cn/sample-detail/download-history"
221
+ params = {"indexcode": symbol}
226
222
  r = requests.get(url, params=params)
227
223
  temp_df = pd.read_excel(BytesIO(r.content))
228
- temp_df['样本代码'] = temp_df['样本代码'].astype(str).str.zfill(6)
224
+ temp_df["样本代码"] = temp_df["样本代码"].astype(str).str.zfill(6)
229
225
  temp_df.columns = [
230
- '日期',
231
- '样本代码',
232
- '样本简称',
233
- '所属行业',
234
- '自由流通市值',
235
- '总市值',
236
- '权重',
226
+ "日期",
227
+ "样本代码",
228
+ "样本简称",
229
+ "所属行业",
230
+ "总市值",
231
+ "权重",
237
232
  ]
238
- temp_df['自由流通市值'] = pd.to_numeric(temp_df['自由流通市值'])
239
- temp_df['总市值'] = pd.to_numeric(temp_df['总市值'])
240
- temp_df['权重'] = pd.to_numeric(temp_df['权重'])
233
+ temp_df["总市值"] = pd.to_numeric(temp_df["总市值"])
234
+ temp_df["权重"] = pd.to_numeric(temp_df["权重"])
241
235
  return temp_df
242
236
 
243
237
 
244
- def index_detail_hist_adjust_cni(symbol: str = '399005') -> pd.DataFrame:
238
+ def index_detail_hist_adjust_cni(symbol: str = "399005") -> pd.DataFrame:
245
239
  """
246
240
  国证指数-样本详情-历史调样
247
241
  http://www.cnindex.com.cn/module/index-detail.html?act_menu=1&indexCode=399005
@@ -250,16 +244,18 @@ def index_detail_hist_adjust_cni(symbol: str = '399005') -> pd.DataFrame:
250
244
  :return: 历史调样
251
245
  :rtype: pandas.DataFrame
252
246
  """
253
- url = 'http://www.cnindex.com.cn/sample-detail/download-adjustment'
254
- params = {
255
- 'indexcode': symbol
256
- }
247
+ url = "http://www.cnindex.com.cn/sample-detail/download-adjustment"
248
+ params = {"indexcode": symbol}
257
249
  r = requests.get(url, params=params)
258
250
  try:
259
- temp_df = pd.read_excel(BytesIO(r.content), engine="openpyxl")
260
- except zipfile.BadZipFile as e:
251
+ import warnings
252
+
253
+ with warnings.catch_warnings():
254
+ warnings.simplefilter(action="ignore", category=UserWarning)
255
+ temp_df = pd.read_excel(BytesIO(r.content), engine="openpyxl")
256
+ except zipfile.BadZipFile:
261
257
  return pd.DataFrame()
262
- temp_df['样本代码'] = temp_df['样本代码'].astype(str).str.zfill(6)
258
+ temp_df["样本代码"] = temp_df["样本代码"].astype(str).str.zfill(6)
263
259
  return temp_df
264
260
 
265
261
 
@@ -267,14 +263,16 @@ if __name__ == "__main__":
267
263
  index_all_cni_df = index_all_cni()
268
264
  print(index_all_cni_df)
269
265
 
270
- index_hist_cni_df = index_hist_cni(symbol="399005", start_date="20230114", end_date="20240114")
266
+ index_hist_cni_df = index_hist_cni(
267
+ symbol="399005", start_date="20230114", end_date="20240114"
268
+ )
271
269
  print(index_hist_cni_df)
272
270
 
273
- index_detail_cni_df = index_detail_cni(symbol='399001', date='202011')
271
+ index_detail_cni_df = index_detail_cni(symbol="399001")
274
272
  print(index_detail_cni_df)
275
273
 
276
- index_detail_hist_cni_df = index_detail_hist_cni(symbol='399005', date='202201')
274
+ index_detail_hist_cni_df = index_detail_hist_cni(symbol="399101", date="202404")
277
275
  print(index_detail_hist_cni_df)
278
276
 
279
- index_detail_hist_adjust_cni_df = index_detail_hist_adjust_cni(symbol='399005')
277
+ index_detail_hist_adjust_cni_df = index_detail_hist_adjust_cni(symbol="399005")
280
278
  print(index_detail_hist_adjust_cni_df)