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
@@ -5,6 +5,7 @@ Date: 2023/12/12 16:30
5
5
  Desc: 基金评级
6
6
  https://fund.eastmoney.com/data/fundrating.html
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
  from bs4 import BeautifulSoup
@@ -19,8 +20,8 @@ def fund_rating_all() -> pd.DataFrame:
19
20
  """
20
21
  url = "https://fund.eastmoney.com/data/fundrating.html"
21
22
  r = requests.get(url)
22
- soup = BeautifulSoup(r.text, "lxml")
23
- data_text = soup.find("div", attrs={"id": "fundinfo"}).find("script").string
23
+ soup = BeautifulSoup(r.text, features="lxml")
24
+ data_text = soup.find(name="div", attrs={"id": "fundinfo"}).find("script").string
24
25
  data_content = [
25
26
  item.split("|")
26
27
  for item in data_text.split("var")[6]
@@ -47,7 +48,7 @@ def fund_rating_all() -> pd.DataFrame:
47
48
  "-",
48
49
  "上海证券",
49
50
  "-",
50
- "-",
51
+ "晨星评级",
51
52
  "-",
52
53
  "济安金信",
53
54
  "-",
@@ -71,6 +72,7 @@ def fund_rating_all() -> pd.DataFrame:
71
72
  "上海证券",
72
73
  "招商证券",
73
74
  "济安金信",
75
+ "晨星评级",
74
76
  "手续费",
75
77
  "类型",
76
78
  ]
@@ -79,7 +81,10 @@ def fund_rating_all() -> pd.DataFrame:
79
81
  temp_df["上海证券"] = pd.to_numeric(temp_df["上海证券"], errors="coerce")
80
82
  temp_df["招商证券"] = pd.to_numeric(temp_df["招商证券"], errors="coerce")
81
83
  temp_df["济安金信"] = pd.to_numeric(temp_df["济安金信"], errors="coerce")
82
- temp_df["手续费"] = pd.to_numeric(temp_df["手续费"].str.strip("%"), errors="coerce") / 100
84
+ temp_df["晨星评级"] = pd.to_numeric(temp_df["晨星评级"], errors="coerce")
85
+ temp_df["手续费"] = (
86
+ pd.to_numeric(temp_df["手续费"].str.strip("%"), errors="coerce") / 100
87
+ )
83
88
  return temp_df
84
89
 
85
90
 
@@ -161,10 +166,18 @@ def fund_rating_sh(date: str = "20230630") -> pd.DataFrame:
161
166
  ]
162
167
  ]
163
168
  temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
164
- temp_df["3年期评级-3年评级"] = pd.to_numeric(temp_df["3年期评级-3年评级"], errors="coerce")
165
- temp_df["3年期评级-较上期"] = pd.to_numeric(temp_df["3年期评级-较上期"], errors="coerce")
166
- temp_df["5年期评级-5年评级"] = pd.to_numeric(temp_df["5年期评级-5年评级"], errors="coerce")
167
- temp_df["5年期评级-较上期"] = pd.to_numeric(temp_df["5年期评级-较上期"], errors="coerce")
169
+ temp_df["3年期评级-3年评级"] = pd.to_numeric(
170
+ temp_df["3年期评级-3年评级"], errors="coerce"
171
+ )
172
+ temp_df["3年期评级-较上期"] = pd.to_numeric(
173
+ temp_df["3年期评级-较上期"], errors="coerce"
174
+ )
175
+ temp_df["5年期评级-5年评级"] = pd.to_numeric(
176
+ temp_df["5年期评级-5年评级"], errors="coerce"
177
+ )
178
+ temp_df["5年期评级-较上期"] = pd.to_numeric(
179
+ temp_df["5年期评级-较上期"], errors="coerce"
180
+ )
168
181
  temp_df["单位净值"] = pd.to_numeric(temp_df["单位净值"], errors="coerce")
169
182
  temp_df["日增长率"] = pd.to_numeric(temp_df["日增长率"], errors="coerce")
170
183
  temp_df["近1年涨幅"] = pd.to_numeric(temp_df["近1年涨幅"], errors="coerce")
@@ -246,8 +259,12 @@ def fund_rating_zs(date: str = "20230331") -> pd.DataFrame:
246
259
  ]
247
260
  ]
248
261
  temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
249
- temp_df["3年期评级-3年评级"] = pd.to_numeric(temp_df["3年期评级-3年评级"], errors="coerce")
250
- temp_df["3年期评级-较上期"] = pd.to_numeric(temp_df["3年期评级-较上期"], errors="coerce")
262
+ temp_df["3年期评级-3年评级"] = pd.to_numeric(
263
+ temp_df["3年期评级-3年评级"], errors="coerce"
264
+ )
265
+ temp_df["3年期评级-较上期"] = pd.to_numeric(
266
+ temp_df["3年期评级-较上期"], errors="coerce"
267
+ )
251
268
  temp_df["单位净值"] = pd.to_numeric(temp_df["单位净值"], errors="coerce")
252
269
  temp_df["日增长率"] = pd.to_numeric(temp_df["日增长率"], errors="coerce")
253
270
  temp_df["近1年涨幅"] = pd.to_numeric(temp_df["近1年涨幅"], errors="coerce")
@@ -330,8 +347,12 @@ def fund_rating_ja(date: str = "20230331") -> pd.DataFrame:
330
347
  ]
331
348
  ]
332
349
  temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
333
- temp_df["3年期评级-3年评级"] = pd.to_numeric(temp_df["3年期评级-3年评级"], errors="coerce")
334
- temp_df["3年期评级-较上期"] = pd.to_numeric(temp_df["3年期评级-较上期"], errors="coerce")
350
+ temp_df["3年期评级-3年评级"] = pd.to_numeric(
351
+ temp_df["3年期评级-3年评级"], errors="coerce"
352
+ )
353
+ temp_df["3年期评级-较上期"] = pd.to_numeric(
354
+ temp_df["3年期评级-较上期"], errors="coerce"
355
+ )
335
356
  temp_df["单位净值"] = pd.to_numeric(temp_df["单位净值"], errors="coerce")
336
357
  temp_df["日增长率"] = pd.to_numeric(temp_df["日增长率"], errors="coerce")
337
358
  temp_df["近1年涨幅"] = pd.to_numeric(temp_df["近1年涨幅"], errors="coerce")
@@ -5,6 +5,7 @@ Date: 2023/10/27 20:30
5
5
  Desc: 天天基金网-基金数据-规模份额
6
6
  https://fund.eastmoney.com/data/cyrjglist.html
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
@@ -29,14 +30,14 @@ def fund_scale_change_em() -> pd.DataFrame:
29
30
  }
30
31
  r = requests.get(url, params=params)
31
32
  data_text = r.text
32
- data_json = demjson.decode(data_text[data_text.find("{"): -1])
33
+ data_json = demjson.decode(data_text[data_text.find("{") : -1])
33
34
  total_page = data_json["pages"]
34
35
  big_df = pd.DataFrame()
35
36
  for page in range(1, int(total_page) + 1):
36
37
  params.update({"pi": page})
37
38
  r = requests.get(url, params=params)
38
39
  data_text = r.text
39
- data_json = demjson.decode(data_text[data_text.find("{"): -1])
40
+ data_json = demjson.decode(data_text[data_text.find("{") : -1])
40
41
  temp_df = pd.DataFrame(data_json["data"])
41
42
  big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
42
43
  big_df.reset_index(inplace=True)
@@ -52,10 +53,18 @@ def fund_scale_change_em() -> pd.DataFrame:
52
53
  ]
53
54
  big_df["截止日期"] = pd.to_datetime(big_df["截止日期"], errors="coerce").dt.date
54
55
  big_df["基金家数"] = pd.to_numeric(big_df["基金家数"], errors="coerce")
55
- big_df["期间申购"] = pd.to_numeric(big_df["期间申购"].str.replace(",", ""), errors="coerce")
56
- big_df["期间赎回"] = pd.to_numeric(big_df["期间赎回"].str.replace(",", ""), errors="coerce")
57
- big_df["期末总份额"] = pd.to_numeric(big_df["期末总份额"].str.replace(",", ""), errors="coerce")
58
- big_df["期末净资产"] = pd.to_numeric(big_df["期末净资产"].str.replace(",", ""), errors="coerce")
56
+ big_df["期间申购"] = pd.to_numeric(
57
+ big_df["期间申购"].str.replace(",", ""), errors="coerce"
58
+ )
59
+ big_df["期间赎回"] = pd.to_numeric(
60
+ big_df["期间赎回"].str.replace(",", ""), errors="coerce"
61
+ )
62
+ big_df["期末总份额"] = pd.to_numeric(
63
+ big_df["期末总份额"].str.replace(",", ""), errors="coerce"
64
+ )
65
+ big_df["期末净资产"] = pd.to_numeric(
66
+ big_df["期末净资产"].str.replace(",", ""), errors="coerce"
67
+ )
59
68
  return big_df
60
69
 
61
70
 
@@ -77,14 +86,14 @@ def fund_hold_structure_em() -> pd.DataFrame:
77
86
  }
78
87
  r = requests.get(url, params=params)
79
88
  data_text = r.text
80
- data_json = demjson.decode(data_text[data_text.find("{"): -1])
89
+ data_json = demjson.decode(data_text[data_text.find("{") : -1])
81
90
  total_page = data_json["pages"]
82
91
  big_df = pd.DataFrame()
83
92
  for page in range(1, int(total_page) + 1):
84
93
  params.update({"pi": page})
85
94
  r = requests.get(url, params=params)
86
95
  data_text = r.text
87
- data_json = demjson.decode(data_text[data_text.find("{"): -1])
96
+ data_json = demjson.decode(data_text[data_text.find("{") : -1])
88
97
  temp_df = pd.DataFrame(data_json["data"])
89
98
  big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
90
99
  big_df.reset_index(inplace=True)
@@ -93,17 +102,19 @@ def fund_hold_structure_em() -> pd.DataFrame:
93
102
  "序号",
94
103
  "截止日期",
95
104
  "基金家数",
96
- '机构持有比列',
97
- '个人持有比列',
98
- '内部持有比列',
99
- '总份额',
105
+ "机构持有比列",
106
+ "个人持有比列",
107
+ "内部持有比列",
108
+ "总份额",
100
109
  ]
101
110
  big_df["截止日期"] = pd.to_datetime(big_df["截止日期"], errors="coerce").dt.date
102
111
  big_df["基金家数"] = pd.to_numeric(big_df["基金家数"], errors="coerce")
103
112
  big_df["机构持有比列"] = pd.to_numeric(big_df["机构持有比列"], errors="coerce")
104
113
  big_df["个人持有比列"] = pd.to_numeric(big_df["个人持有比列"], errors="coerce")
105
114
  big_df["内部持有比列"] = pd.to_numeric(big_df["内部持有比列"], errors="coerce")
106
- big_df["总份额"] = pd.to_numeric(big_df["总份额"].str.replace(",", ""), errors="coerce")
115
+ big_df["总份额"] = pd.to_numeric(
116
+ big_df["总份额"].str.replace(",", ""), errors="coerce"
117
+ )
107
118
  return big_df
108
119
 
109
120
 
@@ -1,10 +1,11 @@
1
1
  # -*- coding:utf-8 -*-
2
2
  # !/usr/bin/env python
3
3
  """
