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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. akshare/__init__.py +595 -129
  2. akshare/air/air_hebei.py +77 -54
  3. akshare/air/air_zhenqi.py +0 -4
  4. akshare/air/cons.py +1 -0
  5. akshare/air/crypto.js +1 -1
  6. akshare/air/outcrypto.js +1 -1
  7. akshare/article/cons.py +1 -0
  8. akshare/article/epu_index.py +4 -3
  9. akshare/article/ff_factor.py +19 -8
  10. akshare/article/fred_md.py +4 -1
  11. akshare/article/risk_rv.py +3 -8
  12. akshare/bank/bank_cbirc_2020.py +11 -11
  13. akshare/bank/cons.py +7 -6
  14. akshare/bond/bond_buy_back_em.py +228 -0
  15. akshare/bond/bond_cb_sina.py +1 -0
  16. akshare/bond/bond_cb_ths.py +17 -9
  17. akshare/bond/bond_cbond.py +19 -14
  18. akshare/bond/bond_china.py +38 -39
  19. akshare/bond/bond_china_money.py +1 -1
  20. akshare/bond/bond_convert.py +10 -9
  21. akshare/bond/bond_em.py +37 -17
  22. akshare/bond/bond_summary.py +38 -37
  23. akshare/bond/bond_zh_cov.py +31 -40
  24. akshare/bond/bond_zh_sina.py +4 -0
  25. akshare/bond/cons.py +14 -11
  26. akshare/cal/__init__.py +0 -0
  27. akshare/cal/rv.py +170 -0
  28. akshare/cost/cost_living.py +7 -5
  29. akshare/crypto/__init__.py +1 -1
  30. akshare/crypto/crypto_bitcoin_cme.py +9 -7
  31. akshare/crypto/crypto_hold.py +4 -2
  32. akshare/currency/currency.py +1 -0
  33. akshare/currency/currency_china_bank_sina.py +11 -6
  34. akshare/data/__init__.py +1 -1
  35. akshare/data/cninfo.js +1 -1
  36. akshare/datasets.py +10 -21
  37. akshare/economic/cons.py +10 -3
  38. akshare/economic/macro_australia.py +74 -69
  39. akshare/economic/macro_bank.py +95 -653
  40. akshare/economic/macro_canada.py +92 -81
  41. akshare/economic/macro_china.py +97 -105
  42. akshare/economic/macro_china_hk.py +0 -1
  43. akshare/economic/macro_euro.py +103 -56
  44. akshare/economic/macro_finance_ths.py +7 -5
  45. akshare/economic/macro_germany.py +1 -1
  46. akshare/economic/macro_japan.py +0 -1
  47. akshare/economic/macro_other.py +1 -6
  48. akshare/economic/macro_swiss.py +2 -3
  49. akshare/economic/macro_uk.py +1 -1
  50. akshare/economic/macro_usa.py +7 -9
  51. akshare/economic/marco_cnbs.py +11 -6
  52. akshare/energy/energy_carbon.py +0 -1
  53. akshare/energy/energy_oil_em.py +1 -2
  54. akshare/event/cons.py +1 -0
  55. akshare/exceptions.py +43 -0
  56. akshare/file_fold/calendar.json +245 -2
  57. akshare/forex/__init__.py +0 -0
  58. akshare/forex/cons.py +192 -0
  59. akshare/forex/forex_em.py +149 -0
  60. akshare/fortune/fortune_500.py +1 -37
  61. akshare/fortune/fortune_bloomberg.py +6 -3
  62. akshare/fortune/fortune_forbes_500.py +3 -6
  63. akshare/fortune/fortune_hurun.py +2 -1
  64. akshare/fortune/fortune_xincaifu_500.py +17 -14
  65. akshare/fund/fund_announcement_em.py +145 -0
  66. akshare/fund/fund_aum_em.py +49 -35
  67. akshare/fund/fund_em.py +251 -220
  68. akshare/fund/fund_etf_em.py +44 -35
  69. akshare/fund/fund_etf_sina.py +75 -27
  70. akshare/fund/fund_etf_ths.py +2 -0
  71. akshare/fund/fund_fee_em.py +172 -0
  72. akshare/fund/fund_fhsp_em.py +42 -32
  73. akshare/fund/fund_init_em.py +8 -5
  74. akshare/fund/fund_lof_em.py +12 -19
  75. akshare/fund/fund_manager.py +25 -11
  76. akshare/fund/fund_overview_em.py +42 -0
  77. akshare/fund/fund_portfolio_em.py +23 -21
  78. akshare/fund/fund_position_lg.py +19 -8
  79. akshare/fund/fund_rank_em.py +2 -5
  80. akshare/fund/fund_rating.py +33 -12
  81. akshare/fund/fund_scale_em.py +24 -13
  82. akshare/fund/fund_scale_sina.py +20 -10
  83. akshare/fund/fund_xq.py +3 -2
  84. akshare/futures/cons.py +135 -39
  85. akshare/futures/cot.py +55 -56
  86. akshare/futures/futures_basis.py +49 -11
  87. akshare/futures/futures_comex_em.py +1 -0
  88. akshare/futures/futures_comm_ctp.py +1 -1
  89. akshare/futures/futures_contract_detail.py +59 -9
  90. akshare/futures/futures_daily_bar.py +66 -59
  91. akshare/futures/futures_foreign.py +14 -8
  92. akshare/futures/futures_hf_em.py +215 -61
  93. akshare/futures/futures_hist_em.py +191 -0
  94. akshare/futures/futures_hq_sina.py +5 -3
  95. akshare/futures/futures_index_ccidx.py +24 -82
  96. akshare/futures/futures_inventory_99.py +70 -272
  97. akshare/futures/futures_inventory_em.py +14 -11
  98. akshare/futures/futures_news_shmet.py +2 -2
  99. akshare/futures/futures_roll_yield.py +11 -24
  100. akshare/futures/futures_rule.py +7 -3
  101. akshare/futures/futures_rule_em.py +38 -0
  102. akshare/futures/futures_settlement_price_sgx.py +21 -6
  103. akshare/futures/futures_stock_js.py +0 -1
  104. akshare/futures/futures_to_spot.py +5 -6
  105. akshare/futures/futures_warehouse_receipt.py +48 -47
  106. akshare/futures/futures_zh_sina.py +3 -3
  107. akshare/futures/receipt.py +298 -165
  108. akshare/futures/requests_fun.py +16 -3
  109. akshare/futures/symbol_var.py +32 -13
  110. akshare/futures_derivative/cons.py +100 -103
  111. akshare/futures_derivative/futures_contract_info_cffex.py +55 -39
  112. akshare/futures_derivative/futures_contract_info_czce.py +2 -0
  113. akshare/futures_derivative/futures_contract_info_dce.py +43 -17
  114. akshare/futures_derivative/futures_contract_info_gfex.py +43 -31
  115. akshare/futures_derivative/futures_contract_info_ine.py +43 -34
  116. akshare/futures_derivative/futures_contract_info_shfe.py +3 -4
  117. akshare/futures_derivative/futures_cot_sina.py +8 -6
  118. akshare/futures_derivative/futures_index_sina.py +25 -13
  119. akshare/fx/cons.py +12 -7
  120. akshare/fx/fx_c_swap_cm.py +62 -0
  121. akshare/fx/fx_quote.py +3 -2
  122. akshare/fx/fx_quote_baidu.py +2 -1
  123. akshare/hf/__init__.py +1 -1
  124. akshare/hf/hf_sp500.py +8 -7
  125. akshare/index/cons.py +132 -28
  126. akshare/index/index_cni.py +7 -7
  127. akshare/index/index_cons.py +2 -2
  128. akshare/index/index_csindex.py +68 -0
  129. akshare/index/index_cx.py +20 -20
  130. akshare/index/index_drewry.py +17 -16
  131. akshare/index/index_eri.py +1 -0
  132. akshare/index/index_global_em.py +167 -0
  133. akshare/index/index_global_sina.py +82 -0
  134. akshare/index/index_kq_fz.py +17 -14
  135. akshare/index/index_kq_ss.py +1 -0
  136. akshare/index/index_option_qvix.py +351 -16
  137. akshare/index/index_research_sw.py +21 -21
  138. akshare/index/index_spot.py +9 -5
  139. akshare/index/index_stock_hk.py +5 -9
  140. akshare/index/index_stock_zh.py +111 -24
  141. akshare/index/index_stock_zh_csindex.py +3 -367
  142. akshare/index/index_sugar.py +18 -4
  143. akshare/index/index_sw.py +10 -2
  144. akshare/index/index_yw.py +53 -75
  145. akshare/index/index_zh_em.py +15 -82
  146. akshare/interest_rate/interbank_rate_em.py +0 -1
  147. akshare/movie/jm.js +0 -1
  148. akshare/news/__init__.py +1 -1
  149. akshare/news/news_baidu.py +395 -222
  150. akshare/news/news_stock.py +49 -16
  151. akshare/option/cons.py +2 -2
  152. akshare/option/option_commodity.py +341 -220
  153. akshare/option/option_commodity_sina.py +22 -26
  154. akshare/option/option_contract_info_ctp.py +63 -0
  155. akshare/option/option_current_sse.py +61 -0
  156. akshare/option/option_current_szse.py +84 -0
  157. akshare/option/option_czce.py +37 -9
  158. akshare/option/option_daily_stats_sse_szse.py +0 -1
  159. akshare/option/option_em.py +4 -8
  160. akshare/option/option_finance.py +60 -12
  161. akshare/option/option_finance_sina.py +7 -7
  162. akshare/option/option_lhb_em.py +0 -1
  163. akshare/option/option_margin.py +62 -0
  164. akshare/option/option_premium_analysis_em.py +58 -53
  165. akshare/option/option_risk_analysis_em.py +11 -8
  166. akshare/option/option_risk_indicator_sse.py +3 -4
  167. akshare/option/option_value_analysis_em.py +62 -55
  168. akshare/other/__init__.py +1 -1
  169. akshare/pro/__init__.py +0 -1
  170. akshare/pro/client.py +6 -4
  171. akshare/pro/cons.py +3 -2
  172. akshare/pro/data_pro.py +6 -5
  173. akshare/qdii/__init__.py +0 -0
  174. akshare/qdii/qdii_jsl.py +233 -0
  175. akshare/qhkc/__init__.py +1 -6
  176. akshare/qhkc/qhkc_api.py +64 -22
  177. akshare/qhkc_web/__init__.py +1 -6
  178. akshare/qhkc_web/qhkc_fund.py +10 -6
  179. akshare/qhkc_web/qhkc_index.py +28 -14
  180. akshare/qhkc_web/qhkc_tool.py +62 -59
  181. akshare/rate/__init__.py +1 -1
  182. akshare/rate/repo_rate.py +36 -32
  183. akshare/reits/__init__.py +1 -1
  184. akshare/reits/reits_basic.py +149 -13
  185. akshare/request.py +117 -0
  186. akshare/spot/__init__.py +1 -1
  187. akshare/spot/spot_hog_soozhu.py +165 -3
  188. akshare/spot/spot_sge.py +70 -9
  189. akshare/stock/cons.py +60 -23
  190. akshare/stock/stock_allotment_cninfo.py +8 -8
  191. akshare/stock/stock_ask_bid_em.py +3 -78
  192. akshare/stock/stock_board_concept_em.py +160 -35
  193. akshare/stock/stock_board_industry_em.py +163 -70
  194. akshare/stock/stock_dividend_cninfo.py +31 -17
  195. akshare/stock/stock_dzjy_em.py +347 -260
  196. akshare/stock/stock_fund_em.py +72 -64
  197. akshare/stock/stock_fund_hold.py +1 -2
  198. akshare/stock/stock_gsrl_em.py +1 -0
  199. akshare/stock/stock_hk_comparison_em.py +175 -0
  200. akshare/stock/stock_hk_famous.py +4 -5
  201. akshare/stock/stock_hk_fhpx_ths.py +2 -1
  202. akshare/stock/stock_hk_hot_rank_em.py +1 -0
  203. akshare/stock/stock_hk_sina.py +84 -36
  204. akshare/stock/stock_hold_control_cninfo.py +82 -0
  205. akshare/stock/stock_hold_control_em.py +0 -2
  206. akshare/stock/stock_hot_rank_em.py +4 -1
  207. akshare/stock/stock_hot_search_baidu.py +32 -19
  208. akshare/stock/stock_hot_up_em.py +4 -1
  209. akshare/stock/stock_hsgt_em.py +155 -0
  210. akshare/stock/stock_industry.py +1 -0
  211. akshare/stock/stock_industry_cninfo.py +1 -2
  212. akshare/stock/stock_info.py +6 -4
  213. akshare/stock/stock_info_em.py +17 -11
  214. akshare/stock/stock_intraday_em.py +4 -78
  215. akshare/stock/stock_intraday_sina.py +2 -2
  216. akshare/stock/stock_news_cx.py +39 -0
  217. akshare/stock/stock_profile_cninfo.py +7 -7
  218. akshare/stock/stock_profile_em.py +302 -0
  219. akshare/stock/stock_rank_forecast.py +6 -5
  220. akshare/stock/stock_repurchase_em.py +7 -2
  221. akshare/stock/stock_share_changes_cninfo.py +7 -5
  222. akshare/stock/stock_share_hold.py +24 -20
  223. akshare/stock/stock_stop.py +6 -6
  224. akshare/stock/stock_summary.py +153 -417
  225. akshare/stock/stock_us_famous.py +5 -6
  226. akshare/stock/stock_us_js.py +3 -2
  227. akshare/stock/stock_us_pink.py +38 -27
  228. akshare/stock/stock_us_sina.py +7 -3
  229. akshare/stock/stock_weibo_nlp.py +18 -20
  230. akshare/stock/stock_xq.py +24 -22
  231. akshare/stock/stock_zh_a_sina.py +8 -5
  232. akshare/stock/stock_zh_a_special.py +240 -243
  233. akshare/stock/stock_zh_a_tick_tx.py +11 -3
  234. akshare/stock/stock_zh_ah_tx.py +23 -26
  235. akshare/stock/stock_zh_b_sina.py +2 -2
  236. akshare/stock/stock_zh_comparison_em.py +250 -0
  237. akshare/stock/stock_zh_kcb_sina.py +67 -64
  238. akshare/stock_a/__init__.py +0 -0
  239. akshare/stock_a/stock_board_concept_name_em.py +170 -0
  240. akshare/stock_a/stock_individual_fund_flow_rank.py +258 -0
  241. akshare/stock_a/stock_zh_a_spot.py +212 -0
  242. akshare/stock_feature/cons.py +1 -0
  243. akshare/stock_feature/stock_a_indicator.py +9 -54
  244. akshare/stock_feature/stock_a_pe_and_pb.py +23 -5
  245. akshare/stock_feature/stock_account_em.py +0 -1
  246. akshare/stock_feature/stock_all_pb.py +2 -1
  247. akshare/stock_feature/stock_analyst_em.py +36 -30
  248. akshare/stock_feature/stock_board_concept_ths.py +328 -0
  249. akshare/stock_feature/stock_board_industry_ths.py +57 -2
  250. akshare/stock_feature/stock_buffett_index_lg.py +10 -8
  251. akshare/stock_feature/stock_classify_sina.py +3 -6
  252. akshare/stock_feature/stock_comment_em.py +81 -144
  253. akshare/stock_feature/stock_congestion_lg.py +2 -1
  254. akshare/stock_feature/stock_cyq_em.py +5 -11
  255. akshare/stock_feature/stock_disclosure_cninfo.py +6 -6
  256. akshare/stock_feature/stock_dxsyl_em.py +121 -74
  257. akshare/stock_feature/stock_ebs_lg.py +5 -4
  258. akshare/stock_feature/stock_esg_sina.py +29 -7
  259. akshare/stock_feature/stock_fhps_em.py +2 -1
  260. akshare/stock_feature/stock_fhps_ths.py +15 -7
  261. akshare/stock_feature/stock_fund_flow.py +30 -22
  262. akshare/stock_feature/stock_gddh_em.py +19 -11
  263. akshare/stock_feature/stock_gdfx_em.py +226 -113
  264. akshare/stock_feature/stock_gdhs.py +75 -50
  265. akshare/stock_feature/stock_gdzjc_em.py +21 -10
  266. akshare/stock_feature/stock_gpzy_em.py +78 -46
  267. akshare/stock_feature/stock_gxl_lg.py +3 -2
  268. akshare/stock_feature/stock_hist_em.py +137 -234
  269. akshare/stock_feature/stock_hist_tx.py +13 -10
  270. akshare/stock_feature/stock_hk_valuation_baidu.py +20 -8
  271. akshare/stock_feature/stock_hot_xq.py +4 -6
  272. akshare/stock_feature/stock_hsgt_em.py +269 -97
  273. akshare/stock_feature/stock_hsgt_exchange_rate.py +115 -87
  274. akshare/stock_feature/stock_hsgt_min_em.py +13 -16
  275. akshare/stock_feature/stock_info.py +7 -80
  276. akshare/stock_feature/stock_inner_trade_xq.py +38 -31
  277. akshare/stock_feature/stock_jgdy_em.py +43 -40
  278. akshare/stock_feature/stock_lhb_em.py +119 -3
  279. akshare/stock_feature/stock_margin_em.py +0 -1
  280. akshare/stock_feature/stock_margin_sse.py +0 -2
  281. akshare/stock_feature/stock_pankou_em.py +71 -35
  282. akshare/stock_feature/stock_qsjy_em.py +13 -4
  283. akshare/stock_feature/stock_report_em.py +151 -7
  284. akshare/stock_feature/stock_research_report_em.py +55 -20
  285. akshare/stock_feature/stock_sy_em.py +20 -15
  286. akshare/stock_feature/stock_technology_ths.py +122 -77
  287. akshare/stock_feature/stock_tfp_em.py +2 -1
  288. akshare/stock_feature/stock_three_report_em.py +21 -5
  289. akshare/stock_feature/stock_ttm_lyr.py +18 -9
  290. akshare/stock_feature/stock_value_em.py +83 -0
  291. akshare/stock_feature/stock_yjbb_em.py +58 -32
  292. akshare/stock_feature/stock_yjyg_cninfo.py +6 -2
  293. akshare/stock_feature/stock_yjyg_em.py +1 -1
  294. akshare/stock_feature/stock_yzxdr_em.py +24 -22
  295. akshare/stock_feature/stock_zdhtmx_em.py +20 -6
  296. akshare/stock_feature/stock_zh_vote_baidu.py +4 -1
  297. akshare/stock_feature/stock_ztb_em.py +39 -24
  298. akshare/stock_fundamental/__init__.py +1 -1
  299. akshare/stock_fundamental/stock_basic_info_xq.py +119 -0
  300. akshare/stock_fundamental/{stock_finance_hk.py → stock_finance_hk_em.py} +23 -16
  301. akshare/stock_fundamental/{stock_finance.py → stock_finance_sina.py} +60 -7
  302. akshare/stock_fundamental/stock_finance_ths.py +524 -57
  303. akshare/stock_fundamental/stock_finance_us_em.py +268 -0
  304. akshare/stock_fundamental/stock_gbjg_em.py +80 -0
  305. akshare/stock_fundamental/stock_hold.py +26 -17
  306. akshare/stock_fundamental/stock_ipo_declare.py +1 -0
  307. akshare/stock_fundamental/stock_kcb_detail_sse.py +10 -10
  308. akshare/stock_fundamental/stock_kcb_sse.py +26 -25
  309. akshare/stock_fundamental/stock_notice.py +12 -3
  310. akshare/stock_fundamental/stock_profit_forecast_em.py +31 -13
  311. akshare/stock_fundamental/stock_profit_forecast_hk_etnet.py +64 -41
  312. akshare/stock_fundamental/stock_profit_forecast_ths.py +86 -35
  313. akshare/stock_fundamental/stock_recommend.py +20 -4
  314. akshare/stock_fundamental/stock_zygc.py +5 -62
  315. akshare/utils/context.py +43 -0
  316. akshare/utils/demjson.py +2009 -1338
  317. akshare/utils/func.py +49 -2
  318. akshare/utils/multi_decrypt.py +53 -0
  319. akshare/utils/token_process.py +6 -5
  320. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/METADATA +54 -80
  321. akshare-1.17.99.dist-info/RECORD +409 -0
  322. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/WHEEL +1 -1
  323. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info/licenses}/LICENSE +1 -1
  324. tests/test_func.py +3 -5
  325. akshare/bond/bond_futures.py +0 -50
  326. akshare/bond/bond_investing.py +0 -139
  327. akshare/crypto/crypto_hist_investing.py +0 -249
  328. akshare/fund/fund_announcement.py +0 -56
  329. akshare/futures/futures_international.py +0 -170
  330. akshare/futures/futures_news_baidu.py +0 -54
  331. akshare/futures/inventory_data.py +0 -100
  332. akshare/futures_derivative/futures_index_price_nh.py +0 -61
  333. akshare/futures_derivative/futures_index_return_nh.py +0 -47
  334. akshare/futures_derivative/futures_index_volatility_nh.py +0 -53
  335. akshare/futures_derivative/futures_other_index_nh.py +0 -145
  336. akshare/index/index_fear_greed_funddb.py +0 -78
  337. akshare/index/index_investing.py +0 -232
  338. akshare/sport/__init__.py +0 -6
  339. akshare/sport/sport_olympic.py +0 -27
  340. akshare/stock_feature/stock_wencai.py +0 -104
  341. akshare/stock_fundamental/stock_mda_ym.py +0 -40
  342. akshare-1.14.49.dist-info/RECORD +0 -387
  343. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/top_level.txt +0 -0
