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.
- akshare/__init__.py +595 -129
- akshare/air/air_hebei.py +77 -54
- akshare/air/air_zhenqi.py +0 -4
- akshare/air/cons.py +1 -0
- akshare/air/crypto.js +1 -1
- akshare/air/outcrypto.js +1 -1
- akshare/article/cons.py +1 -0
- akshare/article/epu_index.py +4 -3
- akshare/article/ff_factor.py +19 -8
- akshare/article/fred_md.py +4 -1
- akshare/article/risk_rv.py +3 -8
- akshare/bank/bank_cbirc_2020.py +11 -11
- akshare/bank/cons.py +7 -6
- akshare/bond/bond_buy_back_em.py +228 -0
- akshare/bond/bond_cb_sina.py +1 -0
- akshare/bond/bond_cb_ths.py +17 -9
- akshare/bond/bond_cbond.py +19 -14
- akshare/bond/bond_china.py +38 -39
- akshare/bond/bond_china_money.py +1 -1
- akshare/bond/bond_convert.py +10 -9
- akshare/bond/bond_em.py +37 -17
- akshare/bond/bond_summary.py +38 -37
- akshare/bond/bond_zh_cov.py +31 -40
- akshare/bond/bond_zh_sina.py +4 -0
- akshare/bond/cons.py +14 -11
- akshare/cal/__init__.py +0 -0
- akshare/cal/rv.py +170 -0
- akshare/cost/cost_living.py +7 -5
- akshare/crypto/__init__.py +1 -1
- akshare/crypto/crypto_bitcoin_cme.py +9 -7
- akshare/crypto/crypto_hold.py +4 -2
- akshare/currency/currency.py +1 -0
- akshare/currency/currency_china_bank_sina.py +11 -6
- akshare/data/__init__.py +1 -1
- akshare/data/cninfo.js +1 -1
- akshare/datasets.py +10 -21
- akshare/economic/cons.py +10 -3
- akshare/economic/macro_australia.py +74 -69
- akshare/economic/macro_bank.py +95 -653
- akshare/economic/macro_canada.py +92 -81
- akshare/economic/macro_china.py +97 -105
- akshare/economic/macro_china_hk.py +0 -1
- akshare/economic/macro_euro.py +103 -56
- akshare/economic/macro_finance_ths.py +7 -5
- akshare/economic/macro_germany.py +1 -1
- akshare/economic/macro_japan.py +0 -1
- akshare/economic/macro_other.py +1 -6
- akshare/economic/macro_swiss.py +2 -3
- akshare/economic/macro_uk.py +1 -1
- akshare/economic/macro_usa.py +7 -9
- akshare/economic/marco_cnbs.py +11 -6
- akshare/energy/energy_carbon.py +0 -1
- akshare/energy/energy_oil_em.py +1 -2
- akshare/event/cons.py +1 -0
- akshare/exceptions.py +43 -0
- akshare/file_fold/calendar.json +245 -2
- akshare/forex/__init__.py +0 -0
- akshare/forex/cons.py +192 -0
- akshare/forex/forex_em.py +149 -0
- akshare/fortune/fortune_500.py +1 -37
- akshare/fortune/fortune_bloomberg.py +6 -3
- akshare/fortune/fortune_forbes_500.py +3 -6
- akshare/fortune/fortune_hurun.py +2 -1
- akshare/fortune/fortune_xincaifu_500.py +17 -14
- akshare/fund/fund_announcement_em.py +145 -0
- akshare/fund/fund_aum_em.py +49 -35
- akshare/fund/fund_em.py +251 -220
- akshare/fund/fund_etf_em.py +44 -35
- akshare/fund/fund_etf_sina.py +75 -27
- akshare/fund/fund_etf_ths.py +2 -0
- akshare/fund/fund_fee_em.py +172 -0
- akshare/fund/fund_fhsp_em.py +42 -32
- akshare/fund/fund_init_em.py +8 -5
- akshare/fund/fund_lof_em.py +12 -19
- akshare/fund/fund_manager.py +25 -11
- akshare/fund/fund_overview_em.py +42 -0
- akshare/fund/fund_portfolio_em.py +23 -21
- akshare/fund/fund_position_lg.py +19 -8
- akshare/fund/fund_rank_em.py +2 -5
- akshare/fund/fund_rating.py +33 -12
- akshare/fund/fund_scale_em.py +24 -13
- akshare/fund/fund_scale_sina.py +20 -10
- akshare/fund/fund_xq.py +3 -2
- akshare/futures/cons.py +135 -39
- akshare/futures/cot.py +55 -56
- akshare/futures/futures_basis.py +49 -11
- akshare/futures/futures_comex_em.py +1 -0
- akshare/futures/futures_comm_ctp.py +1 -1
- akshare/futures/futures_contract_detail.py +59 -9
- akshare/futures/futures_daily_bar.py +66 -59
- akshare/futures/futures_foreign.py +14 -8
- akshare/futures/futures_hf_em.py +215 -61
- akshare/futures/futures_hist_em.py +191 -0
- akshare/futures/futures_hq_sina.py +5 -3
- akshare/futures/futures_index_ccidx.py +24 -82
- akshare/futures/futures_inventory_99.py +70 -272
- akshare/futures/futures_inventory_em.py +14 -11
- akshare/futures/futures_news_shmet.py +2 -2
- akshare/futures/futures_roll_yield.py +11 -24
- akshare/futures/futures_rule.py +7 -3
- akshare/futures/futures_rule_em.py +38 -0
- akshare/futures/futures_settlement_price_sgx.py +21 -6
- akshare/futures/futures_stock_js.py +0 -1
- akshare/futures/futures_to_spot.py +5 -6
- akshare/futures/futures_warehouse_receipt.py +48 -47
- akshare/futures/futures_zh_sina.py +3 -3
- akshare/futures/receipt.py +298 -165
- akshare/futures/requests_fun.py +16 -3
- akshare/futures/symbol_var.py +32 -13
- akshare/futures_derivative/cons.py +100 -103
- akshare/futures_derivative/futures_contract_info_cffex.py +55 -39
- akshare/futures_derivative/futures_contract_info_czce.py +2 -0
- akshare/futures_derivative/futures_contract_info_dce.py +43 -17
- akshare/futures_derivative/futures_contract_info_gfex.py +43 -31
- akshare/futures_derivative/futures_contract_info_ine.py +43 -34
- akshare/futures_derivative/futures_contract_info_shfe.py +3 -4
- akshare/futures_derivative/futures_cot_sina.py +8 -6
- akshare/futures_derivative/futures_index_sina.py +25 -13
- akshare/fx/cons.py +12 -7
- akshare/fx/fx_c_swap_cm.py +62 -0
- akshare/fx/fx_quote.py +3 -2
- akshare/fx/fx_quote_baidu.py +2 -1
- akshare/hf/__init__.py +1 -1
- akshare/hf/hf_sp500.py +8 -7
- akshare/index/cons.py +132 -28
- akshare/index/index_cni.py +7 -7
- akshare/index/index_cons.py +2 -2
- akshare/index/index_csindex.py +68 -0
- akshare/index/index_cx.py +20 -20
- akshare/index/index_drewry.py +17 -16
- akshare/index/index_eri.py +1 -0
- akshare/index/index_global_em.py +167 -0
- akshare/index/index_global_sina.py +82 -0
- akshare/index/index_kq_fz.py +17 -14
- akshare/index/index_kq_ss.py +1 -0
- akshare/index/index_option_qvix.py +351 -16
- akshare/index/index_research_sw.py +21 -21
- akshare/index/index_spot.py +9 -5
- akshare/index/index_stock_hk.py +5 -9
- akshare/index/index_stock_zh.py +111 -24
- akshare/index/index_stock_zh_csindex.py +3 -367
- akshare/index/index_sugar.py +18 -4
- akshare/index/index_sw.py +10 -2
- akshare/index/index_yw.py +53 -75
- akshare/index/index_zh_em.py +15 -82
- akshare/interest_rate/interbank_rate_em.py +0 -1
- akshare/movie/jm.js +0 -1
- akshare/news/__init__.py +1 -1
- akshare/news/news_baidu.py +395 -222
- akshare/news/news_stock.py +49 -16
- akshare/option/cons.py +2 -2
- akshare/option/option_commodity.py +341 -220
- akshare/option/option_commodity_sina.py +22 -26
- akshare/option/option_contract_info_ctp.py +63 -0
- akshare/option/option_current_sse.py +61 -0
- akshare/option/option_current_szse.py +84 -0
- akshare/option/option_czce.py +37 -9
- akshare/option/option_daily_stats_sse_szse.py +0 -1
- akshare/option/option_em.py +4 -8
- akshare/option/option_finance.py +60 -12
- akshare/option/option_finance_sina.py +7 -7
- akshare/option/option_lhb_em.py +0 -1
- akshare/option/option_margin.py +62 -0
- akshare/option/option_premium_analysis_em.py +58 -53
- akshare/option/option_risk_analysis_em.py +11 -8
- akshare/option/option_risk_indicator_sse.py +3 -4
- akshare/option/option_value_analysis_em.py +62 -55
- akshare/other/__init__.py +1 -1
- akshare/pro/__init__.py +0 -1
- akshare/pro/client.py +6 -4
- akshare/pro/cons.py +3 -2
- akshare/pro/data_pro.py +6 -5
- akshare/qdii/__init__.py +0 -0
- akshare/qdii/qdii_jsl.py +233 -0
- akshare/qhkc/__init__.py +1 -6
- akshare/qhkc/qhkc_api.py +64 -22
- akshare/qhkc_web/__init__.py +1 -6
- akshare/qhkc_web/qhkc_fund.py +10 -6
- akshare/qhkc_web/qhkc_index.py +28 -14
- akshare/qhkc_web/qhkc_tool.py +62 -59
- akshare/rate/__init__.py +1 -1
- akshare/rate/repo_rate.py +36 -32
- akshare/reits/__init__.py +1 -1
- akshare/reits/reits_basic.py +149 -13
- akshare/request.py +117 -0
- akshare/spot/__init__.py +1 -1
- akshare/spot/spot_hog_soozhu.py +165 -3
- akshare/spot/spot_sge.py +70 -9
- akshare/stock/cons.py +60 -23
- akshare/stock/stock_allotment_cninfo.py +8 -8
- akshare/stock/stock_ask_bid_em.py +3 -78
- akshare/stock/stock_board_concept_em.py +160 -35
- akshare/stock/stock_board_industry_em.py +163 -70
- akshare/stock/stock_dividend_cninfo.py +31 -17
- akshare/stock/stock_dzjy_em.py +347 -260
- akshare/stock/stock_fund_em.py +72 -64
- akshare/stock/stock_fund_hold.py +1 -2
- akshare/stock/stock_gsrl_em.py +1 -0
- akshare/stock/stock_hk_comparison_em.py +175 -0
- akshare/stock/stock_hk_famous.py +4 -5
- akshare/stock/stock_hk_fhpx_ths.py +2 -1
- akshare/stock/stock_hk_hot_rank_em.py +1 -0
- akshare/stock/stock_hk_sina.py +84 -36
- akshare/stock/stock_hold_control_cninfo.py +82 -0
- akshare/stock/stock_hold_control_em.py +0 -2
- akshare/stock/stock_hot_rank_em.py +4 -1
- akshare/stock/stock_hot_search_baidu.py +32 -19
- akshare/stock/stock_hot_up_em.py +4 -1
- akshare/stock/stock_hsgt_em.py +155 -0
- akshare/stock/stock_industry.py +1 -0
- akshare/stock/stock_industry_cninfo.py +1 -2
- akshare/stock/stock_info.py +6 -4
- akshare/stock/stock_info_em.py +17 -11
- akshare/stock/stock_intraday_em.py +4 -78
- akshare/stock/stock_intraday_sina.py +2 -2
- akshare/stock/stock_news_cx.py +39 -0
- akshare/stock/stock_profile_cninfo.py +7 -7
- akshare/stock/stock_profile_em.py +302 -0
- akshare/stock/stock_rank_forecast.py +6 -5
- akshare/stock/stock_repurchase_em.py +7 -2
- akshare/stock/stock_share_changes_cninfo.py +7 -5
- akshare/stock/stock_share_hold.py +24 -20
- akshare/stock/stock_stop.py +6 -6
- akshare/stock/stock_summary.py +153 -417
- akshare/stock/stock_us_famous.py +5 -6
- akshare/stock/stock_us_js.py +3 -2
- akshare/stock/stock_us_pink.py +38 -27
- akshare/stock/stock_us_sina.py +7 -3
- akshare/stock/stock_weibo_nlp.py +18 -20
- akshare/stock/stock_xq.py +24 -22
- akshare/stock/stock_zh_a_sina.py +8 -5
- akshare/stock/stock_zh_a_special.py +240 -243
- akshare/stock/stock_zh_a_tick_tx.py +11 -3
- akshare/stock/stock_zh_ah_tx.py +23 -26
- akshare/stock/stock_zh_b_sina.py +2 -2
- akshare/stock/stock_zh_comparison_em.py +250 -0
- akshare/stock/stock_zh_kcb_sina.py +67 -64
- akshare/stock_a/__init__.py +0 -0
- akshare/stock_a/stock_board_concept_name_em.py +170 -0
- akshare/stock_a/stock_individual_fund_flow_rank.py +258 -0
- akshare/stock_a/stock_zh_a_spot.py +212 -0
- akshare/stock_feature/cons.py +1 -0
- akshare/stock_feature/stock_a_indicator.py +9 -54
- akshare/stock_feature/stock_a_pe_and_pb.py +23 -5
- akshare/stock_feature/stock_account_em.py +0 -1
- akshare/stock_feature/stock_all_pb.py +2 -1
- akshare/stock_feature/stock_analyst_em.py +36 -30
- akshare/stock_feature/stock_board_concept_ths.py +328 -0
- akshare/stock_feature/stock_board_industry_ths.py +57 -2
- akshare/stock_feature/stock_buffett_index_lg.py +10 -8
- akshare/stock_feature/stock_classify_sina.py +3 -6
- akshare/stock_feature/stock_comment_em.py +81 -144
- akshare/stock_feature/stock_congestion_lg.py +2 -1
- akshare/stock_feature/stock_cyq_em.py +5 -11
- akshare/stock_feature/stock_disclosure_cninfo.py +6 -6
- akshare/stock_feature/stock_dxsyl_em.py +121 -74
- akshare/stock_feature/stock_ebs_lg.py +5 -4
- akshare/stock_feature/stock_esg_sina.py +29 -7
- akshare/stock_feature/stock_fhps_em.py +2 -1
- akshare/stock_feature/stock_fhps_ths.py +15 -7
- akshare/stock_feature/stock_fund_flow.py +30 -22
- akshare/stock_feature/stock_gddh_em.py +19 -11
- akshare/stock_feature/stock_gdfx_em.py +226 -113
- akshare/stock_feature/stock_gdhs.py +75 -50
- akshare/stock_feature/stock_gdzjc_em.py +21 -10
- akshare/stock_feature/stock_gpzy_em.py +78 -46
- akshare/stock_feature/stock_gxl_lg.py +3 -2
- akshare/stock_feature/stock_hist_em.py +137 -234
- akshare/stock_feature/stock_hist_tx.py +13 -10
- akshare/stock_feature/stock_hk_valuation_baidu.py +20 -8
- akshare/stock_feature/stock_hot_xq.py +4 -6
- akshare/stock_feature/stock_hsgt_em.py +269 -97
- akshare/stock_feature/stock_hsgt_exchange_rate.py +115 -87
- akshare/stock_feature/stock_hsgt_min_em.py +13 -16
- akshare/stock_feature/stock_info.py +7 -80
- akshare/stock_feature/stock_inner_trade_xq.py +38 -31
- akshare/stock_feature/stock_jgdy_em.py +43 -40
- akshare/stock_feature/stock_lhb_em.py +119 -3
- akshare/stock_feature/stock_margin_em.py +0 -1
- akshare/stock_feature/stock_margin_sse.py +0 -2
- akshare/stock_feature/stock_pankou_em.py +71 -35
- akshare/stock_feature/stock_qsjy_em.py +13 -4
- akshare/stock_feature/stock_report_em.py +151 -7
- akshare/stock_feature/stock_research_report_em.py +55 -20
- akshare/stock_feature/stock_sy_em.py +20 -15
- akshare/stock_feature/stock_technology_ths.py +122 -77
- akshare/stock_feature/stock_tfp_em.py +2 -1
- akshare/stock_feature/stock_three_report_em.py +21 -5
- akshare/stock_feature/stock_ttm_lyr.py +18 -9
- akshare/stock_feature/stock_value_em.py +83 -0
- akshare/stock_feature/stock_yjbb_em.py +58 -32
- akshare/stock_feature/stock_yjyg_cninfo.py +6 -2
- akshare/stock_feature/stock_yjyg_em.py +1 -1
- akshare/stock_feature/stock_yzxdr_em.py +24 -22
- akshare/stock_feature/stock_zdhtmx_em.py +20 -6
- akshare/stock_feature/stock_zh_vote_baidu.py +4 -1
- akshare/stock_feature/stock_ztb_em.py +39 -24
- akshare/stock_fundamental/__init__.py +1 -1
- akshare/stock_fundamental/stock_basic_info_xq.py +119 -0
- akshare/stock_fundamental/{stock_finance_hk.py → stock_finance_hk_em.py} +23 -16
- akshare/stock_fundamental/{stock_finance.py → stock_finance_sina.py} +60 -7
- akshare/stock_fundamental/stock_finance_ths.py +524 -57
- akshare/stock_fundamental/stock_finance_us_em.py +268 -0
- akshare/stock_fundamental/stock_gbjg_em.py +80 -0
- akshare/stock_fundamental/stock_hold.py +26 -17
- akshare/stock_fundamental/stock_ipo_declare.py +1 -0
- akshare/stock_fundamental/stock_kcb_detail_sse.py +10 -10
- akshare/stock_fundamental/stock_kcb_sse.py +26 -25
- akshare/stock_fundamental/stock_notice.py +12 -3
- akshare/stock_fundamental/stock_profit_forecast_em.py +31 -13
- akshare/stock_fundamental/stock_profit_forecast_hk_etnet.py +64 -41
- akshare/stock_fundamental/stock_profit_forecast_ths.py +86 -35
- akshare/stock_fundamental/stock_recommend.py +20 -4
- akshare/stock_fundamental/stock_zygc.py +5 -62
- akshare/utils/context.py +43 -0
- akshare/utils/demjson.py +2009 -1338
- akshare/utils/func.py +49 -2
- akshare/utils/multi_decrypt.py +53 -0
- akshare/utils/token_process.py +6 -5
- {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/METADATA +54 -80
- akshare-1.17.99.dist-info/RECORD +409 -0
- {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/WHEEL +1 -1
- {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info/licenses}/LICENSE +1 -1
- tests/test_func.py +3 -5
- akshare/bond/bond_futures.py +0 -50
- akshare/bond/bond_investing.py +0 -139
- akshare/crypto/crypto_hist_investing.py +0 -249
- akshare/fund/fund_announcement.py +0 -56
- akshare/futures/futures_international.py +0 -170
- akshare/futures/futures_news_baidu.py +0 -54
- akshare/futures/inventory_data.py +0 -100
- akshare/futures_derivative/futures_index_price_nh.py +0 -61
- akshare/futures_derivative/futures_index_return_nh.py +0 -47
- akshare/futures_derivative/futures_index_volatility_nh.py +0 -53
- akshare/futures_derivative/futures_other_index_nh.py +0 -145
- akshare/index/index_fear_greed_funddb.py +0 -78
- akshare/index/index_investing.py +0 -232
- akshare/sport/__init__.py +0 -6
- akshare/sport/sport_olympic.py +0 -27
- akshare/stock_feature/stock_wencai.py +0 -104
- akshare/stock_fundamental/stock_mda_ym.py +0 -40
- akshare-1.14.49.dist-info/RECORD +0 -387
- {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/top_level.txt +0 -0
akshare/economic/macro_china.py
CHANGED
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date:
|
|
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
|
-
|
|
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
|
-
|
|
97
|
-
|
|
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
|
-
|
|
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
|
-
|
|
260
|
+
https://data.mofcom.gov.cn/gnmy/shrzgm.shtml
|
|
241
261
|
:return: 社会融资规模增量统计
|
|
242
262
|
:rtype: pandas.DataFrame
|
|
243
263
|
"""
|
|
244
|
-
|
|
245
|
-
|
|
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("{")
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2393
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2696
|
-
|
|
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
|
-
|
|
2943
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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("{")
|
|
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("{")
|
|
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("{")
|
|
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("{")
|
|
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("{")
|
|
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("{")
|
|
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("{")
|
|
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("{")
|
|
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("{")
|
|
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("{")
|
|
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("{")
|
|
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("{")
|
|
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("{")
|
|
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("{")
|
|
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("{")
|
|
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("{")
|
|
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("{")
|
|
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("{")
|
|
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("{")
|
|
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("{")
|
|
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("{")
|
|
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("{")
|
|
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
|
-
|
|
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
|
-
|
|
3691
|
+
"CHANGERATE_2Y,CHANGERATE_3Y",
|
|
3700
3692
|
"filter": '(INDICATOR_ID="EMM00121987")',
|
|
3701
3693
|
"source": "WEB",
|
|
3702
3694
|
"client": "WEB",
|