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
@@ -32,7 +32,6 @@ def futures_stock_shfe_js(date: str = "20240419") -> pd.DataFrame:
32
32
  "category": "stock",
33
33
  "date": "-".join([date[:4], date[4:6], date[6:]]),
34
34
  "attr_id": "1",
35
- "_": "1708761356458",
36
35
  }
37
36
  r = requests.get(url, params=params, headers=headers)
38
37
  data_json = r.json()
@@ -259,11 +259,10 @@ def futures_delivery_czce(date: str = "20210112") -> pd.DataFrame:
259
259
  "交割数量",
260
260
  "交割额",
261
261
  ]
262
- temp_df["交割数量"] = temp_df["交割数量"].str.replace(",", "")
263
- temp_df["交割额"] = temp_df["交割额"].str.replace(",", "")
264
-
265
- temp_df["交割数量"] = pd.to_numeric(temp_df["交割数量"])
266
- temp_df["交割额"] = pd.to_numeric(temp_df["交割额"])
262
+ temp_df["交割数量"] = temp_df["交割数量"].astype(str).str.replace(",", "")
263
+ temp_df["交割额"] = temp_df["交割额"].astype(str).str.replace(",", "")
264
+ temp_df["交割数量"] = pd.to_numeric(temp_df["交割数量"], errors="coerce")
265
+ temp_df["交割额"] = pd.to_numeric(temp_df["交割额"], errors="coerce")
267
266
  return temp_df
268
267
 
269
268
 
@@ -328,7 +327,7 @@ if __name__ == "__main__":
328
327
  futures_delivery_dce_df = futures_delivery_dce(date="202101")
329
328
  print(futures_delivery_dce_df)
330
329
 
331
- futures_delivery_monthly_czce_df = futures_delivery_czce(date="20210112")
330
+ futures_delivery_monthly_czce_df = futures_delivery_czce(date="20251014")
332
331
  print(futures_delivery_monthly_czce_df)
333
332
 
334
333
  futures_delivery_shfe_df = futures_delivery_shfe(date="202312")
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/4/2 22:30
4
+ Date: 2025/7/1 16:30
5
5
  Desc: 期货-仓单日报
6
6
  上海期货交易所-仓单日报
7
7
  https://tsite.shfe.com.cn/statements/dataview.html?paramid=dailystock
@@ -20,7 +20,7 @@ import pandas as pd
20
20
  import requests
21
21
 
22
22
 
23
- def futures_czce_warehouse_receipt(date: str = "20200702") -> dict:
23
+ def futures_warehouse_receipt_czce(date: str = "20251103") -> dict:
24
24
  """
25
25
  郑州商品交易所-交易数据-仓单日报
26
26
  http://www.czce.com.cn/cn/jysj/cdrb/H770310index_1.htm
@@ -29,10 +29,15 @@ def futures_czce_warehouse_receipt(date: str = "20200702") -> dict:
29
29
  :return: 指定日期的仓单日报数据
30
30
  :rtype: dict
31
31
  """
32
- url = f"http://www.czce.com.cn/cn/DFSStaticFiles/Future/{date[:4]}/{date}/FutureDataWhsheet.xls"
32
+ import urllib3
33
+ urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
34
+ if int(date) > 20251101:
35
+ url = f"http://www.czce.com.cn/cn/DFSStaticFiles/Future/{date[:4]}/{date}/FutureDataWhsheet.xlsx"
36
+ else:
37
+ url = f"http://www.czce.com.cn/cn/DFSStaticFiles/Future/{date[:4]}/{date}/FutureDataWhsheet.xls"
33
38
  headers = {
34
39
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
35
- "Chrome/83.0.4103.116 Safari/537.36"
40
+ "Chrome/83.0.4103.116 Safari/537.36"
36
41
  }
37
42
  r = requests.get(url, verify=False, headers=headers)
38
43
  temp_df = pd.read_excel(BytesIO(r.content))
@@ -40,8 +45,8 @@ def futures_czce_warehouse_receipt(date: str = "20200702") -> dict:
40
45
  index_list.append(len(temp_df))
41
46
  big_dict = {}
42
47
  for inner_index in range(len(index_list) - 1):
43
- inner_df = temp_df[index_list[inner_index] : index_list[inner_index + 1]]
44
- inner_key = re.findall(r"[a-zA-Z]+", inner_df.iloc[0, 0])[0]
48
+ inner_df = temp_df[index_list[inner_index]: index_list[inner_index + 1]]
49
+ inner_key = re.findall(pattern=r"[a-zA-Z]+", string=inner_df.iloc[0, 0])[0]
45
50
  inner_df = inner_df.iloc[1:, :]