@@ -1,17 +1,20 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/5/17 16:20
4
+ Date: 2025/11/12 15:20
5
5
  Desc: 宏观数据-中国
6
6
  """
7
7
 
8
8
  import datetime
9
9
  import json
10
10
  import math
11
+ import ssl
11
12
  import time
12
13
 
13
14
  import pandas as pd
14
15
  import requests
16
+ from requests.adapters import HTTPAdapter
17
+ from urllib3.poolmanager import PoolManager
15
18
 
16
19
  from akshare.economic.cons import (
17
20
  JS_CHINA_ENERGY_DAILY_URL,
@@ -20,6 +23,24 @@ from akshare.utils import demjson
20
23
  from akshare.utils.tqdm import get_tqdm
21
24
 
22
25
 
26
+ class TLSAdapter(HTTPAdapter):
27
+ def init_poolmanager(self, connections, maxsize, block=False):
28
+ ctx = ssl.create_default_context()
29
+ # 降低安全级别以兼容旧服务器
30
+ ctx.set_ciphers('DEFAULT@SECLEVEL=1')
31
+ # 禁用不安全的协议
32
+ ctx.options |= ssl.OP_NO_SSLv2
33
+ ctx.options |= ssl.OP_NO_SSLv3
34
+ # 指定使用 TLSv1.2
35
+ self.poolmanager = PoolManager(
36
+ num_pools=connections,
37
+ maxsize=maxsize,
38
+ block=block,
39
+ ssl_version=ssl.PROTOCOL_TLSv1_2,
40
+ ssl_context=ctx
41
+ )
42
+
43
+
23
44
  def __macro_china_base_func(symbol: str, params: dict) -> pd.DataFrame:
24
45
  """