4
- Date: 2023/11/7 18:30
4
+ Date: 2024/9/1 16:20
5
5
  Desc: 新浪财经-基金规模
6
6
  https://vip.stock.finance.sina.com.cn/fund_center/index.html#jjgmall
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
@@ -27,7 +28,10 @@ def fund_scale_open_sina(symbol: str = "股票型基金") -> pd.DataFrame:
27
28
  "货币型基金": "5",
28
29
  "QDII基金": "6",
29
30
  }
30
- url = "http://vip.stock.finance.sina.com.cn/fund_center/data/jsonp.php/IO.XSRV2.CallbackList['J2cW8KXheoWKdSHc']/NetValueReturn_Service.NetValueReturnOpen"
31
+ url = (
32
+ "http://vip.stock.finance.sina.com.cn/fund_center/data/jsonp.php/IO.XSRV2."
33
+ "CallbackList['J2cW8KXheoWKdSHc']/NetValueReturn_Service.NetValueReturnOpen"
34
+ )
31
35
  params = {
32
36
  "page": "1",
33
37
  "num": "10000",
@@ -39,7 +43,7 @@ def fund_scale_open_sina(symbol: str = "股票型基金") -> pd.DataFrame:
39
43
  }
40
44
  r = requests.get(url, params=params)
41
45
  data_text = r.text