46
51
  inner_df.dropna(axis=0, how="all", inplace=True)
47
52
  inner_df.dropna(axis=1, how="all", inplace=True)
@@ -52,46 +57,42 @@ def futures_czce_warehouse_receipt(date: str = "20200702") -> dict:
52
57
  return big_dict
53
58
 
54
59
 
55
- def futures_dce_warehouse_receipt(date: str = "20200702") -> dict:
60
+ def futures_warehouse_receipt_dce(date: str = "20251027") -> pd.DataFrame:
56
61
  """
57
62
  大连商品交易所-行情数据-统计数据-日统计-仓单日报
58
- http://www.dce.com.cn/dalianshangpin/xqsj/tjsj26/rtj/cdrb/index.html
63
+ http://www.dce.com.cn/dce/channel/list/187.html
59
64
  :param date: 交易日, e.g., "20200702"
60
65
  :type date: str
61
66
  :return: 指定日期的仓单日报数据
62
67
  :rtype: dict
63
68
  """
64
- url = "http://www.dce.com.cn/publicweb/quotesdata/wbillWeeklyQuotes.html"
65
- headers = {
66
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
67
- "Chrome/83.0.4103.116 Safari/537.36"
69
+ url = "http://www.dce.com.cn/dcereport/publicweb/dailystat/wbillWeeklyQuotes"
70
+ payload = {
71
+ "tradeDate": date,
72
+ "varietyId": "all",
68
73
  }
69
- params = {
70
- "wbillWeeklyQuotes.variety": "all",
71
- "year": date[:4],
72
- "month": str(int(date[4:6]) - 1),
73
- "day": date[6:],
74
- }
75
- r = requests.get(url, params=params, headers=headers)
76
- temp_df = pd.read_html(StringIO(r.text))[0]
77
- index_list = temp_df[temp_df.iloc[:, 0].str.contains("小计") == 1].index.to_list()
78
- index_list.insert(0, 0)
79
- big_dict = {}
80
- for inner_index in range(len(index_list) - 1):
81
- if inner_index == 0:
82
- temp_index = 0
83
- else:
84
- temp_index = index_list[inner_index] + 1
85
- inner_df = temp_df[temp_index : index_list[inner_index + 1] + 1].copy()
86
- inner_key = inner_df.iloc[0, 0]
87
- inner_df.reset_index(inplace=True, drop=True)
88
- inner_df.ffill(inplace=True)
89
- # 填补 20240401 中开头没有品种的情况
90
- if date == "20240401":
91
- inner_df["品种"] = inner_df["品种"].fillna("玉米")
92
- inner_key = inner_df.iloc[0, 0]
93
- big_dict[inner_key] = inner_df
94
- return big_dict
74
+ r = requests.post(url, json=payload)
75
+ data_json = r.json()
76
+ temp_df = pd.DataFrame(data_json['data']['entityList'])
77
+ temp_df.rename(columns={
78
+ "variety": "品种名称",
79
+ "whAbbr": "仓库/分库",
80
+ "deliveryAbbr": "可选提货地点/分库-数量",
81
+ "lastWbillQty": "昨日仓单量(手)",
82
+ "wbillQty": "今日仓单量(手)",
83
+ "diff": "增减(手)",
84
+ "varietyOrder": "品种代码",
85
+ }, inplace=True)
86
+ temp_df = temp_df[[
87
+ "品种代码",
88
+ "品种名称",
89
+ "仓库/分库",
90
+ "可选提货地点/分库-数量",
91
+ "昨日仓单量(手)",
92
+ "今日仓单量(手)",
93
+ "增减(手)",
94
+ ]]
95
+ return temp_df
95
96
 
96
97
 
97
98
  def futures_shfe_warehouse_receipt(date: str = "20200702") -> dict:
@@ -105,9 +106,9 @@ def futures_shfe_warehouse_receipt(date: str = "20200702") -> dict:
105
106
  """
106
107
  headers = {
107
108
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
108
- "Chrome/83.0.4103.116 Safari/537.36"
109
+ "Chrome/83.0.4103.116 Safari/537.36"
109
110
  }
110
- url = f"https://tsite.shfe.com.cn/data/dailydata/{date}dailystock.dat"
111
+ url = f"https://www.shfe.com.cn/data/tradedata/future/dailydata/{date}dailystock.dat"
111
112
  if date >= "20140519":
112
113
  r = requests.get(url, headers=headers)
113
114
  data_json = r.json()
@@ -121,12 +122,12 @@ def futures_shfe_warehouse_receipt(date: str = "20200702") -> dict:
121
122
  for item in set(temp_df["VARNAME"]):
122
123
  big_dict[item] = temp_df[temp_df["VARNAME"] == item]
123
124
  else:
124
- url = f"https://tsite.shfe.com.cn/data/dailydata/{date}dailystock.html"
125
+ url = f"https://www.shfe.com.cn/data/tradedata/future/dailydata/{date}dailystock.html"
125
126
  r = requests.get(url, headers=headers)
126
127
  temp_df = pd.read_html(StringIO(r.text))[0]
127
128
  index_list = temp_df[
128
129
  temp_df.iloc[:, 3].str.contains("单位:") == 1
129
- ].index.to_list()
130
+ ].index.to_list()
130
131
  big_dict = {}
131
132
  for inner_index in range(len(index_list)):
132
133
  temp_index_start = index_list[inner_index]
@@ -159,7 +160,7 @@ def futures_gfex_warehouse_receipt(date: str = "20240122") -> dict:
159
160
  url = "http://www.gfex.com.cn/u/interfacesWebTdWbillWeeklyQuotes/loadList"
160
161
  headers = {
161
162
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
162
- "Chrome/83.0.4103.116 Safari/537.36"
163
+ "Chrome/83.0.4103.116 Safari/537.36"
163
164
  }
164
165
  payload = {"gen_date": date}
165
166
  r = requests.post(url=url, data=payload, headers=headers)
@@ -219,11 +220,11 @@ def futures_gfex_warehouse_receipt(date: str = "20240122") -> dict:
219
220
 
220
221
 
221
222
  if __name__ == "__main__":
222
- czce_warehouse_receipt_df = futures_czce_warehouse_receipt(date="20151019")
223
- print(czce_warehouse_receipt_df)
223
+ futures_warehouse_receipt_czce_df = futures_warehouse_receipt_czce(date="20251014")
224
+ print(futures_warehouse_receipt_czce_df)
224
225
 
225
- futures_dce_warehouse_receipt_df = futures_dce_warehouse_receipt(date="20240401")
226
- print(futures_dce_warehouse_receipt_df)
226
+ futures_warehouse_receipt_dce_df = futures_warehouse_receipt_dce(date="20251014")
227
+ print(futures_warehouse_receipt_dce_df)
227
228
 
228
229
  futures_shfe_warehouse_receipt_df = futures_shfe_warehouse_receipt(date="20200702")
229
230
  print(futures_shfe_warehouse_receipt_df)
@@ -88,7 +88,7 @@ def futures_symbol_mark() -> pd.DataFrame:
88
88
  return temp_df
89
89
 
90
90
 
91
- def futures_zh_realtime(symbol: str = "白糖") -> pd.DataFrame:
91
+ def futures_zh_realtime(symbol: str = "PTA") -> pd.DataFrame:
92
92
  """
93
93
  期货品种当前时刻所有可交易的合约实时数据
94
94
  https://vip.stock.finance.sina.com.cn/quotes_service/view/qihuohangqing.html#titlePos_1
@@ -612,7 +612,7 @@ def futures_zh_spot(
612
612
  return data_df
613
613
 
614
614
 
615
- def futures_zh_minute_sina(symbol: str = "IF2008", period: str = "5") -> pd.DataFrame:
615
+ def futures_zh_minute_sina(symbol: str = "IF2008", period: str = "1") -> pd.DataFrame:
616
616
  """
617
617
  中国各品种期货分钟频率数据
618
618
  https://vip.stock.finance.sina.com.cn/quotes_service/view/qihuohangqing.html#titlePos_3
@@ -704,7 +704,7 @@ if __name__ == "__main__":
704
704
  futures_zh_realtime_df = futures_zh_realtime(symbol="工业硅")
705
705
  print(futures_zh_realtime_df)
706
706
 
707
- futures_zh_minute_sina_df = futures_zh_minute_sina(symbol="SI2406", period="1")
707
+ futures_zh_minute_sina_df = futures_zh_minute_sina(symbol="RB0", period="1")
708
708
  print(futures_zh_minute_sina_df)
709
709
 
710
710
  futures_zh_daily_sina_df = futures_zh_daily_sina(symbol="RB0")