25
46
  金十数据中心-经济指标-美国-基础函数
@@ -32,7 +53,7 @@ def __macro_china_base_func(symbol: str, params: dict) -> pd.DataFrame:
32
53
  warnings.filterwarnings(action="ignore", category=FutureWarning)
33
54
  headers = {
34
55
  "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
35
- "Chrome/107.0.0.0 Safari/537.36",
56
+ "Chrome/107.0.0.0 Safari/537.36",
36
57
  "x-app-id": "rU6QIu7JHe2gOUeR",
37
58
  "x-csrf-token": "x-csrf-token",
38
59
  "x-version": "1.0.0",
@@ -93,8 +114,8 @@ def macro_china_qyspjg() -> pd.DataFrame:
93
114
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
94
115
  params = {
95
116
  "columns": "REPORT_DATE,TIME,BASE,BASE_SAME,BASE_SEQUENTIAL,FARM_BASE,FARM_BASE_SAME,"
96
- "FARM_BASE_SEQUENTIAL,MINERAL_BASE,MINERAL_BASE_SAME,MINERAL_BASE_SEQUENTIAL,"
97
- "ENERGY_BASE,ENERGY_BASE_SAME,ENERGY_BASE_SEQUENTIAL",
117
+ "FARM_BASE_SEQUENTIAL,MINERAL_BASE,MINERAL_BASE_SAME,MINERAL_BASE_SEQUENTIAL,"
118
+ "ENERGY_BASE,ENERGY_BASE_SAME,ENERGY_BASE_SEQUENTIAL",
98
119
  "pageNumber": "1",
99
120
  "pageSize": "2000",
100
121
  "sortColumns": "REPORT_DATE",
@@ -105,7 +126,6 @@ def macro_china_qyspjg() -> pd.DataFrame:
105
126
  "p": "1",
106
127
  "pageNo": "1",
107
128
  "pageNum": "1",
108
- "_": "1669047266881",
109
129
  }
110
130
  r = requests.get(url, params=params)
111
131
  data_json = r.json()
@@ -189,7 +209,7 @@ def macro_china_fdi() -> pd.DataFrame:
189
209
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
190
210
  params = {
191
211
  "columns": "REPORT_DATE,TIME,ACTUAL_FOREIGN,ACTUAL_FOREIGN_SAME,ACTUAL_FOREIGN_SEQUENTIAL,"
192
- "ACTUAL_FOREIGN_ACCUMULATE,FOREIGN_ACCUMULATE_SAME",
212
+ "ACTUAL_FOREIGN_ACCUMULATE,FOREIGN_ACCUMULATE_SAME",
193
213
  "pageNumber": "1",
194
214
  "pageSize": "2000",
195
215
  "sortColumns": "REPORT_DATE",
@@ -200,7 +220,6 @@ def macro_china_fdi() -> pd.DataFrame:
200
220
  "p": "1",
201
221
  "pageNo": "1",
202
222
  "pageNum": "1",
203
- "_": "1669047266881",
204
223
  }
205
224
  r = requests.get(url, params=params)
206
225
  data_json = r.json()
@@ -230,6 +249,7 @@ def macro_china_fdi() -> pd.DataFrame:
230
249
  temp_df["当月-环比增长"] = pd.to_numeric(temp_df["当月-环比增长"], errors="coerce")
231
250
  temp_df["累计"] = pd.to_numeric(temp_df["累计"], errors="coerce")
232
251
  temp_df["累计-同比增长"] = pd.to_numeric(temp_df["累计-同比增长"], errors="coerce")
252
+ temp_df.sort_values(["月份"], ignore_index=True, inplace=True)
233
253
  return temp_df
234
254
 
235
255
 
@@ -237,12 +257,14 @@ def macro_china_fdi() -> pd.DataFrame:
237
257
  def macro_china_shrzgm() -> pd.DataFrame:
238
258
  """
239
259
  商务数据中心-国内贸易-社会融资规模增量统计
240
- http://data.mofcom.gov.cn/gnmy/shrzgm.shtml
260
+ https://data.mofcom.gov.cn/gnmy/shrzgm.shtml
241
261
  :return: 社会融资规模增量统计
242
262
  :rtype: pandas.DataFrame
243
263
  """
244
- url = "http://data.mofcom.gov.cn/datamofcom/front/gnmy/shrzgmQuery"
245
- r = requests.post(url)
264
+ session = requests.Session()
265
+ session.mount(prefix='https://', adapter=TLSAdapter())
266
+ url = "https://data.mofcom.gov.cn/datamofcom/front/gnmy/shrzgmQuery"
267
+ r = session.post(url)
246
268
  data_json = r.json()
247
269
  temp_df = pd.DataFrame(data_json)
248
270
  temp_df.columns = [
@@ -326,6 +348,7 @@ def macro_china_urban_unemployment() -> pd.DataFrame:
326
348
  temp_df.columns = ["date", "item", "value"]
327
349
  temp_df["item"] = temp_df["item"].map(code_item_map)
328
350
  temp_df["value"] = pd.to_numeric(temp_df["value"], errors="coerce")
351
+ temp_df.sort_values(by=["date"], ignore_index=True, inplace=True)
329
352
  return temp_df
330
353
 
331
354
 
@@ -709,7 +732,7 @@ def macro_china_daily_energy() -> pd.DataFrame:
709
732
  str(int(round(t * 1000))), str(int(round(t * 1000)) + 90)
710
733
  )
711
734
  )