42
- data_json = demjson.decode(data_text[data_text.find("({") + 1: -2])
46
+ data_json = demjson.decode(data_text[data_text.find("({") + 1 : -2])
43
47
  temp_df = pd.DataFrame(data_json["data"])
44
48
  temp_df.reset_index(inplace=True)
45
49
  temp_df["index"] = range(1, len(temp_df) + 1)
@@ -95,19 +99,22 @@ def fund_scale_close_sina() -> pd.DataFrame:
95
99
  :return: 基金规模
96
100
  :rtype: pandas.DataFrame
97
101
  """
98
- url = "http://vip.stock.finance.sina.com.cn/fund_center/data/jsonp.php/IO.XSRV2.CallbackList['_bjN6KvXOkfPy2Bu']/NetValueReturn_Service.NetValueReturnClose"
102
+ url = (
103
+ "http://vip.stock.finance.sina.com.cn/fund_center/data/jsonp.php/IO.XSRV2."
104
+ "CallbackList['_bjN6KvXOkfPy2Bu']/NetValueReturn_Service.NetValueReturnClose"
105
+ )
99
106
  params = {
100
107
  "page": "1",
101
108
  "num": "1000",
102
109
  "sort": "zmjgm",
103
110
  "asc": "0",
104
111
  "ccode": "",
105
- "type2": '',
112
+ "type2": "",
106
113
  "type3": "",
107
114
  }
108
115
  r = requests.get(url, params=params)
109
116
  data_text = r.text
110
- data_json = demjson.decode(data_text[data_text.find("({") + 1: -2])
117
+ data_json = demjson.decode(data_text[data_text.find("({") + 1 : -2])
111
118
  temp_df = pd.DataFrame(data_json["data"])
112
119
  temp_df.reset_index(inplace=True)
113
120
  temp_df["index"] = range(1, len(temp_df) + 1)
@@ -163,19 +170,22 @@ def fund_scale_structured_sina() -> pd.DataFrame:
163
170
  :return: 基金规模
164
171
  :rtype: pandas.DataFrame
165
172
  """