712
- json_data = json.loads(res.text[res.text.find("{") : res.text.rfind("}") + 1])
735
+ json_data = json.loads(res.text[res.text.find("{"): res.text.rfind("}") + 1])
713
736
  date_list = [item["date"] for item in json_data["list"]]
714
737
  value_list = [
715
738
  item["datas"]["沿海六大电厂库存动态报告"] for item in json_data["list"]
@@ -982,7 +1005,6 @@ def macro_china_lpr() -> pd.DataFrame:
982
1005
  "p": "1",
983
1006
  "pageNo": "1",
984
1007
  "pageNum": "1",
985
- "_": "1689835278471",
986
1008
  }
987
1009
  r = requests.get(url, params=params)
988
1010
  data_json = r.json()
@@ -1024,7 +1046,7 @@ def macro_china_new_house_price(
1024
1046
  params = {
1025
1047
  "reportName": "RPT_ECONOMY_HOUSE_PRICE",
1026
1048
  "columns": "REPORT_DATE,CITY,FIRST_COMHOUSE_SAME,FIRST_COMHOUSE_SEQUENTIAL,FIRST_COMHOUSE_BASE,"
1027
- "SECOND_HOUSE_SAME,SECOND_HOUSE_SEQUENTIAL,SECOND_HOUSE_BASE,REPORT_DAY",
1049
+ "SECOND_HOUSE_SAME,SECOND_HOUSE_SEQUENTIAL,SECOND_HOUSE_BASE,REPORT_DAY",
1028
1050
  "filter": f'(CITY in ("{city_first}","{city_second}"))',
1029
1051
  "pageNumber": "1",
1030
1052
  "pageSize": "500",
@@ -1035,7 +1057,6 @@ def macro_china_new_house_price(
1035
1057
  "p": "1",
1036
1058
  "pageNo": "1",
1037
1059
  "pageNum": "1",
1038
- "_": "1669352163467",
1039
1060
  }
1040
1061
  r = requests.get(url, params=params)
1041
1062
  data_json = r.json()
@@ -1046,8 +1067,8 @@ def macro_china_new_house_price(
1046
1067
  "新建商品住宅价格指数-同比",
1047
1068
  "新建商品住宅价格指数-环比",
1048
1069
  "新建商品住宅价格指数-定基",
1049
- "二手住宅价格指数-环比",
1050
1070
  "二手住宅价格指数-同比",
1071
+ "二手住宅价格指数-环比",
1051
1072
  "二手住宅价格指数-定基",
1052
1073
  "-",
1053
1074
  ]
@@ -1058,8 +1079,8 @@ def macro_china_new_house_price(
1058
1079
  "新建商品住宅价格指数-同比",
1059
1080
  "新建商品住宅价格指数-环比",
1060
1081
  "新建商品住宅价格指数-定基",
1061
- "二手住宅价格指数-环比",
1062
1082
  "二手住宅价格指数-同比",
1083
+ "二手住宅价格指数-环比",
1063
1084
  "二手住宅价格指数-定基",
1064
1085
  ]
1065
1086
  ]
@@ -1082,6 +1103,7 @@ def macro_china_new_house_price(
1082
1103
  temp_df["二手住宅价格指数-定基"] = pd.to_numeric(
1083
1104
  temp_df["二手住宅价格指数-定基"], errors="coerce"
1084
1105
  )
1106
+ temp_df.sort_values(["日期"], ignore_index=True, inplace=True)
1085
1107
  return temp_df
1086
1108
 
1087
1109
 
@@ -1096,7 +1118,7 @@ def macro_china_enterprise_boom_index() -> pd.DataFrame:
1096
1118
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
1097
1119
  params = {
1098
1120
  "columns": "REPORT_DATE,TIME,BOOM_INDEX,FAITH_INDEX,BOOM_INDEX_SAME,BOOM_INDEX_SEQUENTIAL,"
1099
- "FAITH_INDEX_SAME,FAITH_INDEX_SEQUENTIAL",
1121
+ "FAITH_INDEX_SAME,FAITH_INDEX_SEQUENTIAL",
1100
1122
  "pageNumber": "1",
1101
1123
  "pageSize": "500",
1102
1124
  "sortColumns": "REPORT_DATE",
@@ -1107,7 +1129,6 @@ def macro_china_enterprise_boom_index() -> pd.DataFrame:
1107
1129
  "p": "1",
1108
1130
  "pageNo": "1",
1109
1131
  "pageNum": "1",
1110
- "_": "1669352163467",
1111
1132
  }
1112
1133
  r = requests.get(url, params=params)
1113
1134
  data_json = r.json()
@@ -1175,7 +1196,6 @@ def macro_china_national_tax_receipts() -> pd.DataFrame:
1175
1196
  "p": "1",
1176
1197
  "pageNo": "1",
1177
1198
  "pageNum": "1",
1178
- "_": "1669352163467",
1179
1199
  }
1180
1200
  r = requests.get(url, params=params)
1181
1201
  data_json = r.json()
@@ -1206,7 +1226,7 @@ def macro_china_bank_financing() -> pd.DataFrame:
1206
1226
  "pageNumber": "1",
1207
1227
  "reportName": "RPT_INDUSTRY_INDEX",
1208
1228
  "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1209
- "CHANGERATE_2Y,CHANGERATE_3Y",
1229
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1210
1230
  "filter": '(INDICATOR_ID="EMI01516267")',
1211
1231
  "source": "WEB",
1212
1232
  "client": "WEB",
@@ -1252,7 +1272,7 @@ def macro_china_insurance_income() -> pd.DataFrame:
1252
1272
  "pageNumber": "1",
1253
1273
  "reportName": "RPT_INDUSTRY_INDEX",
1254
1274
  "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1255
- "CHANGERATE_2Y,CHANGERATE_3Y",
1275
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1256
1276
  "filter": '(INDICATOR_ID="EMM00088870")',
1257
1277
  "source": "WEB",
1258
1278
  "client": "WEB",
@@ -1298,7 +1318,7 @@ def macro_china_mobile_number() -> pd.DataFrame:
1298
1318
  "pageNumber": "1",
1299
1319
  "reportName": "RPT_INDUSTRY_INDEX",
1300
1320
  "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1301
- "CHANGERATE_2Y,CHANGERATE_3Y",
1321
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1302
1322
  "filter": '(INDICATOR_ID="EMI00225823")',
1303
1323
  "source": "WEB",
1304
1324
  "client": "WEB",
@@ -1345,7 +1365,7 @@ def macro_china_vegetable_basket() -> pd.DataFrame:
1345
1365
  "pageNumber": "1",
1346
1366
  "reportName": "RPT_INDUSTRY_INDEX",
1347
1367
  "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1348
- "CHANGERATE_2Y,CHANGERATE_3Y",
1368
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1349
1369
  "filter": '(INDICATOR_ID="EMI00009275")',
1350
1370
  "source": "WEB",
1351
1371
  "client": "WEB",
@@ -1400,7 +1420,7 @@ def macro_china_agricultural_product() -> pd.DataFrame:
1400
1420
  "pageNumber": "1",
1401
1421
  "reportName": "RPT_INDUSTRY_INDEX",
1402
1422
  "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1403
- "CHANGERATE_2Y,CHANGERATE_3Y",
1423
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1404
1424
  "filter": '(INDICATOR_ID="EMI00009274")',
1405
1425
  "source": "WEB",
1406
1426
  "client": "WEB",
@@ -1455,7 +1475,7 @@ def macro_china_agricultural_index() -> pd.DataFrame:
1455
1475
  "pageNumber": "1",
1456
1476
  "reportName": "RPT_INDUSTRY_INDEX",
1457
1477
  "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1458
- "CHANGERATE_2Y,CHANGERATE_3Y",
1478
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1459
1479
  "filter": '(INDICATOR_ID="EMI00662543")',
1460
1480
  "source": "WEB",
1461
1481
  "client": "WEB",
@@ -1510,7 +1530,7 @@ def macro_china_energy_index() -> pd.DataFrame:
1510
1530
  "pageNumber": "1",
1511
1531
  "reportName": "RPT_INDUSTRY_INDEX",
1512
1532
  "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1513
- "CHANGERATE_2Y,CHANGERATE_3Y",
1533
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1514
1534
  "filter": '(INDICATOR_ID="EMI00662539")',
1515
1535
  "source": "WEB",
1516
1536
  "client": "WEB",
@@ -1565,7 +1585,7 @@ def macro_china_commodity_price_index() -> pd.DataFrame:
1565
1585
  "pageNumber": "1",
1566
1586
  "reportName": "RPT_INDUSTRY_INDEX",
1567
1587
  "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1568
- "CHANGERATE_2Y,CHANGERATE_3Y",
1588
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1569
1589
  "filter": '(INDICATOR_ID="EMI00662535")',
1570
1590
  "source": "WEB",
1571
1591
  "client": "WEB",
@@ -1620,7 +1640,7 @@ def macro_global_sox_index() -> pd.DataFrame:
1620
1640
  "pageNumber": "1",
1621
1641
  "reportName": "RPT_INDUSTRY_INDEX",
1622
1642
  "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1623
- "CHANGERATE_2Y,CHANGERATE_3Y",
1643
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1624
1644
  "filter": '(INDICATOR_ID="EMI00055562")',
1625
1645
  "source": "WEB",
1626
1646
  "client": "WEB",
@@ -1675,7 +1695,7 @@ def macro_china_yw_electronic_index() -> pd.DataFrame:
1675
1695
  "pageNumber": "1",
1676
1696
  "reportName": "RPT_INDUSTRY_INDEX",
1677
1697
  "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1678
- "CHANGERATE_2Y,CHANGERATE_3Y",
1698
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1679
1699
  "filter": '(INDICATOR_ID="EMI00055551")',
1680
1700
  "source": "WEB",
1681
1701
  "client": "WEB",
@@ -1733,7 +1753,7 @@ def macro_china_construction_index() -> pd.DataFrame:
1733
1753
  "pageNumber": "1",
1734
1754
  "reportName": "RPT_INDUSTRY_INDEX",
1735
1755
  "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,"
1736
- "CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
1756
+ "CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
1737
1757
  "filter": '(INDICATOR_ID="EMI00662541")',
1738
1758
  "source": "WEB",
1739
1759
  "client": "WEB",
@@ -1788,7 +1808,7 @@ def macro_china_construction_price_index() -> pd.DataFrame:
1788
1808
  "pageNumber": "1",
1789
1809
  "reportName": "RPT_INDUSTRY_INDEX",
1790
1810
  "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1791
- "CHANGERATE_2Y,CHANGERATE_3Y",
1811
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1792
1812
  "filter": '(INDICATOR_ID="EMI00237146")',
1793
1813
  "source": "WEB",
1794
1814
  "client": "WEB",
@@ -1843,7 +1863,7 @@ def macro_china_lpi_index() -> pd.DataFrame:
1843
1863
  "pageNumber": "1",
1844
1864
  "reportName": "RPT_INDUSTRY_INDEX",
1845
1865
  "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1846
- "CHANGERATE_2Y,CHANGERATE_3Y",
1866
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1847
1867
  "filter": '(INDICATOR_ID="EMI00352262")',
1848
1868
  "source": "WEB",
1849
1869
  "client": "WEB",
@@ -1898,7 +1918,7 @@ def macro_china_bdti_index() -> pd.DataFrame:
1898
1918
  "pageNumber": "1",
1899
1919
  "reportName": "RPT_INDUSTRY_INDEX",
1900
1920
  "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1901
- "CHANGERATE_2Y,CHANGERATE_3Y",
1921
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1902
1922
  "filter": '(INDICATOR_ID="EMI00107668")',
1903
1923
  "source": "WEB",
1904
1924
  "client": "WEB",
@@ -1953,7 +1973,7 @@ def macro_china_bsi_index() -> pd.DataFrame:
1953
1973
  "pageNumber": "1",
1954
1974
  "reportName": "RPT_INDUSTRY_INDEX",
1955
1975
  "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1956
- "CHANGERATE_2Y,CHANGERATE_3Y",
1976
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1957
1977
  "filter": '(INDICATOR_ID="EMI00107667")',
1958
1978
  "source": "WEB",
1959
1979
  "client": "WEB",
@@ -2008,7 +2028,7 @@ def _em_macro_1(em_id) -> pd.DataFrame:
2008
2028
  "pageNumber": "1",
2009
2029
  "reportName": "RPT_INDUSTRY_INDEX",
2010
2030
  "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,"
2011
- "CHANGERATE_6M,CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
2031
+ "CHANGERATE_6M,CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
2012
2032
  "filter": "(INDICATOR_ID=" + ind_id + ")",
2013
2033
  "source": "WEB",
2014
2034
  "client": "WEB",
@@ -2102,7 +2122,7 @@ def macro_china_new_financial_credit() -> pd.DataFrame:
2102
2122
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
2103
2123
  params = {
2104
2124
  "columns": "REPORT_DATE,TIME,RMB_LOAN,RMB_LOAN_SAME,RMB_LOAN_SEQUENTIAL,"
2105
- "RMB_LOAN_ACCUMULATE,LOAN_ACCUMULATE_SAME",
2125
+ "RMB_LOAN_ACCUMULATE,LOAN_ACCUMULATE_SAME",
2106
2126
  "pageNumber": "1",
2107
2127
  "pageSize": "2000",
2108
2128
  "sortColumns": "REPORT_DATE",
@@ -2113,7 +2133,6 @@ def macro_china_new_financial_credit() -> pd.DataFrame:
2113
2133
  "p": "1",
2114
2134
  "pageNo": "1",
2115
2135
  "pageNum": "1",
2116
- "_": "1669047266881",
2117
2136
  }
2118
2137
  r = requests.get(url, params=params)
2119
2138
  data_json = r.json()
@@ -2151,11 +2170,11 @@ def macro_china_fx_gold() -> pd.DataFrame:
2151
2170
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
2152
2171
  headers = {
2153
2172
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
2154
- "Chrome/81.0.4044.138 Safari/537.36",
2173
+ "Chrome/81.0.4044.138 Safari/537.36",
2155
2174
  }
2156
2175
  params = {
2157
2176
  "columns": "REPORT_DATE,TIME,GOLD_RESERVES,GOLD_RESERVES_SAME,"
2158
- "GOLD_RESERVES_SEQUENTIAL,FOREX,FOREX_SAME,FOREX_SEQUENTIAL",
2177
+ "GOLD_RESERVES_SEQUENTIAL,FOREX,FOREX_SAME,FOREX_SEQUENTIAL",
2159
2178
  "pageNumber": "1",
2160
2179
  "pageSize": "1000",
2161
2180
  "sortColumns": "REPORT_DATE",
@@ -2166,7 +2185,6 @@ def macro_china_fx_gold() -> pd.DataFrame:
2166
2185
  "p": "1",
2167
2186
  "pageNo": "1",
2168
2187
  "pageNum": "1",
2169
- "_": "1660718498421",
2170
2188
  }
2171
2189
  r = requests.get(url, params=params, headers=headers)
2172
2190
  data_json = r.json()
@@ -2218,19 +2236,18 @@ def macro_china_stock_market_cap() -> pd.DataFrame:
2218
2236
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
2219
2237
  headers = {
2220
2238
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
2221
- "Chrome/81.0.4044.138 Safari/537.36",
2239
+ "Chrome/81.0.4044.138 Safari/537.36",
2222
2240
  }
2223
2241
  params = {
2224
2242
  "reportName": "RPT_ECONOMY_STOCK_STATISTICS",
2225
2243
  "columns": "REPORT_DATE,TIME,TOTAL_SHARES_SH,TOTAL_MARKE_SH,DEAL_AMOUNT_SH,VOLUME_SH,HIGH_INDEX_SH,"
2226
- "LOW_INDEX_SH,TOTAL_SZARES_SZ,TOTAL_MARKE_SZ,DEAL_AMOUNT_SZ,VOLUME_SZ,HIGH_INDEX_SZ,LOW_INDEX_SZ",
2244
+ "LOW_INDEX_SH,TOTAL_SZARES_SZ,TOTAL_MARKE_SZ,DEAL_AMOUNT_SZ,VOLUME_SZ,HIGH_INDEX_SZ,LOW_INDEX_SZ",
2227
2245
  "sortColumns": "REPORT_DATE",
2228
2246
  "sortTypes": "-1",
2229
2247
  "pageNumber": "1",
2230
2248
  "pageSize": "1000",
2231
2249
  "source": "WEB",
2232
2250
  "client": "WEB",
2233
- "_": "1660718498421",
2234
2251
  }
2235
2252
  r = requests.get(url, params=params, headers=headers)
2236
2253
  data_json = r.json()
@@ -2305,7 +2322,7 @@ def macro_china_money_supply() -> pd.DataFrame:
2305
2322
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
2306
2323
  params = {
2307
2324
  "columns": "REPORT_DATE,TIME,BASIC_CURRENCY,BASIC_CURRENCY_SAME,BASIC_CURRENCY_SEQUENTIAL,CURRENCY,"
2308
- "CURRENCY_SAME,CURRENCY_SEQUENTIAL,FREE_CASH,FREE_CASH_SAME,FREE_CASH_SEQUENTIAL",
2325
+ "CURRENCY_SAME,CURRENCY_SEQUENTIAL,FREE_CASH,FREE_CASH_SAME,FREE_CASH_SEQUENTIAL",
2309
2326
  "pageNumber": "1",
2310
2327
  "pageSize": "2000",
2311
2328
  "sortColumns": "REPORT_DATE",
@@ -2316,7 +2333,6 @@ def macro_china_money_supply() -> pd.DataFrame:
2316
2333
  "p": "1",
2317
2334
  "pageNo": "1",
2318
2335
  "pageNum": "1",
2319
- "_": "1669047266881",
2320
2336
  }
2321
2337
  r = requests.get(url, params=params)
2322
2338
  data_json = r.json()
@@ -2389,8 +2405,8 @@ def macro_china_cpi() -> pd.DataFrame:
2389
2405
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
2390
2406
  params = {
2391
2407
  "columns": "REPORT_DATE,TIME,NATIONAL_SAME,NATIONAL_BASE,NATIONAL_SEQUENTIAL,NATIONAL_ACCUMULATE,"
2392
- "CITY_SAME,CITY_BASE,CITY_SEQUENTIAL,CITY_ACCUMULATE,RURAL_SAME,"
2393
- "RURAL_BASE,RURAL_SEQUENTIAL,RURAL_ACCUMULATE",
2408
+ "CITY_SAME,CITY_BASE,CITY_SEQUENTIAL,CITY_ACCUMULATE,RURAL_SAME,"
2409
+ "RURAL_BASE,RURAL_SEQUENTIAL,RURAL_ACCUMULATE",
2394
2410
  "pageNumber": "1",
2395
2411
  "pageSize": "2000",
2396
2412
  "sortColumns": "REPORT_DATE",
@@ -2401,7 +2417,6 @@ def macro_china_cpi() -> pd.DataFrame:
2401
2417
  "p": "1",
2402
2418
  "pageNo": "1",
2403
2419
  "pageNum": "1",
2404
- "_": "1669047266881",
2405
2420
  }
2406
2421
  r = requests.get(url, params=params)
2407
2422
  data_json = r.json()
@@ -2465,7 +2480,7 @@ def macro_china_gdp() -> pd.DataFrame:
2465
2480
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
2466
2481
  params = {
2467
2482
  "columns": "REPORT_DATE,TIME,DOMESTICL_PRODUCT_BASE,FIRST_PRODUCT_BASE,SECOND_PRODUCT_BASE,"
2468
- "THIRD_PRODUCT_BASE,SUM_SAME,FIRST_SAME,SECOND_SAME,THIRD_SAME",
2483
+ "THIRD_PRODUCT_BASE,SUM_SAME,FIRST_SAME,SECOND_SAME,THIRD_SAME",
2469
2484
  "pageNumber": "1",
2470
2485
  "pageSize": "2000",
2471
2486
  "sortColumns": "REPORT_DATE",
@@ -2476,7 +2491,6 @@ def macro_china_gdp() -> pd.DataFrame:
2476
2491
  "p": "1",
2477
2492
  "pageNo": "1",
2478
2493
  "pageNum": "1",
2479
- "_": "1669047266881",
2480
2494
  }
2481
2495
  r = requests.get(url, params=params)
2482
2496
  data_json = r.json()
@@ -2553,7 +2567,6 @@ def macro_china_ppi() -> pd.DataFrame:
2553
2567
  "p": "1",
2554
2568
  "pageNo": "1",
2555
2569
  "pageNum": "1",
2556
- "_": "1669047266881",
2557
2570
  }
2558
2571
  r = requests.get(url, params=params)
2559
2572
  data_json = r.json()
@@ -2599,7 +2612,6 @@ def macro_china_pmi() -> pd.DataFrame:
2599
2612
  "p": "1",
2600
2613
  "pageNo": "1",
2601
2614
  "pageNum": "1",
2602
- "_": "1669047266881",
2603
2615
  }
2604
2616
  r = requests.get(url, params=params)
2605
2617
  data_json = r.json()
@@ -2652,7 +2664,6 @@ def macro_china_gdzctz() -> pd.DataFrame:
2652
2664
  "p": "1",
2653
2665
  "pageNo": "1",
2654
2666
  "pageNum": "1",
2655
- "_": "1669047266881",
2656
2667
  }
2657
2668
  r = requests.get(url, params=params)
2658
2669
  data_json = r.json()
@@ -2692,8 +2703,8 @@ def macro_china_hgjck() -> pd.DataFrame:
2692
2703
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
2693
2704
  params = {
2694
2705
  "columns": "REPORT_DATE,TIME,EXIT_BASE,IMPORT_BASE,EXIT_BASE_SAME,IMPORT_BASE_SAME,"
2695
- "EXIT_BASE_SEQUENTIAL,IMPORT_BASE_SEQUENTIAL,EXIT_ACCUMULATE,"
2696
- "IMPORT_ACCUMULATE,EXIT_ACCUMULATE_SAME,IMPORT_ACCUMULATE_SAME",
2706
+ "EXIT_BASE_SEQUENTIAL,IMPORT_BASE_SEQUENTIAL,EXIT_ACCUMULATE,"
2707
+ "IMPORT_ACCUMULATE,EXIT_ACCUMULATE_SAME,IMPORT_ACCUMULATE_SAME",
2697
2708
  "pageNumber": "1",
2698
2709
  "pageSize": "2000",
2699
2710
  "sortColumns": "REPORT_DATE",
@@ -2704,7 +2715,6 @@ def macro_china_hgjck() -> pd.DataFrame:
2704
2715
  "p": "1",
2705
2716
  "pageNo": "1",
2706
2717
  "pageNum": "1",
2707
- "_": "1669047266881",
2708
2718
  }