166
- url = "http://vip.stock.finance.sina.com.cn/fund_center/data/jsonp.php/IO.XSRV2.CallbackList['cRrwseM7NWX68rDa']/NetValueReturn_Service.NetValueReturnCX"
173
+ url = (
174
+ "http://vip.stock.finance.sina.com.cn/fund_center/data/jsonp.php/IO.XSRV2."
175
+ "CallbackList['cRrwseM7NWX68rDa']/NetValueReturn_Service.NetValueReturnCX"
176
+ )
167
177
  params = {
168
178
  "page": "1",
169
179
  "num": "1000",
170
180
  "sort": "zmjgm",
171
181
  "asc": "0",
172
182
  "ccode": "",
173
- "type2": '',
183
+ "type2": "",
174
184
  "type3": "",
175
185
  }
176
186
  r = requests.get(url, params=params)
177
187
  data_text = r.text
178
- data_json = demjson.decode(data_text[data_text.find("({") + 1: -2])
188
+ data_json = demjson.decode(data_text[data_text.find("({") + 1 : -2])
179
189
  temp_df = pd.DataFrame(data_json["data"])
180
190
  temp_df.reset_index(inplace=True)
181
191
  temp_df["index"] = range(1, len(temp_df) + 1)
@@ -234,5 +244,5 @@ if __name__ == "__main__":
234
244
  fund_scale_structured_sina_df = fund_scale_structured_sina()
235
245
  print(fund_scale_structured_sina_df)
236
246
 
237
- fund_scale_open_sina_df = fund_scale_open_sina(symbol='股票型基金')
247
+ fund_scale_open_sina_df = fund_scale_open_sina(symbol="股票型基金")
238
248
  print(fund_scale_open_sina_df)
akshare/fund/fund_xq.py CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/01/16 23:40
4
+ Date: 2024/10/27 22:30
5
5
  Desc: 雪球基金-基金详情
6
6
  https://danjuanfunds.com/funding/003545
7
7
  """
@@ -25,7 +25,8 @@ def fund_individual_basic_info_xq(
25
25
  """
26
26
  url = f"https://danjuanfunds.com/djapi/fund/{symbol}"
27
27
  headers = {
28
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
28
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
29
+ "Chrome/80.0.3987.149 Safari/537.36"
29
30
  }
30
31
  r = requests.get(url, headers=headers, timeout=timeout)
31
32
  json_data = r.json()["data"]
akshare/futures/cons.py CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2023/1/12 16:58
4
+ Date: 2025/7/21 15:00
5
5
  Desc: 期货配置文件