2709
2719
  r = requests.get(url, params=params)
2710
2720
  data_json = r.json()
@@ -2794,7 +2804,6 @@ def macro_china_czsr() -> pd.DataFrame:
2794
2804
  "p": "1",
2795
2805
  "pageNo": "1",
2796
2806
  "pageNum": "1",
2797
- "_": "1669047266881",
2798
2807
  }
2799
2808
  r = requests.get(url, params=params)
2800
2809
  data_json = r.json()
@@ -2824,7 +2833,7 @@ def macro_china_czsr() -> pd.DataFrame:
2824
2833
  temp_df["当月-环比增长"] = pd.to_numeric(temp_df["当月-环比增长"], errors="coerce")
2825
2834
  temp_df["累计"] = pd.to_numeric(temp_df["累计"], errors="coerce")
2826
2835
  temp_df["累计-同比增长"] = pd.to_numeric(temp_df["累计-同比增长"], errors="coerce")
2827
-
2836
+ temp_df.sort_values(by=["月份"], ignore_index=True, inplace=True)
2828
2837
  return temp_df
2829
2838
 
2830
2839
 
@@ -2848,7 +2857,6 @@ def macro_china_whxd() -> pd.DataFrame:
2848
2857
  "p": "1",
2849
2858
  "pageNo": "1",
2850
2859
  "pageNum": "1",
2851
- "_": "1669047266881",
2852
2860
  }
2853
2861
  r = requests.get(url, params=params)
2854
2862
  data_json = r.json()
@@ -2875,6 +2883,7 @@ def macro_china_whxd() -> pd.DataFrame:
2875
2883
  temp_df["同比增长"] = pd.to_numeric(temp_df["同比增长"], errors="coerce")
2876
2884
  temp_df["环比增长"] = pd.to_numeric(temp_df["环比增长"], errors="coerce")
2877
2885
  temp_df["累计"] = pd.to_numeric(temp_df["累计"], errors="coerce")
2886
+ temp_df.sort_values(by=["月份"], ignore_index=True, inplace=True)
2878
2887
  return temp_df
2879
2888
 
2880
2889
 
@@ -2898,7 +2907,6 @@ def macro_china_wbck() -> pd.DataFrame:
2898
2907
  "p": "1",
2899
2908
  "pageNo": "1",
2900
2909
  "pageNum": "1",
2901
- "_": "1669047266881",
2902
2910
  }
2903
2911
  r = requests.get(url, params=params)
2904
2912
  data_json = r.json()
@@ -2925,7 +2933,6 @@ def macro_china_wbck() -> pd.DataFrame:
2925
2933
  temp_df["同比增长"] = pd.to_numeric(temp_df["同比增长"], errors="coerce")
2926
2934
  temp_df["环比增长"] = pd.to_numeric(temp_df["环比增长"], errors="coerce")
2927
2935
  temp_df["累计"] = pd.to_numeric(temp_df["累计"], errors="coerce")
2928
-
2929
2936
  return temp_df
2930
2937
 
2931
2938
 
@@ -2939,8 +2946,8 @@ def macro_china_xfzxx() -> pd.DataFrame:
2939
2946
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
2940
2947
  params = {
2941
2948
  "columns": "REPORT_DATE,TIME,CONSUMERS_FAITH_INDEX,FAITH_INDEX_SAME,FAITH_INDEX_SEQUENTIAL,"
2942
- "CONSUMERS_ASTIS_INDEX,ASTIS_INDEX_SAME,ASTIS_INDEX_SEQUENTIAL,CONSUMERS_EXPECT_INDEX,"
2943
- "EXPECT_INDEX_SAME,EXPECT_INDEX_SEQUENTIAL",
2949
+ "CONSUMERS_ASTIS_INDEX,ASTIS_INDEX_SAME,ASTIS_INDEX_SEQUENTIAL,CONSUMERS_EXPECT_INDEX,"
2950
+ "EXPECT_INDEX_SAME,EXPECT_INDEX_SEQUENTIAL",
2944
2951
  "pageNumber": "1",
2945
2952
  "pageSize": "2000",
2946
2953
  "sortColumns": "REPORT_DATE",
@@ -2951,7 +2958,6 @@ def macro_china_xfzxx() -> pd.DataFrame:
2951
2958
  "p": "1",
2952
2959
  "pageNo": "1",
2953
2960
  "pageNum": "1",
2954
- "_": "1669047266881",
2955
2961
  }
2956
2962
  r = requests.get(url, params=params)
2957
2963
  data_json = r.json()
@@ -3035,7 +3041,6 @@ def macro_china_gyzjz() -> pd.DataFrame:
3035
3041
  "p": "1",
3036
3042
  "pageNo": "1",
3037
3043
  "pageNum": "1",
3038
- "_": "1691676211803",
3039
3044
  }
3040
3045
  r = requests.get(url, params=params)
3041
3046
  data_json = r.json()
@@ -3071,7 +3076,7 @@ def macro_china_reserve_requirement_ratio() -> pd.DataFrame:
3071
3076
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
3072
3077
  params = {
3073
3078
  "columns": "REPORT_DATE,PUBLISH_DATE,TRADE_DATE,INTEREST_RATE_BB,INTEREST_RATE_BA,CHANGE_RATE_B,"
3074
- "INTEREST_RATE_SB,INTEREST_RATE_SA,CHANGE_RATE_S,NEXT_SH_RATE,NEXT_SZ_RATE,REMARK",
3079
+ "INTEREST_RATE_SB,INTEREST_RATE_SA,CHANGE_RATE_S,NEXT_SH_RATE,NEXT_SZ_RATE,REMARK",
3075
3080
  "pageNumber": "1",
3076
3081
  "pageSize": "2000",
3077
3082
  "sortColumns": "PUBLISH_DATE,TRADE_DATE",
@@ -3082,7 +3087,6 @@ def macro_china_reserve_requirement_ratio() -> pd.DataFrame:
3082
3087
  "p": "1",
3083
3088
  "pageNo": "1",
3084
3089
  "pageNum": "1",
3085
- "_": "1669047266881",
3086
3090
  }
3087
3091
  r = requests.get(url, params=params)
3088
3092
  data_json = r.json()
@@ -3156,11 +3160,11 @@ def macro_china_consumer_goods_retail() -> pd.DataFrame:
3156
3160
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
3157
3161
  headers = {
3158
3162
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
3159
- "Chrome/81.0.4044.138 Safari/537.36",
3163
+ "Chrome/81.0.4044.138 Safari/537.36",
3160
3164
  }
3161
3165
  params = {
3162
3166
  "columns": "REPORT_DATE,TIME,RETAIL_TOTAL,RETAIL_TOTAL_SAME,RETAIL_TOTAL_SEQUENTIAL,"
3163
- "RETAIL_TOTAL_ACCUMULATE,RETAIL_ACCUMULATE_SAME",
3167
+ "RETAIL_TOTAL_ACCUMULATE,RETAIL_ACCUMULATE_SAME",
3164
3168
  "pageNumber": "1",
3165
3169
  "pageSize": "1000",
3166
3170
  "sortColumns": "REPORT_DATE",
@@ -3171,7 +3175,6 @@ def macro_china_consumer_goods_retail() -> pd.DataFrame:
3171
3175
  "p": "1",
3172
3176
  "pageNo": "1",
3173
3177
  "pageNum": "1",
3174
- "_": "1660718498421",
3175
3178
  }
3176
3179
  r = requests.get(url, params=params, headers=headers)
3177
3180
  data_json = r.json()
@@ -3217,18 +3220,17 @@ def macro_china_society_electricity() -> pd.DataFrame:
3217
3220
  "from": "0",
3218
3221
  "num": "31",
3219
3222
  "condition": "",
3220
- "_": "1601557771972",
3221
3223
  }
3222
3224
  r = requests.get(url, params=params)
3223
3225
  data_text = r.text
3224
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3226
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3225
3227
  page_num = math.ceil(int(data_json["count"]) / 31)
3226
3228
  big_df = pd.DataFrame(data_json["data"])
3227
3229
  for i in range(1, page_num):
3228
3230
  params.update({"from": i * 31})
3229
3231
  r = requests.get(url, params=params)
3230
3232
  data_text = r.text
3231
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3233
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3232
3234
  temp_df = pd.DataFrame(data_json["data"])
3233
3235
  big_df = pd.concat([big_df, temp_df], ignore_index=True)
3234
3236
 
@@ -3271,11 +3273,10 @@ def macro_china_society_traffic_volume() -> pd.DataFrame:
3271
3273
  "from": "0",
3272
3274
  "num": "31",
3273
3275
  "condition": "",
3274
- "_": "1601557771972",
3275
3276
  }
3276
3277
  r = requests.get(url, params=params)
3277
3278
  data_text = r.text
3278
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3279
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3279
3280
  page_num = math.ceil(int(data_json["count"]) / 31)
3280
3281
  big_df = pd.DataFrame(data_json["data"]["非累计"])
3281
3282
  tqdm = get_tqdm()
@@ -3283,7 +3284,7 @@ def macro_china_society_traffic_volume() -> pd.DataFrame:
3283
3284
  params.update({"from": i * 31})
3284
3285
  r = requests.get(url, params=params)
3285
3286
  data_text = r.text
3286
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3287
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3287
3288
  temp_df = pd.DataFrame(data_json["data"]["非累计"])
3288
3289
  big_df = pd.concat([big_df, temp_df], ignore_index=True)
3289
3290
  big_df.columns = [item[1] for item in data_json["config"]["all"]]
@@ -3330,11 +3331,10 @@ def macro_china_postal_telecommunicational() -> pd.DataFrame:
3330
3331
  "from": "0",
3331
3332
  "num": "31",
3332
3333
  "condition": "",
3333
- "_": "1601624495046",
3334
3334
  }
3335
3335
  r = requests.get(url, params=params)
3336
3336
  data_text = r.text
3337
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3337
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3338
3338
  page_num = math.ceil(int(data_json["count"]) / 31)
3339
3339
  big_df = pd.DataFrame(data_json["data"]["非累计"])
3340
3340
  tqdm = get_tqdm()
@@ -3342,7 +3342,7 @@ def macro_china_postal_telecommunicational() -> pd.DataFrame:
3342
3342
  params.update({"from": i * 31})
3343
3343
  r = requests.get(url, params=params)
3344
3344
  data_text = r.text
3345
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3345
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3346
3346
  temp_df = pd.DataFrame(data_json["data"]["非累计"])
3347
3347
  big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
3348
3348
  big_df.columns = [item[1] for item in data_json["config"]["all"]]
@@ -3365,11 +3365,10 @@ def macro_china_international_tourism_fx() -> pd.DataFrame:
3365
3365
  "from": "0",
3366
3366
  "num": "31",
3367
3367
  "condition": "",
3368
- "_": "1601624495046",
3369
3368
  }
3370
3369
  r = requests.get(url, params=params)
3371
3370
  data_text = r.text
3372
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3371
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3373
3372
  page_num = math.ceil(int(data_json["count"]) / 31)