6
6
  """
7
7
 
@@ -11,8 +11,92 @@ import os
11
11
  import pickle
12
12
  import re
13
13
 
14
+
15
+ futures_inventory_em_symbol_dict = {
16
+ "a": "A", # 豆一
17
+ "ag": "AG", # 沪银
18
+ "al": "AL", # 沪铝
19
+ "ao": "AO", # 氧化铝
20
+ "AP": "AP", # 苹果
21
+ "au": "AU", # 沪金
22
+ "b": "B", # 豆二
23
+ "bb": None, # 胶合板 (new中没有对应)
24
+ "bc": None, # 国际铜 (new中没有对应)
25
+ "br": "BR", # BR橡胶
26
+ "bu": "BU", # 沥青
27
+ "c": "C", # 玉米
28
+ "CF": "CF", # 棉花/郑棉
29
+ "CJ": "CJ", # 红枣
30
+ "cs": "CS", # 淀粉/玉米淀粉
31
+ "cu": "CU", # 沪铜
32
+ "CY": "CY", # 棉纱
33
+ "eb": "EB", # 苯乙烯
34
+ "ec": "ec", # 集运欧线/集运指数(欧线)
35
+ "eg": "EG", # 乙二醇
36
+ "fb": None, # 纤维板 (new中没有对应)
37
+ "FG": "FG", # 玻璃
38
+ "fu": "FU", # 燃料油/燃油
39
+ "hc": "HC", # 热卷
40
+ "i": "I", # 铁矿石
41
+ "IC": "IC", # 中证500
42
+ "IF": "IF", # 沪深300
43
+ "IH": "IH", # 上证50
44
+ "IM": "IM", # 中证1000
45
+ "j": "J", # 焦炭
46
+ "jd": "JD", # 鸡蛋
47
+ "jm": "JM", # 焦煤
48
+ "JR": None, # 粳稻 (new中没有对应)
49
+ "l": "L", # 塑料
50
+ "lc": "lc", # 碳酸锂
51
+ "lh": "LH", # 生猪
52
+ "LR": None, # 晚籼稻 (new中没有对应)
53
+ "lu": "lu", # LU燃油/低硫燃料油
54
+ "m": "M", # 豆粕
55
+ "MA": "MA", # 甲醇
56
+ "ni": "NI", # 沪镍/镍
57
+ "nr": "nr", # 20号胶
58
+ "OI": "OI", # 菜籽油/菜油
59
+ "p": "P", # 棕榈油/棕榈
60
+ "pb": "PB", # 沪铅
61
+ "PF": "PF", # 短纤
62
+ "pg": "PG", # 液化气/液化石油气
63
+ "PK": "PK", # 花生
64
+ "PM": None, # 普麦 (new中没有对应)
65
+ "pp": "PP", # 聚丙烯
66
+ "PX": "PX", # 对二甲苯
67
+ "rb": "RB", # 螺纹钢
68
+ "RI": None, # 早籼稻 (new中没有对应)
69
+ "RM": "RM", # 菜籽粕/菜粕
70
+ "rr": None, # 粳米 (new中没有对应)
71
+ "RS": "RS", # 油菜籽/菜籽
72
+ "ru": "RU", # 橡胶
73
+ "SA": "SA", # 纯碱
74
+ "sc": None, # 原油 (new中没有对应)
75
+ "SF": "SF", # 硅铁
76
+ "SH": "SH", # 烧碱
77
+ "si": "si", # 工业硅
78
+ "SM": "SM", # 锰硅
79
+ "sn": "SN", # 沪锡/锡
80
+ "sp": "SP", # 纸浆
81
+ "SR": "SR", # 白糖
82
+ "ss": "SS", # 不锈钢
83
+ "T": "T", # 十年国债/10年期国债
84
+ "TA": "TA", # PTA
85
+ "TF": "TF", # 五年国债/5年期国债
86
+ "TL": "TL", # 三十年国债/30年期国债期货
87
+ "TS": "TS", # 二年国债/2年期国债
88
+ "UR": "UR", # 尿素
89
+ "v": "V", # PVC
90
+ "WH": None, # 强麦 (new中没有对应)
91
+ "wr": None, # 线材 (new中没有对应)
92
+ "y": "Y", # 豆油
93
+ "ZC": None, # 动力煤 (new中没有对应)
94
+ "zn": "ZN", # 沪锌
95
+ }
96
+
14
97
  hq_sina_spot_headers = {
15
- "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
98
+ "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,"
99
+ "image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
16
100
  "Accept-Encoding": "gzip, deflate",
17
101
  "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
18
102
  "Cache-Control": "no-cache",
@@ -21,14 +105,18 @@ hq_sina_spot_headers = {
21
105
  "Pragma": "no-cache",
22
106
  "Referer": "https://finance.sina.com.cn/futuremarket/",
23
107
  "Upgrade-Insecure-Requests": "1",
24
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36",
108
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
109
+ "(KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36",
25
110
  }
26
111
 
27
112
  # zh_sina_spot
28
113
  zh_subscribe_exchange_symbol_url = (
29
114
  "http://vip.stock.finance.sina.com.cn/quotes_service/view/js/qihuohangqing.js"
30
115
  )
31
- zh_match_main_contract_url = "http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQFuturesData"
116
+ zh_match_main_contract_url = (
117
+ "http://vip.stock.finance.sina.com.cn/quotes_service/"
118
+ "api/json_v2.php/Market_Center.getHQFuturesData"
119
+ )
32
120
  zh_match_main_contract_payload = {
33
121
  "page": "1",
34
122
  "num": "5",
@@ -48,7 +136,8 @@ zh_sina_spot_headers = {
48
136
  "Referer": "https://finance.sina.com.cn/futuremarket/",
49
137
  "Sec-Fetch-Mode": "no-cors",
50
138
  "Sec-Fetch-Site": "cross-site",
51
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36",
139
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
140
+ "Chrome/78.0.3904.97 Safari/537.36",
52
141
  }
53
142
 
54
143
  # 99 期货
@@ -58,36 +147,20 @@ inventory_temp_headers = {
58
147
  "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
59
148
  "Connection": "keep-alive",
60
149
  "Content-Type": "application/x-www-form-urlencoded",
61
- "Cookie": "UM_distinctid=16c378978de5cc-02cfeac5f7869b-c343162-1fa400-16c378978df8d7; __utmz=181566328.1570520149.3.2.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; ASP.NET_SessionId=wj5gxuzl3fvvr25503tquq55; __utmc=181566328; _fxaid=1D9A634AB9F5D0265856F7E85E7BC196%1D%2BOOl1inxPE7181fmKs5HCs%2BdLO%2Fq%2FbSvf46UVjo%2BE7w%3D%1DPYphpUa9OlzWUzatrOQTXLPOVillbwMhTIJas%2ByfkyVL2Hd5XA1GOSslksqDkMTccXvQ2duLNsc0CHT4789JrYNbakJrpzrxLnwtBC5GCTssKHGEpor6EwAZfWJgBUlCs4JYFcGUnh3jIO69A4LsOlRMOGf4c9cd%2FbohSjTx3VA%3D; __utma=181566328.1348268634.1564299852.1571066568.1571068391.7; tgw_l7_route=eb1311426274fc07631b2135a6431f7d; __utmt=1; __utmb=181566328.7.10.1571068391",
150
+ "Cookie": "UM_distinctid=16c378978de5cc-02cfeac5f7869b-c343162-1fa400-16c378978df8d7; "
151
+ "__utmz=181566328.1570520149.3.2.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; "
152
+ "ASP.NET_SessionId=wj5gxuzl3fvvr25503tquq55; __utmc=181566328; _fxaid=1D9A634AB9F5D026585"
153
+ "6F7E85E7BC196%1D%2BOOl1inxPE7181fmKs5HCs%2BdLO%2Fq%2FbSvf46UVjo%2BE7w%3D%1DPYphpUa9OlzW"
154
+ "UzatrOQTXLPOVillbwMhTIJas%2ByfkyVL2Hd5XA1GOSslksqDkMTccXvQ2duLNsc0CHT4789JrYNbakJrpzrxL"
155
+ "nwtBC5GCTssKHGEpor6EwAZfWJgBUlCs4JYFcGUnh3jIO69A4LsOlRMOGf4c9cd%2FbohSjTx3VA%3D; __utma"
156
+ "=181566328.1348268634.1564299852.1571066568.1571068391.7; tgw_l7_route=eb1311426274fc07"
157
+ "631b2135a6431f7d; __utmt=1; __utmb=181566328.7.10.1571068391",
62
158
  "Host": "service.99qh.com",
63
159
  "Referer": "http://service.99qh.com/Storage/Storage.aspx?page=99qh",
64
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
65
- }
66
-
67
- sample_headers = {
68
- "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
69
- "Host": "service.99qh.com",
70
- "Origin": "http://service.99qh.com",
71
- "Referer": "http://www.99qh.com/d/store.aspx",
72
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
160
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
161
+ "(KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
73
162
  }
74
163
 
75
- qh_headers = {
76
- "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
77
- "Accept-Encoding": "gzip, deflate",
78
- "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
79
- "Cache-Control": "no-cache",
80
- "Connection": "keep-alive",
81
- "Content-Length": "8429",
82
- "Content-Type": "application/x-www-form-urlencoded",
83
- "Host": "service.99qh.com",
84
- "Origin": "http://service.99qh.com",
85
- "Pragma": "no-cache",
86
- "Cookie": "__utma=181566328.985082941.1656754961.1656754961.1656754961.1; __utmc=181566328; __utmz=181566328.1656754961.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); ASP.NET_SessionId=42k0mpzfu3fv5cxqmtrwc20y; tgw_l7_route=b26adbec28f4b4e1f7290033d59c43a7; __utmt=1; __utmb=181566328.2.10.1656754961",
87
- "Referer": "http://service.99qh.com/Storage/Storage.aspx?page=99qh",
88
- "Upgrade-Insecure-Requests": "1",
89
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
90
- }
91
164
  # 奇货可查
92
165
  QHKC_INDEX_URL = "https://www.qhkch.com/ajax/index_show.php"
93
166
  QHKC_INDEX_TREND_URL = "https://qhkch.com/ajax/indexes_trend.php"
@@ -125,6 +198,8 @@ market_exchange_symbols = {
125
198
  "EB", # 20191009
126
199
  "PG",
127
200
  "LH", # 20210108 生猪期货
201
+ "LG", # 20241118 原木期货
202
+ "BZ", # 20250708 纯苯期货
128
203
  ],
129
204
  "czce": [
130
205
  "WH",
@@ -160,8 +235,9 @@ market_exchange_symbols = {
160
235
  "SA", # 纯碱期货
161
236
  "PK", # 20210201 花生期货
162
237
  "PF", # 短纤
163
- "PX", # 纯苯
238
+ "PX", # 对二甲苯
164
239
  "SH", # 烧碱
240
+ "PR", # 瓶片
165
241
  ],
166
242
  "shfe": [
167
243
  "CU",
@@ -187,8 +263,9 @@ market_exchange_symbols = {
187
263
  "AO",
188
264
  "BR",
189
265
  "EC", # 集运指数
266
+ "AD", # 铸造铝合金期货
190
267
  ],
191
- "gfex": ["SI", "LC"],
268
+ "gfex": ["SI", "LC", "PS"],
192
269
  }
193
270
 
194
271
  contract_symbols = []
@@ -200,7 +277,8 @@ headers = {
200
277
  "Cache-Control": "max-age=0",
201
278
  "Accept": "text/html, */*; q=0.01",
202
279
  "X-Requested-With": "XMLHttpRequest",
203
- "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
280
+ "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) "
281
+ "Chrome/56.0.2924.87 Safari/537.36",
204
282
  "DNT": "1",
205
283
  "Referer": "http://www.super-ping.com/?ping=www.google.com&locale=sc",
206
284
  "Accept-Encoding": "gzip, deflate, sdch",
@@ -210,7 +288,8 @@ headers = {
210
288
  shfe_headers = {"User-Agent": "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)"}
211
289
 
212
290
  dce_headers = {
213
- "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
291
+ "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,"
292
+ "*/*;q=0.8,application/signed-exchange;v=b3",
214
293
  "Accept-Encoding": "gzip, deflate",
215
294
  "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
216
295
  "Cache-Control": "max-age=0",
@@ -221,26 +300,37 @@ dce_headers = {
221
300
  "Proxy-Connection": "keep-alive",
222
301
  "Referer": "http://www.dce.com.cn/publicweb/quotesdata/weekQuotesCh.html",
223
302
  "Upgrade-Insecure-Requests": "1",
224
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
303
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
304
+ "Chrome/77.0.3865.90 Safari/537.36",
225
305
  }
226
306
 
227
307
  SYS_SPOT_PRICE_URL = "http://www.100ppi.com/sf/day-{}.html"
228
308
  SYS_SPOT_PRICE_LATEST_URL = "http://www.100ppi.com/sf/"
229
309
 
230
310
  SHFE_VOL_RANK_URL = "https://tsite.shfe.com.cn/data/dailydata/kx/pm%s.dat"
311
+ SHFE_VOL_RANK_URL_20250701 = "https://www.shfe.com.cn/data/tradedata/future/dailydata/pm%s.dat"
231
312
  CFFEX_VOL_RANK_URL = "http://www.cffex.com.cn/sj/ccpm/%s/%s/%s_1.csv"
232
- DCE_VOL_RANK_URL_1 = "http://www.dce.com.cn/publicweb/quotesdata/exportMemberDealPosiQuotesData.html?memberDealPosiQuotes.variety=%s&memberDealPosiQuotes.trade_type=0&contract.contract_id=%s&contract.variety_id=%s&year=%s&month=%s&day=%s&exportFlag=txt"
233
- DCE_VOL_RANK_URL_2 = "http://www.dce.com.cn/publicweb/quotesdata/memberDealPosiQuotes.html?memberDealPosiQuotes.variety=%s&memberDealPosiQuotes.trade_type=0&contract.contract_id=all&contract.variety_id=%s&year=%s&month=%s&day=%s"
313
+ DCE_VOL_RANK_URL_1 = (
314
+ "http://portal.dce.com.cn/publicweb/quotesdata/exportMemberDealPosiQuotesData.html?"
315
+ "memberDealPosiQuotes.variety=%s&memberDealPosiQuotes.trade_type=0&contract.cont"
316
+ "ract_id=%s&contract.variety_id=%s&year=%s&month=%s&day=%s&exportFlag=txt"
317
+ )
318
+ DCE_VOL_RANK_URL_2 = (
319
+ "http://portal.dce.com.cn/publicweb/quotesdata/memberDealPosiQuotes.html?memberDeal"
320
+ "PosiQuotes.variety=%s&memberDealPosiQuotes.trade_type=0&contract.contract_id="
321
+ "all&contract.variety_id=%s&year=%s&month=%s&day=%s"
322
+ )
234
323
  CZCE_VOL_RANK_URL_1 = "http://www.czce.com.cn/cn/exchange/jyxx/pm/pm%s.html"
235
324
  CZCE_VOL_RANK_URL_2 = "http://www.czce.com.cn/cn/exchange/%s/datatradeholding/%s.htm"
236
325
  CZCE_VOL_RANK_URL_3 = (
237
326
  "http://www.czce.com.cn/cn/DFSStaticFiles/Future/%s/%s/FutureDataHolding.htm"
238
327
  )
239
328
 
240
- DCE_RECEIPT_URL = "http://www.dce.com.cn/publicweb/quotesdata/wbillWeeklyQuotes.html"
329
+ DCE_RECEIPT_URL = "http://portal.dce.com.cn/publicweb/quotesdata/wbillWeeklyQuotes.html"
241
330
 
242
331
  SHFE_RECEIPT_URL_1 = "http://tsite.shfe.com.cn/data/dailydata/%sdailystock.html"
243
332
  SHFE_RECEIPT_URL_2 = "http://tsite.shfe.com.cn/data/dailydata/%sdailystock.dat"
333
+ SHFE_RECEIPT_URL_20250701 = "https://www.shfe.com.cn/data/tradedata/future/dailydata/%sdailystock.dat"
244
334
  CZCE_RECEIPT_URL_1 = "http://www.czce.com.cn/cn/exchange/jyxx/sheet/sheet%s.html"
245
335
  CZCE_RECEIPT_URL_2 = "http://www.czce.com.cn/cn/exchange/%s/datawhsheet/%s.htm"
246
336
  CZCE_RECEIPT_URL_3 = (
@@ -249,6 +339,7 @@ CZCE_RECEIPT_URL_3 = (
249
339
 
250
340
  CFFEX_DAILY_URL = "http://www.cffex.com.cn/fzjy/mrhq/{}/{}/{}_1.csv"
251
341
  SHFE_DAILY_URL = "http://tsite.shfe.com.cn/data/dailydata/kx/kx%s.dat"
342
+ SHFE_DAILY_URL_20250630 = "https://www.shfe.com.cn/data/tradedata/future/dailydata/kx%s.dat"
252
343
  SHFE_V_WAP_URL = "http://tsite.shfe.com.cn/data/dailydata/ck/%sdailyTimePrice.dat"
253
344
  DCE_DAILY_URL = "http://www.dce.com.cn//publicweb/quotesdata/dayQuotesCh.html"
254
345
  CZCE_DAILY_URL_1 = "http://www.czce.com.cn/cn/exchange/jyxx/hq/hq%s.html"
@@ -411,6 +502,11 @@ DCE_MAP = {
411
502
  "苯乙烯": "EB",
412
503
  "液化石油气": "PG",
413
504
  "生猪": "LH",
505
+ "原木": "LG",
506
+ "纯苯": "BZ",
507
+ "聚氯乙烯月均价": "VF",
508
+ "聚丙烯月均价": "PPF",
509
+ "聚乙烯月均价": "LF",
414
510
  }
415
511
 
416
512