3374
3373
  big_df = pd.DataFrame(data_json["data"])
3375
3374
  tqdm = get_tqdm()
@@ -3377,7 +3376,7 @@ def macro_china_international_tourism_fx() -> pd.DataFrame:
3377
3376
  params.update({"from": i * 31})
3378
3377
  r = requests.get(url, params=params)
3379
3378
  data_text = r.text
3380
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3379
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3381
3380
  temp_df = pd.DataFrame(data_json["data"])
3382
3381
  big_df = pd.concat([big_df, temp_df], ignore_index=True)
3383
3382
  big_df.columns = [item[1] for item in data_json["config"]["all"]]
@@ -3400,11 +3399,10 @@ def macro_china_passenger_load_factor() -> pd.DataFrame:
3400
3399
  "from": "0",
3401
3400
  "num": "31",
3402
3401
  "condition": "",
3403
- "_": "1601624495046",
3404
3402
  }
3405
3403
  r = requests.get(url, params=params)
3406
3404
  data_text = r.text
3407
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3405
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3408
3406
  page_num = math.ceil(int(data_json["count"]) / 31)
3409
3407
  big_df = pd.DataFrame(data_json["data"])
3410
3408
  tqdm = get_tqdm()
@@ -3412,7 +3410,7 @@ def macro_china_passenger_load_factor() -> pd.DataFrame:
3412
3410
  params.update({"from": i * 31})
3413
3411
  r = requests.get(url, params=params)
3414
3412
  data_text = r.text
3415
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3413
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3416
3414
  temp_df = pd.DataFrame(data_json["data"])
3417
3415
  big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
3418
3416
  big_df.columns = [item[1] for item in data_json["config"]["all"]]
@@ -3435,11 +3433,10 @@ def _macro_china_freight_index() -> pd.DataFrame:
3435
3433
  "from": "0",
3436
3434
  "num": "31",
3437
3435
  "condition": "",
3438
- "_": "1601624495046",
3439
3436
  }
3440
3437
  r = requests.get(url, params=params)
3441
3438
  data_text = r.text
3442
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3439
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3443
3440
  page_num = math.ceil(int(data_json["count"]) / 31)
3444
3441
  big_df = pd.DataFrame(data_json["data"])
3445
3442
  tqdm = get_tqdm()
@@ -3447,7 +3444,7 @@ def _macro_china_freight_index() -> pd.DataFrame:
3447
3444
  params.update({"from": i * 31})
3448
3445
  r = requests.get(url, params=params)
3449
3446
  data_text = r.text
3450
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3447
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3451
3448
  temp_df = pd.DataFrame(data_json["data"])
3452
3449
  big_df = big_df.append(temp_df, ignore_index=True)
3453
3450
  big_df.columns = [item[1] for item in data_json["config"]["all"]]
@@ -3513,11 +3510,10 @@ def macro_china_central_bank_balance() -> pd.DataFrame:
3513
3510
  "from": "0",
3514
3511
  "num": "31",
3515
3512
  "condition": "",
3516
- "_": "1601624495046",
3517
3513
  }
3518
3514
  r = requests.get(url, params=params)
3519
3515
  data_text = r.text
3520
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3516
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3521
3517
  page_num = math.ceil(int(data_json["count"]) / 31)
3522
3518
  big_df = pd.DataFrame(data_json["data"])
3523
3519
  tqdm = get_tqdm()
@@ -3525,7 +3521,7 @@ def macro_china_central_bank_balance() -> pd.DataFrame:
3525
3521
  params.update({"from": i * 31})
3526
3522
  r = requests.get(url, params=params)
3527
3523
  data_text = r.text
3528
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3524
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3529
3525
  temp_df = pd.DataFrame(data_json["data"])
3530
3526
  big_df = pd.concat([big_df, temp_df], ignore_index=True)
3531
3527
  big_df.columns = [item[1] for item in data_json["config"]["all"]]
@@ -3548,11 +3544,10 @@ def macro_china_insurance() -> pd.DataFrame:
3548
3544
  "from": "0",
3549
3545
  "num": "31",
3550
3546
  "condition": "",
3551
- "_": "1601624495046",
3552
3547
  }
3553
3548
  r = requests.get(url, params=params)
3554
3549
  data_text = r.text
3555
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3550
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3556
3551
  page_num = math.ceil(int(data_json["count"]) / 31)
3557
3552
  big_df = pd.DataFrame(data_json["data"])
3558
3553
  tqdm = get_tqdm()
@@ -3560,7 +3555,7 @@ def macro_china_insurance() -> pd.DataFrame:
3560
3555
  params.update({"from": i * 31})
3561
3556
  r = requests.get(url, params=params)
3562
3557
  data_text = r.text
3563
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3558
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3564
3559
  temp_df = pd.DataFrame(data_json["data"])
3565
3560
  big_df = pd.concat([big_df, temp_df], ignore_index=True)
3566
3561
  big_df.columns = [item[1] for item in data_json["config"]["all"]]
@@ -3583,11 +3578,10 @@ def macro_china_supply_of_money() -> pd.DataFrame:
3583
3578
  "from": "0",
3584
3579
  "num": "31",
3585
3580
  "condition": "",
3586
- "_": "1601624495046",
3587
3581
  }
3588
3582
  r = requests.get(url, params=params)
3589
3583
  data_text = r.text
3590
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3584
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3591
3585
  page_num = math.ceil(int(data_json["count"]) / 31)
3592
3586
  big_df = pd.DataFrame(data_json["data"])
3593
3587
  tqdm = get_tqdm()
@@ -3595,7 +3589,7 @@ def macro_china_supply_of_money() -> pd.DataFrame:
3595
3589
  params.update({"from": i * 31})
3596
3590
  r = requests.get(url, params=params)
3597
3591
  data_text = r.text
3598
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3592
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3599
3593
  temp_df = pd.DataFrame(data_json["data"])
3600
3594
  big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
3601
3595
  big_df.columns = [item[1] for item in data_json["config"]["all"]]
@@ -3618,11 +3612,10 @@ def macro_china_foreign_exchange_gold() -> pd.DataFrame:
3618
3612
  "from": "0",
3619
3613
  "num": "31",
3620
3614
  "condition": "",
3621
- "_": "1601624495046",
3622
3615
  }
3623
3616
  r = requests.get(url, params=params)
3624
3617
  data_text = r.text
3625
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3618
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3626
3619
  page_num = math.ceil(int(data_json["count"]) / 31)
3627
3620
  big_df = pd.DataFrame(data_json["data"])
3628
3621
  tqdm = get_tqdm()
@@ -3630,7 +3623,7 @@ def macro_china_foreign_exchange_gold() -> pd.DataFrame:
3630
3623
  params.update({"from": i * 31})
3631
3624
  r = requests.get(url, params=params)
3632
3625
  data_text = r.text
3633
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3626
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3634
3627
  temp_df = pd.DataFrame(data_json["data"])
3635
3628
  big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
3636
3629
  big_df.columns = [item[1] for item in data_json["config"]["all"]]
@@ -3654,11 +3647,10 @@ def macro_china_retail_price_index() -> pd.DataFrame:
3654
3647
  "from": "0",
3655
3648
  "num": "31",
3656
3649
  "condition": "",
3657
- "_": "1601624495046",
3658
3650
  }
3659
3651
  r = requests.get(url, params=params)
3660
3652
  data_text = r.text
3661
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3653
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3662
3654
  page_num = math.ceil(int(data_json["count"]) / 31)
3663
3655
  big_df = pd.DataFrame(data_json["data"])
3664
3656
  tqdm = get_tqdm()
@@ -3666,7 +3658,7 @@ def macro_china_retail_price_index() -> pd.DataFrame:
3666
3658
  params.update({"from": i * 31})
3667
3659
  r = requests.get(url, params=params)
3668
3660
  data_text = r.text
3669
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3661
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3670
3662
  temp_df = pd.DataFrame(data_json["data"])
3671
3663
  big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
3672
3664
  big_df.columns = [item[1] for item in data_json["config"]["all"]]
@@ -3687,7 +3679,7 @@ def macro_china_real_estate() -> pd.DataFrame:
3687
3679
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
3688
3680
  headers = {
3689
3681
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
3690
- "Chrome/81.0.4044.138 Safari/537.36",
3682
+ "Chrome/81.0.4044.138 Safari/537.36",
3691
3683
  }
3692
3684
  params = {
3693
3685
  "sortColumns": "REPORT_DATE",
@@ -3696,7 +3688,7 @@ def macro_china_real_estate() -> pd.DataFrame:
3696
3688
  "pageNumber": "1",
3697
3689
  "reportName": "RPT_INDUSTRY_INDEX",
3698
3690
  "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
3699
- "CHANGERATE_2Y,CHANGERATE_3Y",
3691
+ "CHANGERATE_2Y,CHANGERATE_3Y",
3700
3692
  "filter": '(INDICATOR_ID="EMM00121987")',
3701
3693
  "source": "WEB",
3702
3694
  "client": "WEB",