akshare 1.13.46__py3-none-any.whl → 1.17.99__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- akshare/__init__.py +757 -161
- akshare/air/air_hebei.py +79 -53
- akshare/air/air_zhenqi.py +3 -7
- akshare/air/cons.py +1 -0
- akshare/air/crypto.js +1 -1
- akshare/air/outcrypto.js +1 -1
- akshare/air/sunrise_tad.py +32 -17
- 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 +75 -48
- akshare/bond/bond_convert.py +10 -9
- akshare/bond/bond_em.py +37 -17
- akshare/bond/bond_info_cm.py +28 -8
- akshare/bond/bond_issue_cninfo.py +73 -30
- akshare/bond/bond_summary.py +38 -37
- akshare/bond/bond_zh_cov.py +31 -40
- akshare/bond/bond_zh_sina.py +61 -51
- 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/currency/currency_safe.py +7 -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 +163 -117
- akshare/economic/macro_china_hk.py +0 -1
- akshare/economic/macro_china_nbs.py +24 -7
- akshare/economic/macro_euro.py +103 -56
- akshare/economic/macro_finance_ths.py +135 -0
- akshare/economic/macro_germany.py +1 -1
- akshare/economic/macro_info_ws.py +100 -0
- 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 +94 -126
- akshare/energy/energy_oil_em.py +1 -2
- akshare/event/cons.py +1 -0
- akshare/event/migration.py +3 -2
- 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 +15 -48
- 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_amac.py +38 -15
- 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 +76 -27
- akshare/fund/fund_etf_ths.py +95 -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 +78 -66
- akshare/fund/fund_position_lg.py +19 -8
- akshare/fund/fund_rank_em.py +90 -84
- akshare/fund/fund_rating.py +33 -12
- akshare/fund/fund_report_cninfo.py +63 -48
- 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 +141 -46
- akshare/futures/cot.py +89 -88
- akshare/futures/futures_basis.py +99 -33
- akshare/futures/futures_comex_em.py +1 -0
- akshare/futures/futures_comm_ctp.py +13 -2
- akshare/futures/futures_contract_detail.py +59 -9
- akshare/futures/futures_daily_bar.py +75 -62
- 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 +79 -61
- 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 +1 -2
- akshare/futures/futures_to_spot.py +43 -39
- akshare/futures/futures_warehouse_receipt.py +53 -48
- akshare/futures/futures_zh_sina.py +4 -4
- 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 +7 -8
- akshare/futures_derivative/futures_cot_sina.py +28 -19
- akshare/futures_derivative/futures_index_sina.py +25 -13
- akshare/fx/cons.py +12 -7
- akshare/fx/currency_investing.py +19 -285
- 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_cflp.py +29 -26
- akshare/index/index_cni.py +89 -91
- akshare/index/index_cons.py +26 -10
- akshare/index/index_csindex.py +68 -0
- akshare/index/index_cx.py +263 -62
- 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 +38 -38
- akshare/index/index_spot.py +9 -5
- akshare/index/index_stock_hk.py +6 -10
- akshare/index/index_stock_us_sina.py +1 -1
- akshare/index/index_stock_zh.py +193 -101
- akshare/index/index_stock_zh_csindex.py +15 -369
- akshare/index/index_sugar.py +18 -4
- akshare/index/index_sw.py +62 -34
- akshare/index/index_yw.py +53 -75
- akshare/index/index_zh_em.py +15 -82
- akshare/interest_rate/interbank_rate_em.py +14 -10
- akshare/movie/artist_yien.py +32 -5
- akshare/movie/jm.js +0 -1
- akshare/movie/movie_yien.py +92 -18
- akshare/movie/video_yien.py +28 -5
- akshare/news/__init__.py +1 -1
- akshare/news/news_baidu.py +395 -220
- akshare/news/news_cctv.py +38 -38
- akshare/news/news_stock.py +49 -13
- akshare/nlp/nlp_interface.py +7 -8
- akshare/option/cons.py +12 -12
- akshare/option/option_comm_qihuo.py +86 -0
- akshare/option/option_commodity.py +355 -211
- 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 +145 -0
- akshare/option/option_em.py +4 -8
- akshare/option/option_finance.py +60 -12
- akshare/option/option_finance_sina.py +28 -26
- akshare/option/option_lhb_em.py +62 -57
- 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 +18 -16
- akshare/option/option_value_analysis_em.py +62 -55
- akshare/other/__init__.py +1 -1
- akshare/other/other_car_cpca.py +20 -20
- 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 +232 -0
- akshare/spot/spot_price_qh.py +121 -0
- akshare/spot/spot_sge.py +70 -9
- akshare/stock/cons.py +60 -23
- akshare/stock/stock_allotment_cninfo.py +10 -9
- 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_cg_equity_mortgage.py +15 -11
- akshare/stock/stock_cg_guarantee.py +41 -51
- akshare/stock/stock_cg_lawsuit.py +36 -35
- akshare/stock/stock_dividend_cninfo.py +36 -16
- akshare/stock/stock_dzjy_em.py +347 -260
- akshare/stock/stock_fund_em.py +73 -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 +107 -0
- 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 +91 -42
- akshare/stock/stock_hold_control_cninfo.py +100 -15
- akshare/stock/stock_hold_control_em.py +4 -5
- akshare/stock/stock_hold_num_cninfo.py +18 -12
- 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 +25 -20
- akshare/stock/stock_industry_pe_cninfo.py +45 -31
- akshare/stock/stock_industry_sw.py +5 -9
- akshare/stock/stock_info.py +31 -19
- akshare/stock/stock_info_em.py +17 -11
- akshare/stock/stock_intraday_em.py +9 -80
- akshare/stock/stock_intraday_sina.py +2 -2
- akshare/stock/stock_ipo_summary_cninfo.py +25 -10
- akshare/stock/stock_new_cninfo.py +32 -19
- akshare/stock/stock_news_cx.py +39 -0
- akshare/stock/stock_profile_cninfo.py +9 -8
- akshare/stock/stock_profile_em.py +302 -0
- akshare/stock/stock_rank_forecast.py +8 -6
- akshare/stock/stock_repurchase_em.py +7 -2
- akshare/stock/stock_share_changes_cninfo.py +18 -14
- 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 +19 -11
- akshare/stock/stock_us_js.py +3 -2
- akshare/stock/stock_us_pink.py +38 -27
- akshare/stock/stock_us_sina.py +15 -12
- akshare/stock/stock_weibo_nlp.py +18 -20
- akshare/stock/stock_xq.py +36 -9
- akshare/stock/stock_zh_a_sina.py +58 -80
- 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 +32 -55
- akshare/stock/stock_zh_comparison_em.py +250 -0
- akshare/stock/stock_zh_kcb_report.py +11 -9
- 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_below_net_asset_statistics.py +5 -2
- akshare/stock_feature/stock_a_high_low.py +5 -2
- akshare/stock_feature/stock_a_indicator.py +15 -57
- akshare/stock_feature/stock_a_pe_and_pb.py +39 -9
- 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 +144 -252
- akshare/stock_feature/stock_board_industry_ths.py +137 -401
- 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_concept_futu.py +183 -0
- 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 +20 -10
- 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 +33 -15
- akshare/stock_feature/stock_fhps_em.py +62 -26
- akshare/stock_feature/stock_fhps_ths.py +34 -7
- akshare/stock_feature/stock_fund_flow.py +38 -25
- 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 +158 -237
- 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 +8 -81
- akshare/stock_feature/stock_inner_trade_xq.py +38 -31
- akshare/stock_feature/stock_irm_cninfo.py +32 -9
- akshare/stock_feature/stock_jgdy_em.py +43 -40
- akshare/stock_feature/stock_lh_yybpm.py +36 -37
- akshare/stock_feature/stock_lhb_em.py +165 -35
- akshare/stock_feature/stock_lhb_sina.py +93 -46
- akshare/stock_feature/stock_margin_em.py +101 -0
- akshare/stock_feature/{stock_sse_margin.py → stock_margin_sse.py} +21 -17
- akshare/stock_feature/{stock_szse_margin.py → stock_margin_szse.py} +7 -7
- akshare/stock_feature/stock_market_legu.py +4 -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 +152 -8
- akshare/stock_feature/stock_research_report_em.py +55 -20
- akshare/stock_feature/stock_sns_sseinfo.py +15 -12
- akshare/stock_feature/stock_sy_em.py +20 -15
- akshare/stock_feature/stock_technology_ths.py +152 -120
- akshare/stock_feature/stock_tfp_em.py +37 -14
- akshare/stock_feature/stock_three_report_em.py +120 -78
- 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_valuation_baidu.py +3 -2
- 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} +203 -59
- 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 +41 -18
- 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_register_em.py +448 -0
- akshare/stock_fundamental/stock_zygc.py +5 -62
- akshare/tool/trade_date_hist.py +1 -1
- 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/utils/tqdm.py +13 -3
- {akshare-1.13.46.dist-info → akshare-1.17.99.dist-info}/METADATA +56 -86
- akshare-1.17.99.dist-info/RECORD +409 -0
- {akshare-1.13.46.dist-info → akshare-1.17.99.dist-info}/WHEEL +1 -1
- {akshare-1.13.46.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/fortune/fortune_it_juzi.py +0 -123
- 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 -51
- 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/sport/sport_olympic_winter.py +0 -39
- akshare/stock_feature/stock_wencai.py +0 -104
- akshare/stock_fundamental/stock_mda_ym.py +0 -40
- akshare/stock_fundamental/stock_register.py +0 -292
- akshare-1.13.46.dist-info/RECORD +0 -380
- {akshare-1.13.46.dist-info → akshare-1.17.99.dist-info}/top_level.txt +0 -0
akshare/economic/macro_china.py
CHANGED
|
@@ -1,23 +1,44 @@
|
|
|
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
|
|
15
|
-
from
|
|
16
|
+
from requests.adapters import HTTPAdapter
|
|
17
|
+
from urllib3.poolmanager import PoolManager
|
|
16
18
|
|
|
17
19
|
from akshare.economic.cons import (
|
|
18
20
|
JS_CHINA_ENERGY_DAILY_URL,
|
|
19
21
|
)
|
|
20
22
|
from akshare.utils import demjson
|
|
23
|
+
from akshare.utils.tqdm import get_tqdm
|
|
24
|
+
|
|
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
|
+
)
|
|
21
42
|
|
|
22
43
|
|
|
23
44
|
def __macro_china_base_func(symbol: str, params: dict) -> pd.DataFrame:
|
|
@@ -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",
|
|
@@ -92,7 +113,9 @@ def macro_china_qyspjg() -> pd.DataFrame:
|
|
|
92
113
|
"""
|
|
93
114
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
94
115
|
params = {
|
|
95
|
-
"columns": "REPORT_DATE,TIME,BASE,BASE_SAME,BASE_SEQUENTIAL,FARM_BASE,FARM_BASE_SAME,
|
|
116
|
+
"columns": "REPORT_DATE,TIME,BASE,BASE_SAME,BASE_SEQUENTIAL,FARM_BASE,FARM_BASE_SAME,"
|
|
117
|
+
"FARM_BASE_SEQUENTIAL,MINERAL_BASE,MINERAL_BASE_SAME,MINERAL_BASE_SEQUENTIAL,"
|
|
118
|
+
"ENERGY_BASE,ENERGY_BASE_SAME,ENERGY_BASE_SEQUENTIAL",
|
|
96
119
|
"pageNumber": "1",
|
|
97
120
|
"pageSize": "2000",
|
|
98
121
|
"sortColumns": "REPORT_DATE",
|
|
@@ -103,7 +126,6 @@ def macro_china_qyspjg() -> pd.DataFrame:
|
|
|
103
126
|
"p": "1",
|
|
104
127
|
"pageNo": "1",
|
|
105
128
|
"pageNum": "1",
|
|
106
|
-
"_": "1669047266881",
|
|
107
129
|
}
|
|
108
130
|
r = requests.get(url, params=params)
|
|
109
131
|
data_json = r.json()
|
|
@@ -186,7 +208,8 @@ def macro_china_fdi() -> pd.DataFrame:
|
|
|
186
208
|
"""
|
|
187
209
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
188
210
|
params = {
|
|
189
|
-
"columns": "REPORT_DATE,TIME,ACTUAL_FOREIGN,ACTUAL_FOREIGN_SAME,ACTUAL_FOREIGN_SEQUENTIAL,
|
|
211
|
+
"columns": "REPORT_DATE,TIME,ACTUAL_FOREIGN,ACTUAL_FOREIGN_SAME,ACTUAL_FOREIGN_SEQUENTIAL,"
|
|
212
|
+
"ACTUAL_FOREIGN_ACCUMULATE,FOREIGN_ACCUMULATE_SAME",
|
|
190
213
|
"pageNumber": "1",
|
|
191
214
|
"pageSize": "2000",
|
|
192
215
|
"sortColumns": "REPORT_DATE",
|
|
@@ -197,7 +220,6 @@ def macro_china_fdi() -> pd.DataFrame:
|
|
|
197
220
|
"p": "1",
|
|
198
221
|
"pageNo": "1",
|
|
199
222
|
"pageNum": "1",
|
|
200
|
-
"_": "1669047266881",
|
|
201
223
|
}
|
|
202
224
|
r = requests.get(url, params=params)
|
|
203
225
|
data_json = r.json()
|
|
@@ -227,6 +249,7 @@ def macro_china_fdi() -> pd.DataFrame:
|
|
|
227
249
|
temp_df["当月-环比增长"] = pd.to_numeric(temp_df["当月-环比增长"], errors="coerce")
|
|
228
250
|
temp_df["累计"] = pd.to_numeric(temp_df["累计"], errors="coerce")
|
|
229
251
|
temp_df["累计-同比增长"] = pd.to_numeric(temp_df["累计-同比增长"], errors="coerce")
|
|
252
|
+
temp_df.sort_values(["月份"], ignore_index=True, inplace=True)
|
|
230
253
|
return temp_df
|
|
231
254
|
|
|
232
255
|
|
|
@@ -234,12 +257,14 @@ def macro_china_fdi() -> pd.DataFrame:
|
|
|
234
257
|
def macro_china_shrzgm() -> pd.DataFrame:
|
|
235
258
|
"""
|
|
236
259
|
商务数据中心-国内贸易-社会融资规模增量统计
|
|
237
|
-
|
|
260
|
+
https://data.mofcom.gov.cn/gnmy/shrzgm.shtml
|
|
238
261
|
:return: 社会融资规模增量统计
|
|
239
262
|
:rtype: pandas.DataFrame
|
|
240
263
|
"""
|
|
241
|
-
|
|
242
|
-
|
|
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)
|
|
243
268
|
data_json = r.json()
|
|
244
269
|
temp_df = pd.DataFrame(data_json)
|
|
245
270
|
temp_df.columns = [
|
|
@@ -323,6 +348,7 @@ def macro_china_urban_unemployment() -> pd.DataFrame:
|
|
|
323
348
|
temp_df.columns = ["date", "item", "value"]
|
|
324
349
|
temp_df["item"] = temp_df["item"].map(code_item_map)
|
|
325
350
|
temp_df["value"] = pd.to_numeric(temp_df["value"], errors="coerce")
|
|
351
|
+
temp_df.sort_values(by=["date"], ignore_index=True, inplace=True)
|
|
326
352
|
return temp_df
|
|
327
353
|
|
|
328
354
|
|
|
@@ -706,7 +732,7 @@ def macro_china_daily_energy() -> pd.DataFrame:
|
|
|
706
732
|
str(int(round(t * 1000))), str(int(round(t * 1000)) + 90)
|
|
707
733
|
)
|
|
708
734
|
)
|
|
709
|
-
json_data = json.loads(res.text[res.text.find("{")
|
|
735
|
+
json_data = json.loads(res.text[res.text.find("{"): res.text.rfind("}") + 1])
|
|
710
736
|
date_list = [item["date"] for item in json_data["list"]]
|
|
711
737
|
value_list = [
|
|
712
738
|
item["datas"]["沿海六大电厂库存动态报告"] for item in json_data["list"]
|
|
@@ -963,6 +989,10 @@ def macro_china_lpr() -> pd.DataFrame:
|
|
|
963
989
|
:return: LPR品种详细数据
|
|
964
990
|
:rtype: pandas.DataFrame
|
|
965
991
|
"""
|
|
992
|
+
import warnings
|
|
993
|
+
|
|
994
|
+
warnings.filterwarnings(action="ignore", category=FutureWarning)
|
|
995
|
+
|
|
966
996
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
967
997
|
params = {
|
|
968
998
|
"reportName": "RPTA_WEB_RATE",
|
|
@@ -975,12 +1005,12 @@ def macro_china_lpr() -> pd.DataFrame:
|
|
|
975
1005
|
"p": "1",
|
|
976
1006
|
"pageNo": "1",
|
|
977
1007
|
"pageNum": "1",
|
|
978
|
-
"_": "1689835278471",
|
|
979
1008
|
}
|
|
980
1009
|
r = requests.get(url, params=params)
|
|
981
1010
|
data_json = r.json()
|
|
982
1011
|
total_page = data_json["result"]["pages"]
|
|
983
1012
|
big_df = pd.DataFrame()
|
|
1013
|
+
tqdm = get_tqdm()
|
|
984
1014
|
for page in tqdm(range(1, total_page + 1), leave=False):
|
|
985
1015
|
params.update({"pageNumber": page})
|
|
986
1016
|
r = requests.get(url, params=params)
|
|
@@ -1016,7 +1046,7 @@ def macro_china_new_house_price(
|
|
|
1016
1046
|
params = {
|
|
1017
1047
|
"reportName": "RPT_ECONOMY_HOUSE_PRICE",
|
|
1018
1048
|
"columns": "REPORT_DATE,CITY,FIRST_COMHOUSE_SAME,FIRST_COMHOUSE_SEQUENTIAL,FIRST_COMHOUSE_BASE,"
|
|
1019
|
-
|
|
1049
|
+
"SECOND_HOUSE_SAME,SECOND_HOUSE_SEQUENTIAL,SECOND_HOUSE_BASE,REPORT_DAY",
|
|
1020
1050
|
"filter": f'(CITY in ("{city_first}","{city_second}"))',
|
|
1021
1051
|
"pageNumber": "1",
|
|
1022
1052
|
"pageSize": "500",
|
|
@@ -1027,7 +1057,6 @@ def macro_china_new_house_price(
|
|
|
1027
1057
|
"p": "1",
|
|
1028
1058
|
"pageNo": "1",
|
|
1029
1059
|
"pageNum": "1",
|
|
1030
|
-
"_": "1669352163467",
|
|
1031
1060
|
}
|
|
1032
1061
|
r = requests.get(url, params=params)
|
|
1033
1062
|
data_json = r.json()
|
|
@@ -1038,8 +1067,8 @@ def macro_china_new_house_price(
|
|
|
1038
1067
|
"新建商品住宅价格指数-同比",
|
|
1039
1068
|
"新建商品住宅价格指数-环比",
|
|
1040
1069
|
"新建商品住宅价格指数-定基",
|
|
1041
|
-
"二手住宅价格指数-环比",
|
|
1042
1070
|
"二手住宅价格指数-同比",
|
|
1071
|
+
"二手住宅价格指数-环比",
|
|
1043
1072
|
"二手住宅价格指数-定基",
|
|
1044
1073
|
"-",
|
|
1045
1074
|
]
|
|
@@ -1050,8 +1079,8 @@ def macro_china_new_house_price(
|
|
|
1050
1079
|
"新建商品住宅价格指数-同比",
|
|
1051
1080
|
"新建商品住宅价格指数-环比",
|
|
1052
1081
|
"新建商品住宅价格指数-定基",
|
|
1053
|
-
"二手住宅价格指数-环比",
|
|
1054
1082
|
"二手住宅价格指数-同比",
|
|
1083
|
+
"二手住宅价格指数-环比",
|
|
1055
1084
|
"二手住宅价格指数-定基",
|
|
1056
1085
|
]
|
|
1057
1086
|
]
|
|
@@ -1074,6 +1103,7 @@ def macro_china_new_house_price(
|
|
|
1074
1103
|
temp_df["二手住宅价格指数-定基"] = pd.to_numeric(
|
|
1075
1104
|
temp_df["二手住宅价格指数-定基"], errors="coerce"
|
|
1076
1105
|
)
|
|
1106
|
+
temp_df.sort_values(["日期"], ignore_index=True, inplace=True)
|
|
1077
1107
|
return temp_df
|
|
1078
1108
|
|
|
1079
1109
|
|
|
@@ -1087,7 +1117,8 @@ def macro_china_enterprise_boom_index() -> pd.DataFrame:
|
|
|
1087
1117
|
"""
|
|
1088
1118
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
1089
1119
|
params = {
|
|
1090
|
-
"columns": "REPORT_DATE,TIME,BOOM_INDEX,FAITH_INDEX,BOOM_INDEX_SAME,BOOM_INDEX_SEQUENTIAL,
|
|
1120
|
+
"columns": "REPORT_DATE,TIME,BOOM_INDEX,FAITH_INDEX,BOOM_INDEX_SAME,BOOM_INDEX_SEQUENTIAL,"
|
|
1121
|
+
"FAITH_INDEX_SAME,FAITH_INDEX_SEQUENTIAL",
|
|
1091
1122
|
"pageNumber": "1",
|
|
1092
1123
|
"pageSize": "500",
|
|
1093
1124
|
"sortColumns": "REPORT_DATE",
|
|
@@ -1098,7 +1129,6 @@ def macro_china_enterprise_boom_index() -> pd.DataFrame:
|
|
|
1098
1129
|
"p": "1",
|
|
1099
1130
|
"pageNo": "1",
|
|
1100
1131
|
"pageNum": "1",
|
|
1101
|
-
"_": "1669352163467",
|
|
1102
1132
|
}
|
|
1103
1133
|
r = requests.get(url, params=params)
|
|
1104
1134
|
data_json = r.json()
|
|
@@ -1166,7 +1196,6 @@ def macro_china_national_tax_receipts() -> pd.DataFrame:
|
|
|
1166
1196
|
"p": "1",
|
|
1167
1197
|
"pageNo": "1",
|
|
1168
1198
|
"pageNum": "1",
|
|
1169
|
-
"_": "1669352163467",
|
|
1170
1199
|
}
|
|
1171
1200
|
r = requests.get(url, params=params)
|
|
1172
1201
|
data_json = r.json()
|
|
@@ -1196,7 +1225,8 @@ def macro_china_bank_financing() -> pd.DataFrame:
|
|
|
1196
1225
|
"pageSize": "1000",
|
|
1197
1226
|
"pageNumber": "1",
|
|
1198
1227
|
"reportName": "RPT_INDUSTRY_INDEX",
|
|
1199
|
-
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,
|
|
1228
|
+
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
|
1229
|
+
"CHANGERATE_2Y,CHANGERATE_3Y",
|
|
1200
1230
|
"filter": '(INDICATOR_ID="EMI01516267")',
|
|
1201
1231
|
"source": "WEB",
|
|
1202
1232
|
"client": "WEB",
|
|
@@ -1241,7 +1271,8 @@ def macro_china_insurance_income() -> pd.DataFrame:
|
|
|
1241
1271
|
"pageSize": "1000",
|
|
1242
1272
|
"pageNumber": "1",
|
|
1243
1273
|
"reportName": "RPT_INDUSTRY_INDEX",
|
|
1244
|
-
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,
|
|
1274
|
+
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
|
1275
|
+
"CHANGERATE_2Y,CHANGERATE_3Y",
|
|
1245
1276
|
"filter": '(INDICATOR_ID="EMM00088870")',
|
|
1246
1277
|
"source": "WEB",
|
|
1247
1278
|
"client": "WEB",
|
|
@@ -1286,7 +1317,8 @@ def macro_china_mobile_number() -> pd.DataFrame:
|
|
|
1286
1317
|
"pageSize": "1000",
|
|
1287
1318
|
"pageNumber": "1",
|
|
1288
1319
|
"reportName": "RPT_INDUSTRY_INDEX",
|
|
1289
|
-
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,
|
|
1320
|
+
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
|
1321
|
+
"CHANGERATE_2Y,CHANGERATE_3Y",
|
|
1290
1322
|
"filter": '(INDICATOR_ID="EMI00225823")',
|
|
1291
1323
|
"source": "WEB",
|
|
1292
1324
|
"client": "WEB",
|
|
@@ -1332,7 +1364,8 @@ def macro_china_vegetable_basket() -> pd.DataFrame:
|
|
|
1332
1364
|
"pageSize": "500",
|
|
1333
1365
|
"pageNumber": "1",
|
|
1334
1366
|
"reportName": "RPT_INDUSTRY_INDEX",
|
|
1335
|
-
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,
|
|
1367
|
+
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
|
1368
|
+
"CHANGERATE_2Y,CHANGERATE_3Y",
|
|
1336
1369
|
"filter": '(INDICATOR_ID="EMI00009275")',
|
|
1337
1370
|
"source": "WEB",
|
|
1338
1371
|
"client": "WEB",
|
|
@@ -1341,6 +1374,7 @@ def macro_china_vegetable_basket() -> pd.DataFrame:
|
|
|
1341
1374
|
data_json = r.json()
|
|
1342
1375
|
total_page = data_json["result"]["pages"]
|
|
1343
1376
|
big_df = pd.DataFrame()
|
|
1377
|
+
tqdm = get_tqdm()
|
|
1344
1378
|
for page in tqdm(range(1, total_page + 1), leave=False):
|
|
1345
1379
|
params.update({"pageNumber": page})
|
|
1346
1380
|
r = requests.get(url, params=params)
|
|
@@ -1385,7 +1419,8 @@ def macro_china_agricultural_product() -> pd.DataFrame:
|
|
|
1385
1419
|
"pageSize": "500",
|
|
1386
1420
|
"pageNumber": "1",
|
|
1387
1421
|
"reportName": "RPT_INDUSTRY_INDEX",
|
|
1388
|
-
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,
|
|
1422
|
+
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
|
1423
|
+
"CHANGERATE_2Y,CHANGERATE_3Y",
|
|
1389
1424
|
"filter": '(INDICATOR_ID="EMI00009274")',
|
|
1390
1425
|
"source": "WEB",
|
|
1391
1426
|
"client": "WEB",
|
|
@@ -1394,6 +1429,7 @@ def macro_china_agricultural_product() -> pd.DataFrame:
|
|
|
1394
1429
|
data_json = r.json()
|
|
1395
1430
|
total_page = data_json["result"]["pages"]
|
|
1396
1431
|
big_df = pd.DataFrame()
|
|
1432
|
+
tqdm = get_tqdm()
|
|
1397
1433
|
for page in tqdm(range(1, total_page + 1), leave=False):
|
|
1398
1434
|
params.update({"pageNumber": page})
|
|
1399
1435
|
r = requests.get(url, params=params)
|
|
@@ -1438,7 +1474,8 @@ def macro_china_agricultural_index() -> pd.DataFrame:
|
|
|
1438
1474
|
"pageSize": "500",
|
|
1439
1475
|
"pageNumber": "1",
|
|
1440
1476
|
"reportName": "RPT_INDUSTRY_INDEX",
|
|
1441
|
-
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,
|
|
1477
|
+
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
|
1478
|
+
"CHANGERATE_2Y,CHANGERATE_3Y",
|
|
1442
1479
|
"filter": '(INDICATOR_ID="EMI00662543")',
|
|
1443
1480
|
"source": "WEB",
|
|
1444
1481
|
"client": "WEB",
|
|
@@ -1447,6 +1484,7 @@ def macro_china_agricultural_index() -> pd.DataFrame:
|
|
|
1447
1484
|
data_json = r.json()
|
|
1448
1485
|
total_page = data_json["result"]["pages"]
|
|
1449
1486
|
big_df = pd.DataFrame()
|
|
1487
|
+
tqdm = get_tqdm()
|
|
1450
1488
|
for page in tqdm(range(1, total_page + 1), leave=False):
|
|
1451
1489
|
params.update({"pageNumber": page})
|
|
1452
1490
|
r = requests.get(url, params=params)
|
|
@@ -1491,7 +1529,8 @@ def macro_china_energy_index() -> pd.DataFrame:
|
|
|
1491
1529
|
"pageSize": "500",
|
|
1492
1530
|
"pageNumber": "1",
|
|
1493
1531
|
"reportName": "RPT_INDUSTRY_INDEX",
|
|
1494
|
-
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,
|
|
1532
|
+
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
|
1533
|
+
"CHANGERATE_2Y,CHANGERATE_3Y",
|
|
1495
1534
|
"filter": '(INDICATOR_ID="EMI00662539")',
|
|
1496
1535
|
"source": "WEB",
|
|
1497
1536
|
"client": "WEB",
|
|
@@ -1500,6 +1539,7 @@ def macro_china_energy_index() -> pd.DataFrame:
|
|
|
1500
1539
|
data_json = r.json()
|
|
1501
1540
|
total_page = data_json["result"]["pages"]
|
|
1502
1541
|
big_df = pd.DataFrame()
|
|
1542
|
+
tqdm = get_tqdm()
|
|
1503
1543
|
for page in tqdm(range(1, total_page + 1), leave=False):
|
|
1504
1544
|
params.update({"pageNumber": page})
|
|
1505
1545
|
r = requests.get(url, params=params)
|
|
@@ -1544,7 +1584,8 @@ def macro_china_commodity_price_index() -> pd.DataFrame:
|
|
|
1544
1584
|
"pageSize": "500",
|
|
1545
1585
|
"pageNumber": "1",
|
|
1546
1586
|
"reportName": "RPT_INDUSTRY_INDEX",
|
|
1547
|
-
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,
|
|
1587
|
+
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
|
1588
|
+
"CHANGERATE_2Y,CHANGERATE_3Y",
|
|
1548
1589
|
"filter": '(INDICATOR_ID="EMI00662535")',
|
|
1549
1590
|
"source": "WEB",
|
|
1550
1591
|
"client": "WEB",
|
|
@@ -1553,6 +1594,7 @@ def macro_china_commodity_price_index() -> pd.DataFrame:
|
|
|
1553
1594
|
data_json = r.json()
|
|
1554
1595
|
total_page = data_json["result"]["pages"]
|
|
1555
1596
|
big_df = pd.DataFrame()
|
|
1597
|
+
tqdm = get_tqdm()
|
|
1556
1598
|
for page in tqdm(range(1, total_page + 1), leave=False):
|
|
1557
1599
|
params.update({"pageNumber": page})
|
|
1558
1600
|
r = requests.get(url, params=params)
|
|
@@ -1597,7 +1639,8 @@ def macro_global_sox_index() -> pd.DataFrame:
|
|
|
1597
1639
|
"pageSize": "500",
|
|
1598
1640
|
"pageNumber": "1",
|
|
1599
1641
|
"reportName": "RPT_INDUSTRY_INDEX",
|
|
1600
|
-
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,
|
|
1642
|
+
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
|
1643
|
+
"CHANGERATE_2Y,CHANGERATE_3Y",
|
|
1601
1644
|
"filter": '(INDICATOR_ID="EMI00055562")',
|
|
1602
1645
|
"source": "WEB",
|
|
1603
1646
|
"client": "WEB",
|
|
@@ -1606,6 +1649,7 @@ def macro_global_sox_index() -> pd.DataFrame:
|
|
|
1606
1649
|
data_json = r.json()
|
|
1607
1650
|
total_page = data_json["result"]["pages"]
|
|
1608
1651
|
big_df = pd.DataFrame()
|
|
1652
|
+
tqdm = get_tqdm()
|
|
1609
1653
|
for page in tqdm(range(1, total_page + 1), leave=False):
|
|
1610
1654
|
params.update({"pageNumber": page})
|
|
1611
1655
|
r = requests.get(url, params=params)
|
|
@@ -1650,7 +1694,8 @@ def macro_china_yw_electronic_index() -> pd.DataFrame:
|
|
|
1650
1694
|
"pageSize": "500",
|
|
1651
1695
|
"pageNumber": "1",
|
|
1652
1696
|
"reportName": "RPT_INDUSTRY_INDEX",
|
|
1653
|
-
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,
|
|
1697
|
+
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
|
1698
|
+
"CHANGERATE_2Y,CHANGERATE_3Y",
|
|
1654
1699
|
"filter": '(INDICATOR_ID="EMI00055551")',
|
|
1655
1700
|
"source": "WEB",
|
|
1656
1701
|
"client": "WEB",
|
|
@@ -1659,6 +1704,7 @@ def macro_china_yw_electronic_index() -> pd.DataFrame:
|
|
|
1659
1704
|
data_json = r.json()
|
|
1660
1705
|
total_page = data_json["result"]["pages"]
|
|
1661
1706
|
big_df = pd.DataFrame()
|
|
1707
|
+
tqdm = get_tqdm()
|
|
1662
1708
|
for page in tqdm(range(1, total_page + 1), leave=False):
|
|
1663
1709
|
params.update({"pageNumber": page})
|
|
1664
1710
|
r = requests.get(url, params=params)
|
|
@@ -1707,7 +1753,7 @@ def macro_china_construction_index() -> pd.DataFrame:
|
|
|
1707
1753
|
"pageNumber": "1",
|
|
1708
1754
|
"reportName": "RPT_INDUSTRY_INDEX",
|
|
1709
1755
|
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,"
|
|
1710
|
-
|
|
1756
|
+
"CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
|
|
1711
1757
|
"filter": '(INDICATOR_ID="EMI00662541")',
|
|
1712
1758
|
"source": "WEB",
|
|
1713
1759
|
"client": "WEB",
|
|
@@ -1716,6 +1762,7 @@ def macro_china_construction_index() -> pd.DataFrame:
|
|
|
1716
1762
|
data_json = r.json()
|
|
1717
1763
|
total_page = data_json["result"]["pages"]
|
|
1718
1764
|
big_df = pd.DataFrame()
|
|
1765
|
+
tqdm = get_tqdm()
|
|
1719
1766
|
for page in tqdm(range(1, total_page + 1), leave=False):
|
|
1720
1767
|
params.update({"pageNumber": page})
|
|
1721
1768
|
r = requests.get(url, params=params)
|
|
@@ -1760,7 +1807,8 @@ def macro_china_construction_price_index() -> pd.DataFrame:
|
|
|
1760
1807
|
"pageSize": "500",
|
|
1761
1808
|
"pageNumber": "1",
|
|
1762
1809
|
"reportName": "RPT_INDUSTRY_INDEX",
|
|
1763
|
-
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,
|
|
1810
|
+
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
|
1811
|
+
"CHANGERATE_2Y,CHANGERATE_3Y",
|
|
1764
1812
|
"filter": '(INDICATOR_ID="EMI00237146")',
|
|
1765
1813
|
"source": "WEB",
|
|
1766
1814
|
"client": "WEB",
|
|
@@ -1769,6 +1817,7 @@ def macro_china_construction_price_index() -> pd.DataFrame:
|
|
|
1769
1817
|
data_json = r.json()
|
|
1770
1818
|
total_page = data_json["result"]["pages"]
|
|
1771
1819
|
big_df = pd.DataFrame()
|
|
1820
|
+
tqdm = get_tqdm()
|
|
1772
1821
|
for page in tqdm(range(1, total_page + 1), leave=False):
|
|
1773
1822
|
params.update({"pageNumber": page})
|
|
1774
1823
|
r = requests.get(url, params=params)
|
|
@@ -1813,7 +1862,8 @@ def macro_china_lpi_index() -> pd.DataFrame:
|
|
|
1813
1862
|
"pageSize": "500",
|
|
1814
1863
|
"pageNumber": "1",
|
|
1815
1864
|
"reportName": "RPT_INDUSTRY_INDEX",
|
|
1816
|
-
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,
|
|
1865
|
+
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
|
1866
|
+
"CHANGERATE_2Y,CHANGERATE_3Y",
|
|
1817
1867
|
"filter": '(INDICATOR_ID="EMI00352262")',
|
|
1818
1868
|
"source": "WEB",
|
|
1819
1869
|
"client": "WEB",
|
|
@@ -1822,6 +1872,7 @@ def macro_china_lpi_index() -> pd.DataFrame:
|
|
|
1822
1872
|
data_json = r.json()
|
|
1823
1873
|
total_page = data_json["result"]["pages"]
|
|
1824
1874
|
big_df = pd.DataFrame()
|
|
1875
|
+
tqdm = get_tqdm()
|
|
1825
1876
|
for page in tqdm(range(1, total_page + 1), leave=False):
|
|
1826
1877
|
params.update({"pageNumber": page})
|
|
1827
1878
|
r = requests.get(url, params=params)
|
|
@@ -1866,7 +1917,8 @@ def macro_china_bdti_index() -> pd.DataFrame:
|
|
|
1866
1917
|
"pageSize": "500",
|
|
1867
1918
|
"pageNumber": "1",
|
|
1868
1919
|
"reportName": "RPT_INDUSTRY_INDEX",
|
|
1869
|
-
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,
|
|
1920
|
+
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
|
1921
|
+
"CHANGERATE_2Y,CHANGERATE_3Y",
|
|
1870
1922
|
"filter": '(INDICATOR_ID="EMI00107668")',
|
|
1871
1923
|
"source": "WEB",
|
|
1872
1924
|
"client": "WEB",
|
|
@@ -1875,6 +1927,7 @@ def macro_china_bdti_index() -> pd.DataFrame:
|
|
|
1875
1927
|
data_json = r.json()
|
|
1876
1928
|
total_page = data_json["result"]["pages"]
|
|
1877
1929
|
big_df = pd.DataFrame()
|
|
1930
|
+
tqdm = get_tqdm()
|
|
1878
1931
|
for page in tqdm(range(1, total_page + 1), leave=False):
|
|
1879
1932
|
params.update({"pageNumber": page})
|
|
1880
1933
|
r = requests.get(url, params=params)
|
|
@@ -1919,7 +1972,8 @@ def macro_china_bsi_index() -> pd.DataFrame:
|
|
|
1919
1972
|
"pageSize": "500",
|
|
1920
1973
|
"pageNumber": "1",
|
|
1921
1974
|
"reportName": "RPT_INDUSTRY_INDEX",
|
|
1922
|
-
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,
|
|
1975
|
+
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
|
1976
|
+
"CHANGERATE_2Y,CHANGERATE_3Y",
|
|
1923
1977
|
"filter": '(INDICATOR_ID="EMI00107667")',
|
|
1924
1978
|
"source": "WEB",
|
|
1925
1979
|
"client": "WEB",
|
|
@@ -1928,6 +1982,7 @@ def macro_china_bsi_index() -> pd.DataFrame:
|
|
|
1928
1982
|
data_json = r.json()
|
|
1929
1983
|
total_page = data_json["result"]["pages"]
|
|
1930
1984
|
big_df = pd.DataFrame()
|
|
1985
|
+
tqdm = get_tqdm()
|
|
1931
1986
|
for page in tqdm(range(1, total_page + 1), leave=False):
|
|
1932
1987
|
params.update({"pageNumber": page})
|
|
1933
1988
|
r = requests.get(url, params=params)
|
|
@@ -1973,7 +2028,7 @@ def _em_macro_1(em_id) -> pd.DataFrame:
|
|
|
1973
2028
|
"pageNumber": "1",
|
|
1974
2029
|
"reportName": "RPT_INDUSTRY_INDEX",
|
|
1975
2030
|
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,"
|
|
1976
|
-
|
|
2031
|
+
"CHANGERATE_6M,CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
|
|
1977
2032
|
"filter": "(INDICATOR_ID=" + ind_id + ")",
|
|
1978
2033
|
"source": "WEB",
|
|
1979
2034
|
"client": "WEB",
|
|
@@ -1982,6 +2037,7 @@ def _em_macro_1(em_id) -> pd.DataFrame:
|
|
|
1982
2037
|
data_json = r.json()
|
|
1983
2038
|
total_page = data_json["result"]["pages"]
|
|
1984
2039
|
big_df = pd.DataFrame()
|
|
2040
|
+
tqdm = get_tqdm()
|
|
1985
2041
|
for page in tqdm(range(1, total_page + 1), leave=False):
|
|
1986
2042
|
params.update({"pageNumber": page})
|
|
1987
2043
|
r = requests.get(url, params=params)
|
|
@@ -2066,7 +2122,7 @@ def macro_china_new_financial_credit() -> pd.DataFrame:
|
|
|
2066
2122
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
2067
2123
|
params = {
|
|
2068
2124
|
"columns": "REPORT_DATE,TIME,RMB_LOAN,RMB_LOAN_SAME,RMB_LOAN_SEQUENTIAL,"
|
|
2069
|
-
|
|
2125
|
+
"RMB_LOAN_ACCUMULATE,LOAN_ACCUMULATE_SAME",
|
|
2070
2126
|
"pageNumber": "1",
|
|
2071
2127
|
"pageSize": "2000",
|
|
2072
2128
|
"sortColumns": "REPORT_DATE",
|
|
@@ -2077,7 +2133,6 @@ def macro_china_new_financial_credit() -> pd.DataFrame:
|
|
|
2077
2133
|
"p": "1",
|
|
2078
2134
|
"pageNo": "1",
|
|
2079
2135
|
"pageNum": "1",
|
|
2080
|
-
"_": "1669047266881",
|
|
2081
2136
|
}
|
|
2082
2137
|
r = requests.get(url, params=params)
|
|
2083
2138
|
data_json = r.json()
|
|
@@ -2115,11 +2170,11 @@ def macro_china_fx_gold() -> pd.DataFrame:
|
|
|
2115
2170
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
2116
2171
|
headers = {
|
|
2117
2172
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
2118
|
-
|
|
2173
|
+
"Chrome/81.0.4044.138 Safari/537.36",
|
|
2119
2174
|
}
|
|
2120
2175
|
params = {
|
|
2121
2176
|
"columns": "REPORT_DATE,TIME,GOLD_RESERVES,GOLD_RESERVES_SAME,"
|
|
2122
|
-
|
|
2177
|
+
"GOLD_RESERVES_SEQUENTIAL,FOREX,FOREX_SAME,FOREX_SEQUENTIAL",
|
|
2123
2178
|
"pageNumber": "1",
|
|
2124
2179
|
"pageSize": "1000",
|
|
2125
2180
|
"sortColumns": "REPORT_DATE",
|
|
@@ -2130,7 +2185,6 @@ def macro_china_fx_gold() -> pd.DataFrame:
|
|
|
2130
2185
|
"p": "1",
|
|
2131
2186
|
"pageNo": "1",
|
|
2132
2187
|
"pageNum": "1",
|
|
2133
|
-
"_": "1660718498421",
|
|
2134
2188
|
}
|
|
2135
2189
|
r = requests.get(url, params=params, headers=headers)
|
|
2136
2190
|
data_json = r.json()
|
|
@@ -2182,19 +2236,18 @@ def macro_china_stock_market_cap() -> pd.DataFrame:
|
|
|
2182
2236
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
2183
2237
|
headers = {
|
|
2184
2238
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
2185
|
-
|
|
2239
|
+
"Chrome/81.0.4044.138 Safari/537.36",
|
|
2186
2240
|
}
|
|
2187
2241
|
params = {
|
|
2188
2242
|
"reportName": "RPT_ECONOMY_STOCK_STATISTICS",
|
|
2189
2243
|
"columns": "REPORT_DATE,TIME,TOTAL_SHARES_SH,TOTAL_MARKE_SH,DEAL_AMOUNT_SH,VOLUME_SH,HIGH_INDEX_SH,"
|
|
2190
|
-
|
|
2244
|
+
"LOW_INDEX_SH,TOTAL_SZARES_SZ,TOTAL_MARKE_SZ,DEAL_AMOUNT_SZ,VOLUME_SZ,HIGH_INDEX_SZ,LOW_INDEX_SZ",
|
|
2191
2245
|
"sortColumns": "REPORT_DATE",
|
|
2192
2246
|
"sortTypes": "-1",
|
|
2193
2247
|
"pageNumber": "1",
|
|
2194
2248
|
"pageSize": "1000",
|
|
2195
2249
|
"source": "WEB",
|
|
2196
2250
|
"client": "WEB",
|
|
2197
|
-
"_": "1660718498421",
|
|
2198
2251
|
}
|
|
2199
2252
|
r = requests.get(url, params=params, headers=headers)
|
|
2200
2253
|
data_json = r.json()
|
|
@@ -2269,7 +2322,7 @@ def macro_china_money_supply() -> pd.DataFrame:
|
|
|
2269
2322
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
2270
2323
|
params = {
|
|
2271
2324
|
"columns": "REPORT_DATE,TIME,BASIC_CURRENCY,BASIC_CURRENCY_SAME,BASIC_CURRENCY_SEQUENTIAL,CURRENCY,"
|
|
2272
|
-
|
|
2325
|
+
"CURRENCY_SAME,CURRENCY_SEQUENTIAL,FREE_CASH,FREE_CASH_SAME,FREE_CASH_SEQUENTIAL",
|
|
2273
2326
|
"pageNumber": "1",
|
|
2274
2327
|
"pageSize": "2000",
|
|
2275
2328
|
"sortColumns": "REPORT_DATE",
|
|
@@ -2280,7 +2333,6 @@ def macro_china_money_supply() -> pd.DataFrame:
|
|
|
2280
2333
|
"p": "1",
|
|
2281
2334
|
"pageNo": "1",
|
|
2282
2335
|
"pageNum": "1",
|
|
2283
|
-
"_": "1669047266881",
|
|
2284
2336
|
}
|
|
2285
2337
|
r = requests.get(url, params=params)
|
|
2286
2338
|
data_json = r.json()
|
|
@@ -2353,8 +2405,8 @@ def macro_china_cpi() -> pd.DataFrame:
|
|
|
2353
2405
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
2354
2406
|
params = {
|
|
2355
2407
|
"columns": "REPORT_DATE,TIME,NATIONAL_SAME,NATIONAL_BASE,NATIONAL_SEQUENTIAL,NATIONAL_ACCUMULATE,"
|
|
2356
|
-
|
|
2357
|
-
|
|
2408
|
+
"CITY_SAME,CITY_BASE,CITY_SEQUENTIAL,CITY_ACCUMULATE,RURAL_SAME,"
|
|
2409
|
+
"RURAL_BASE,RURAL_SEQUENTIAL,RURAL_ACCUMULATE",
|
|
2358
2410
|
"pageNumber": "1",
|
|
2359
2411
|
"pageSize": "2000",
|
|
2360
2412
|
"sortColumns": "REPORT_DATE",
|
|
@@ -2365,7 +2417,6 @@ def macro_china_cpi() -> pd.DataFrame:
|
|
|
2365
2417
|
"p": "1",
|
|
2366
2418
|
"pageNo": "1",
|
|
2367
2419
|
"pageNum": "1",
|
|
2368
|
-
"_": "1669047266881",
|
|
2369
2420
|
}
|
|
2370
2421
|
r = requests.get(url, params=params)
|
|
2371
2422
|
data_json = r.json()
|
|
@@ -2429,7 +2480,7 @@ def macro_china_gdp() -> pd.DataFrame:
|
|
|
2429
2480
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
2430
2481
|
params = {
|
|
2431
2482
|
"columns": "REPORT_DATE,TIME,DOMESTICL_PRODUCT_BASE,FIRST_PRODUCT_BASE,SECOND_PRODUCT_BASE,"
|
|
2432
|
-
|
|
2483
|
+
"THIRD_PRODUCT_BASE,SUM_SAME,FIRST_SAME,SECOND_SAME,THIRD_SAME",
|
|
2433
2484
|
"pageNumber": "1",
|
|
2434
2485
|
"pageSize": "2000",
|
|
2435
2486
|
"sortColumns": "REPORT_DATE",
|
|
@@ -2440,7 +2491,6 @@ def macro_china_gdp() -> pd.DataFrame:
|
|
|
2440
2491
|
"p": "1",
|
|
2441
2492
|
"pageNo": "1",
|
|
2442
2493
|
"pageNum": "1",
|
|
2443
|
-
"_": "1669047266881",
|
|
2444
2494
|
}
|
|
2445
2495
|
r = requests.get(url, params=params)
|
|
2446
2496
|
data_json = r.json()
|
|
@@ -2517,7 +2567,6 @@ def macro_china_ppi() -> pd.DataFrame:
|
|
|
2517
2567
|
"p": "1",
|
|
2518
2568
|
"pageNo": "1",
|
|
2519
2569
|
"pageNum": "1",
|
|
2520
|
-
"_": "1669047266881",
|
|
2521
2570
|
}
|
|
2522
2571
|
r = requests.get(url, params=params)
|
|
2523
2572
|
data_json = r.json()
|
|
@@ -2563,7 +2612,6 @@ def macro_china_pmi() -> pd.DataFrame:
|
|
|
2563
2612
|
"p": "1",
|
|
2564
2613
|
"pageNo": "1",
|
|
2565
2614
|
"pageNum": "1",
|
|
2566
|
-
"_": "1669047266881",
|
|
2567
2615
|
}
|
|
2568
2616
|
r = requests.get(url, params=params)
|
|
2569
2617
|
data_json = r.json()
|
|
@@ -2616,7 +2664,6 @@ def macro_china_gdzctz() -> pd.DataFrame:
|
|
|
2616
2664
|
"p": "1",
|
|
2617
2665
|
"pageNo": "1",
|
|
2618
2666
|
"pageNum": "1",
|
|
2619
|
-
"_": "1669047266881",
|
|
2620
2667
|
}
|
|
2621
2668
|
r = requests.get(url, params=params)
|
|
2622
2669
|
data_json = r.json()
|
|
@@ -2656,8 +2703,8 @@ def macro_china_hgjck() -> pd.DataFrame:
|
|
|
2656
2703
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
2657
2704
|
params = {
|
|
2658
2705
|
"columns": "REPORT_DATE,TIME,EXIT_BASE,IMPORT_BASE,EXIT_BASE_SAME,IMPORT_BASE_SAME,"
|
|
2659
|
-
|
|
2660
|
-
|
|
2706
|
+
"EXIT_BASE_SEQUENTIAL,IMPORT_BASE_SEQUENTIAL,EXIT_ACCUMULATE,"
|
|
2707
|
+
"IMPORT_ACCUMULATE,EXIT_ACCUMULATE_SAME,IMPORT_ACCUMULATE_SAME",
|
|
2661
2708
|
"pageNumber": "1",
|
|
2662
2709
|
"pageSize": "2000",
|
|
2663
2710
|
"sortColumns": "REPORT_DATE",
|
|
@@ -2668,7 +2715,6 @@ def macro_china_hgjck() -> pd.DataFrame:
|
|
|
2668
2715
|
"p": "1",
|
|
2669
2716
|
"pageNo": "1",
|
|
2670
2717
|
"pageNum": "1",
|
|
2671
|
-
"_": "1669047266881",
|
|
2672
2718
|
}
|
|
2673
2719
|
r = requests.get(url, params=params)
|
|
2674
2720
|
data_json = r.json()
|
|
@@ -2758,7 +2804,6 @@ def macro_china_czsr() -> pd.DataFrame:
|
|
|
2758
2804
|
"p": "1",
|
|
2759
2805
|
"pageNo": "1",
|
|
2760
2806
|
"pageNum": "1",
|
|
2761
|
-
"_": "1669047266881",
|
|
2762
2807
|
}
|
|
2763
2808
|
r = requests.get(url, params=params)
|
|
2764
2809
|
data_json = r.json()
|
|
@@ -2788,7 +2833,7 @@ def macro_china_czsr() -> pd.DataFrame:
|
|
|
2788
2833
|
temp_df["当月-环比增长"] = pd.to_numeric(temp_df["当月-环比增长"], errors="coerce")
|
|
2789
2834
|
temp_df["累计"] = pd.to_numeric(temp_df["累计"], errors="coerce")
|
|
2790
2835
|
temp_df["累计-同比增长"] = pd.to_numeric(temp_df["累计-同比增长"], errors="coerce")
|
|
2791
|
-
|
|
2836
|
+
temp_df.sort_values(by=["月份"], ignore_index=True, inplace=True)
|
|
2792
2837
|
return temp_df
|
|
2793
2838
|
|
|
2794
2839
|
|
|
@@ -2812,7 +2857,6 @@ def macro_china_whxd() -> pd.DataFrame:
|
|
|
2812
2857
|
"p": "1",
|
|
2813
2858
|
"pageNo": "1",
|
|
2814
2859
|
"pageNum": "1",
|
|
2815
|
-
"_": "1669047266881",
|
|
2816
2860
|
}
|
|
2817
2861
|
r = requests.get(url, params=params)
|
|
2818
2862
|
data_json = r.json()
|
|
@@ -2839,6 +2883,7 @@ def macro_china_whxd() -> pd.DataFrame:
|
|
|
2839
2883
|
temp_df["同比增长"] = pd.to_numeric(temp_df["同比增长"], errors="coerce")
|
|
2840
2884
|
temp_df["环比增长"] = pd.to_numeric(temp_df["环比增长"], errors="coerce")
|
|
2841
2885
|
temp_df["累计"] = pd.to_numeric(temp_df["累计"], errors="coerce")
|
|
2886
|
+
temp_df.sort_values(by=["月份"], ignore_index=True, inplace=True)
|
|
2842
2887
|
return temp_df
|
|
2843
2888
|
|
|
2844
2889
|
|
|
@@ -2862,7 +2907,6 @@ def macro_china_wbck() -> pd.DataFrame:
|
|
|
2862
2907
|
"p": "1",
|
|
2863
2908
|
"pageNo": "1",
|
|
2864
2909
|
"pageNum": "1",
|
|
2865
|
-
"_": "1669047266881",
|
|
2866
2910
|
}
|
|
2867
2911
|
r = requests.get(url, params=params)
|
|
2868
2912
|
data_json = r.json()
|
|
@@ -2889,7 +2933,6 @@ def macro_china_wbck() -> pd.DataFrame:
|
|
|
2889
2933
|
temp_df["同比增长"] = pd.to_numeric(temp_df["同比增长"], errors="coerce")
|
|
2890
2934
|
temp_df["环比增长"] = pd.to_numeric(temp_df["环比增长"], errors="coerce")
|
|
2891
2935
|
temp_df["累计"] = pd.to_numeric(temp_df["累计"], errors="coerce")
|
|
2892
|
-
|
|
2893
2936
|
return temp_df
|
|
2894
2937
|
|
|
2895
2938
|
|
|
@@ -2902,7 +2945,9 @@ def macro_china_xfzxx() -> pd.DataFrame:
|
|
|
2902
2945
|
"""
|
|
2903
2946
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
2904
2947
|
params = {
|
|
2905
|
-
"columns": "REPORT_DATE,TIME,CONSUMERS_FAITH_INDEX,FAITH_INDEX_SAME,FAITH_INDEX_SEQUENTIAL,
|
|
2948
|
+
"columns": "REPORT_DATE,TIME,CONSUMERS_FAITH_INDEX,FAITH_INDEX_SAME,FAITH_INDEX_SEQUENTIAL,"
|
|
2949
|
+
"CONSUMERS_ASTIS_INDEX,ASTIS_INDEX_SAME,ASTIS_INDEX_SEQUENTIAL,CONSUMERS_EXPECT_INDEX,"
|
|
2950
|
+
"EXPECT_INDEX_SAME,EXPECT_INDEX_SEQUENTIAL",
|
|
2906
2951
|
"pageNumber": "1",
|
|
2907
2952
|
"pageSize": "2000",
|
|
2908
2953
|
"sortColumns": "REPORT_DATE",
|
|
@@ -2913,7 +2958,6 @@ def macro_china_xfzxx() -> pd.DataFrame:
|
|
|
2913
2958
|
"p": "1",
|
|
2914
2959
|
"pageNo": "1",
|
|
2915
2960
|
"pageNum": "1",
|
|
2916
|
-
"_": "1669047266881",
|
|
2917
2961
|
}
|
|
2918
2962
|
r = requests.get(url, params=params)
|
|
2919
2963
|
data_json = r.json()
|
|
@@ -2997,7 +3041,6 @@ def macro_china_gyzjz() -> pd.DataFrame:
|
|
|
2997
3041
|
"p": "1",
|
|
2998
3042
|
"pageNo": "1",
|
|
2999
3043
|
"pageNum": "1",
|
|
3000
|
-
"_": "1691676211803",
|
|
3001
3044
|
}
|
|
3002
3045
|
r = requests.get(url, params=params)
|
|
3003
3046
|
data_json = r.json()
|
|
@@ -3032,7 +3075,8 @@ def macro_china_reserve_requirement_ratio() -> pd.DataFrame:
|
|
|
3032
3075
|
"""
|
|
3033
3076
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
3034
3077
|
params = {
|
|
3035
|
-
"columns": "REPORT_DATE,PUBLISH_DATE,TRADE_DATE,INTEREST_RATE_BB,INTEREST_RATE_BA,CHANGE_RATE_B,
|
|
3078
|
+
"columns": "REPORT_DATE,PUBLISH_DATE,TRADE_DATE,INTEREST_RATE_BB,INTEREST_RATE_BA,CHANGE_RATE_B,"
|
|
3079
|
+
"INTEREST_RATE_SB,INTEREST_RATE_SA,CHANGE_RATE_S,NEXT_SH_RATE,NEXT_SZ_RATE,REMARK",
|
|
3036
3080
|
"pageNumber": "1",
|
|
3037
3081
|
"pageSize": "2000",
|
|
3038
3082
|
"sortColumns": "PUBLISH_DATE,TRADE_DATE",
|
|
@@ -3043,7 +3087,6 @@ def macro_china_reserve_requirement_ratio() -> pd.DataFrame:
|
|
|
3043
3087
|
"p": "1",
|
|
3044
3088
|
"pageNo": "1",
|
|
3045
3089
|
"pageNum": "1",
|
|
3046
|
-
"_": "1669047266881",
|
|
3047
3090
|
}
|
|
3048
3091
|
r = requests.get(url, params=params)
|
|
3049
3092
|
data_json = r.json()
|
|
@@ -3116,10 +3159,12 @@ def macro_china_consumer_goods_retail() -> pd.DataFrame:
|
|
|
3116
3159
|
"""
|
|
3117
3160
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
3118
3161
|
headers = {
|
|
3119
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
3162
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
3163
|
+
"Chrome/81.0.4044.138 Safari/537.36",
|
|
3120
3164
|
}
|
|
3121
3165
|
params = {
|
|
3122
|
-
"columns": "REPORT_DATE,TIME,RETAIL_TOTAL,RETAIL_TOTAL_SAME,RETAIL_TOTAL_SEQUENTIAL,
|
|
3166
|
+
"columns": "REPORT_DATE,TIME,RETAIL_TOTAL,RETAIL_TOTAL_SAME,RETAIL_TOTAL_SEQUENTIAL,"
|
|
3167
|
+
"RETAIL_TOTAL_ACCUMULATE,RETAIL_ACCUMULATE_SAME",
|
|
3123
3168
|
"pageNumber": "1",
|
|
3124
3169
|
"pageSize": "1000",
|
|
3125
3170
|
"sortColumns": "REPORT_DATE",
|
|
@@ -3130,7 +3175,6 @@ def macro_china_consumer_goods_retail() -> pd.DataFrame:
|
|
|
3130
3175
|
"p": "1",
|
|
3131
3176
|
"pageNo": "1",
|
|
3132
3177
|
"pageNum": "1",
|
|
3133
|
-
"_": "1660718498421",
|
|
3134
3178
|
}
|
|
3135
3179
|
r = requests.get(url, params=params, headers=headers)
|
|
3136
3180
|
data_json = r.json()
|
|
@@ -3176,18 +3220,17 @@ def macro_china_society_electricity() -> pd.DataFrame:
|
|
|
3176
3220
|
"from": "0",
|
|
3177
3221
|
"num": "31",
|
|
3178
3222
|
"condition": "",
|
|
3179
|
-
"_": "1601557771972",
|
|
3180
3223
|
}
|
|
3181
3224
|
r = requests.get(url, params=params)
|
|
3182
3225
|
data_text = r.text
|
|
3183
|
-
data_json = demjson.decode(data_text[data_text.find("{")
|
|
3226
|
+
data_json = demjson.decode(data_text[data_text.find("{"): -3])
|
|
3184
3227
|
page_num = math.ceil(int(data_json["count"]) / 31)
|
|
3185
3228
|
big_df = pd.DataFrame(data_json["data"])
|
|
3186
3229
|
for i in range(1, page_num):
|
|
3187
3230
|
params.update({"from": i * 31})
|
|
3188
3231
|
r = requests.get(url, params=params)
|
|
3189
3232
|
data_text = r.text
|
|
3190
|
-
data_json = demjson.decode(data_text[data_text.find("{")
|
|
3233
|
+
data_json = demjson.decode(data_text[data_text.find("{"): -3])
|
|
3191
3234
|
temp_df = pd.DataFrame(data_json["data"])
|
|
3192
3235
|
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
3193
3236
|
|
|
@@ -3230,18 +3273,18 @@ def macro_china_society_traffic_volume() -> pd.DataFrame:
|
|
|
3230
3273
|
"from": "0",
|
|
3231
3274
|
"num": "31",
|
|
3232
3275
|
"condition": "",
|
|
3233
|
-
"_": "1601557771972",
|
|
3234
3276
|
}
|
|
3235
3277
|
r = requests.get(url, params=params)
|
|
3236
3278
|
data_text = r.text
|
|
3237
|
-
data_json = demjson.decode(data_text[data_text.find("{")
|
|
3279
|
+
data_json = demjson.decode(data_text[data_text.find("{"): -3])
|
|
3238
3280
|
page_num = math.ceil(int(data_json["count"]) / 31)
|
|
3239
3281
|
big_df = pd.DataFrame(data_json["data"]["非累计"])
|
|
3282
|
+
tqdm = get_tqdm()
|
|
3240
3283
|
for i in tqdm(range(1, page_num), leave=False):
|
|
3241
3284
|
params.update({"from": i * 31})
|
|
3242
3285
|
r = requests.get(url, params=params)
|
|
3243
3286
|
data_text = r.text
|
|
3244
|
-
data_json = demjson.decode(data_text[data_text.find("{")
|
|
3287
|
+
data_json = demjson.decode(data_text[data_text.find("{"): -3])
|
|
3245
3288
|
temp_df = pd.DataFrame(data_json["data"]["非累计"])
|
|
3246
3289
|
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
3247
3290
|
big_df.columns = [item[1] for item in data_json["config"]["all"]]
|
|
@@ -3288,20 +3331,20 @@ def macro_china_postal_telecommunicational() -> pd.DataFrame:
|
|
|
3288
3331
|
"from": "0",
|
|
3289
3332
|
"num": "31",
|
|
3290
3333
|
"condition": "",
|
|
3291
|
-
"_": "1601624495046",
|
|
3292
3334
|
}
|
|
3293
3335
|
r = requests.get(url, params=params)
|
|
3294
3336
|
data_text = r.text
|
|
3295
|
-
data_json = demjson.decode(data_text[data_text.find("{")
|
|
3337
|
+
data_json = demjson.decode(data_text[data_text.find("{"): -3])
|
|
3296
3338
|
page_num = math.ceil(int(data_json["count"]) / 31)
|
|
3297
3339
|
big_df = pd.DataFrame(data_json["data"]["非累计"])
|
|
3298
|
-
|
|
3340
|
+
tqdm = get_tqdm()
|
|
3341
|
+
for i in tqdm(range(1, page_num), leave=False):
|
|
3299
3342
|
params.update({"from": i * 31})
|
|
3300
3343
|
r = requests.get(url, params=params)
|
|
3301
3344
|
data_text = r.text
|
|
3302
|
-
data_json = demjson.decode(data_text[data_text.find("{")
|
|
3345
|
+
data_json = demjson.decode(data_text[data_text.find("{"): -3])
|
|
3303
3346
|
temp_df = pd.DataFrame(data_json["data"]["非累计"])
|
|
3304
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
3347
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
3305
3348
|
big_df.columns = [item[1] for item in data_json["config"]["all"]]
|
|
3306
3349
|
for item in big_df.columns[1:]:
|
|
3307
3350
|
big_df[item] = pd.to_numeric(big_df[item], errors="coerce")
|
|
@@ -3322,18 +3365,18 @@ def macro_china_international_tourism_fx() -> pd.DataFrame:
|
|
|
3322
3365
|
"from": "0",
|
|
3323
3366
|
"num": "31",
|
|
3324
3367
|
"condition": "",
|
|
3325
|
-
"_": "1601624495046",
|
|
3326
3368
|
}
|
|
3327
3369
|
r = requests.get(url, params=params)
|
|
3328
3370
|
data_text = r.text
|
|
3329
|
-
data_json = demjson.decode(data_text[data_text.find("{")
|
|
3371
|
+
data_json = demjson.decode(data_text[data_text.find("{"): -3])
|
|
3330
3372
|
page_num = math.ceil(int(data_json["count"]) / 31)
|
|
3331
3373
|
big_df = pd.DataFrame(data_json["data"])
|
|
3374
|
+
tqdm = get_tqdm()
|
|
3332
3375
|
for i in tqdm(range(1, page_num)):
|
|
3333
3376
|
params.update({"from": i * 31})
|
|
3334
3377
|
r = requests.get(url, params=params)
|
|
3335
3378
|
data_text = r.text
|
|
3336
|
-
data_json = demjson.decode(data_text[data_text.find("{")
|
|
3379
|
+
data_json = demjson.decode(data_text[data_text.find("{"): -3])
|
|
3337
3380
|
temp_df = pd.DataFrame(data_json["data"])
|
|
3338
3381
|
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
3339
3382
|
big_df.columns = [item[1] for item in data_json["config"]["all"]]
|
|
@@ -3356,20 +3399,20 @@ def macro_china_passenger_load_factor() -> pd.DataFrame:
|
|
|
3356
3399
|
"from": "0",
|
|
3357
3400
|
"num": "31",
|
|
3358
3401
|
"condition": "",
|
|
3359
|
-
"_": "1601624495046",
|
|
3360
3402
|
}
|
|
3361
3403
|
r = requests.get(url, params=params)
|
|
3362
3404
|
data_text = r.text
|
|
3363
|
-
data_json = demjson.decode(data_text[data_text.find("{")
|
|
3405
|
+
data_json = demjson.decode(data_text[data_text.find("{"): -3])
|
|
3364
3406
|
page_num = math.ceil(int(data_json["count"]) / 31)
|
|
3365
3407
|
big_df = pd.DataFrame(data_json["data"])
|
|
3408
|
+
tqdm = get_tqdm()
|
|
3366
3409
|
for i in tqdm(range(1, page_num)):
|
|
3367
3410
|
params.update({"from": i * 31})
|
|
3368
3411
|
r = requests.get(url, params=params)
|
|
3369
3412
|
data_text = r.text
|
|
3370
|
-
data_json = demjson.decode(data_text[data_text.find("{")
|
|
3413
|
+
data_json = demjson.decode(data_text[data_text.find("{"): -3])
|
|
3371
3414
|
temp_df = pd.DataFrame(data_json["data"])
|
|
3372
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
3415
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
3373
3416
|
big_df.columns = [item[1] for item in data_json["config"]["all"]]
|
|
3374
3417
|
big_df["客座率"] = pd.to_numeric(big_df["客座率"], errors="coerce")
|
|
3375
3418
|
big_df["载运率"] = pd.to_numeric(big_df["载运率"], errors="coerce")
|
|
@@ -3390,18 +3433,18 @@ def _macro_china_freight_index() -> pd.DataFrame:
|
|
|
3390
3433
|
"from": "0",
|
|
3391
3434
|
"num": "31",
|
|
3392
3435
|
"condition": "",
|
|
3393
|
-
"_": "1601624495046",
|
|
3394
3436
|
}
|
|
3395
3437
|
r = requests.get(url, params=params)
|
|
3396
3438
|
data_text = r.text
|
|
3397
|
-
data_json = demjson.decode(data_text[data_text.find("{")
|
|
3439
|
+
data_json = demjson.decode(data_text[data_text.find("{"): -3])
|
|
3398
3440
|
page_num = math.ceil(int(data_json["count"]) / 31)
|
|
3399
3441
|
big_df = pd.DataFrame(data_json["data"])
|
|
3442
|
+
tqdm = get_tqdm()
|
|
3400
3443
|
for i in tqdm(range(1, page_num)):
|
|
3401
3444
|
params.update({"from": i * 31})
|
|
3402
3445
|
r = requests.get(url, params=params)
|
|
3403
3446
|
data_text = r.text
|
|
3404
|
-
data_json = demjson.decode(data_text[data_text.find("{")
|
|
3447
|
+
data_json = demjson.decode(data_text[data_text.find("{"): -3])
|
|
3405
3448
|
temp_df = pd.DataFrame(data_json["data"])
|
|
3406
3449
|
big_df = big_df.append(temp_df, ignore_index=True)
|
|
3407
3450
|
big_df.columns = [item[1] for item in data_json["config"]["all"]]
|
|
@@ -3467,18 +3510,18 @@ def macro_china_central_bank_balance() -> pd.DataFrame:
|
|
|
3467
3510
|
"from": "0",
|
|
3468
3511
|
"num": "31",
|
|
3469
3512
|
"condition": "",
|
|
3470
|
-
"_": "1601624495046",
|
|
3471
3513
|
}
|
|
3472
3514
|
r = requests.get(url, params=params)
|
|
3473
3515
|
data_text = r.text
|
|
3474
|
-
data_json = demjson.decode(data_text[data_text.find("{")
|
|
3516
|
+
data_json = demjson.decode(data_text[data_text.find("{"): -3])
|
|
3475
3517
|
page_num = math.ceil(int(data_json["count"]) / 31)
|
|
3476
3518
|
big_df = pd.DataFrame(data_json["data"])
|
|
3519
|
+
tqdm = get_tqdm()
|
|
3477
3520
|
for i in tqdm(range(1, page_num)):
|
|
3478
3521
|
params.update({"from": i * 31})
|
|
3479
3522
|
r = requests.get(url, params=params)
|
|
3480
3523
|
data_text = r.text
|
|
3481
|
-
data_json = demjson.decode(data_text[data_text.find("{")
|
|
3524
|
+
data_json = demjson.decode(data_text[data_text.find("{"): -3])
|
|
3482
3525
|
temp_df = pd.DataFrame(data_json["data"])
|
|
3483
3526
|
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
3484
3527
|
big_df.columns = [item[1] for item in data_json["config"]["all"]]
|
|
@@ -3501,18 +3544,18 @@ def macro_china_insurance() -> pd.DataFrame:
|
|
|
3501
3544
|
"from": "0",
|
|
3502
3545
|
"num": "31",
|
|
3503
3546
|
"condition": "",
|
|
3504
|
-
"_": "1601624495046",
|
|
3505
3547
|
}
|
|
3506
3548
|
r = requests.get(url, params=params)
|
|
3507
3549
|
data_text = r.text
|
|
3508
|
-
data_json = demjson.decode(data_text[data_text.find("{")
|
|
3550
|
+
data_json = demjson.decode(data_text[data_text.find("{"): -3])
|
|
3509
3551
|
page_num = math.ceil(int(data_json["count"]) / 31)
|
|
3510
3552
|
big_df = pd.DataFrame(data_json["data"])
|
|
3553
|
+
tqdm = get_tqdm()
|
|
3511
3554
|
for i in tqdm(range(1, page_num)):
|
|
3512
3555
|
params.update({"from": i * 31})
|
|
3513
3556
|
r = requests.get(url, params=params)
|
|
3514
3557
|
data_text = r.text
|
|
3515
|
-
data_json = demjson.decode(data_text[data_text.find("{")
|
|
3558
|
+
data_json = demjson.decode(data_text[data_text.find("{"): -3])
|
|
3516
3559
|
temp_df = pd.DataFrame(data_json["data"])
|
|
3517
3560
|
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
3518
3561
|
big_df.columns = [item[1] for item in data_json["config"]["all"]]
|
|
@@ -3535,20 +3578,20 @@ def macro_china_supply_of_money() -> pd.DataFrame:
|
|
|
3535
3578
|
"from": "0",
|
|
3536
3579
|
"num": "31",
|
|
3537
3580
|
"condition": "",
|
|
3538
|
-
"_": "1601624495046",
|
|
3539
3581
|
}
|
|
3540
3582
|
r = requests.get(url, params=params)
|
|
3541
3583
|
data_text = r.text
|
|
3542
|
-
data_json = demjson.decode(data_text[data_text.find("{")
|
|
3584
|
+
data_json = demjson.decode(data_text[data_text.find("{"): -3])
|
|
3543
3585
|
page_num = math.ceil(int(data_json["count"]) / 31)
|
|
3544
3586
|
big_df = pd.DataFrame(data_json["data"])
|
|
3587
|
+
tqdm = get_tqdm()
|
|
3545
3588
|
for i in tqdm(range(1, page_num)):
|
|
3546
3589
|
params.update({"from": i * 31})
|
|
3547
3590
|
r = requests.get(url, params=params)
|
|
3548
3591
|
data_text = r.text
|
|
3549
|
-
data_json = demjson.decode(data_text[data_text.find("{")
|
|
3592
|
+
data_json = demjson.decode(data_text[data_text.find("{"): -3])
|
|
3550
3593
|
temp_df = pd.DataFrame(data_json["data"])
|
|
3551
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
3594
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
3552
3595
|
big_df.columns = [item[1] for item in data_json["config"]["all"]]
|
|
3553
3596
|
for item in big_df.columns[1:]:
|
|
3554
3597
|
big_df[item] = pd.to_numeric(big_df[item], errors="coerce")
|
|
@@ -3569,18 +3612,18 @@ def macro_china_foreign_exchange_gold() -> pd.DataFrame:
|
|
|
3569
3612
|
"from": "0",
|
|
3570
3613
|
"num": "31",
|
|
3571
3614
|
"condition": "",
|
|
3572
|
-
"_": "1601624495046",
|
|
3573
3615
|
}
|
|
3574
3616
|
r = requests.get(url, params=params)
|
|
3575
3617
|
data_text = r.text
|
|
3576
|
-
data_json = demjson.decode(data_text[data_text.find("{")
|
|
3618
|
+
data_json = demjson.decode(data_text[data_text.find("{"): -3])
|
|
3577
3619
|
page_num = math.ceil(int(data_json["count"]) / 31)
|
|
3578
3620
|
big_df = pd.DataFrame(data_json["data"])
|
|
3621
|
+
tqdm = get_tqdm()
|
|
3579
3622
|
for i in tqdm(range(1, page_num), leave=False):
|
|
3580
3623
|
params.update({"from": i * 31})
|
|
3581
3624
|
r = requests.get(url, params=params)
|
|
3582
3625
|
data_text = r.text
|
|
3583
|
-
data_json = demjson.decode(data_text[data_text.find("{")
|
|
3626
|
+
data_json = demjson.decode(data_text[data_text.find("{"): -3])
|
|
3584
3627
|
temp_df = pd.DataFrame(data_json["data"])
|
|
3585
3628
|
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
3586
3629
|
big_df.columns = [item[1] for item in data_json["config"]["all"]]
|
|
@@ -3604,18 +3647,18 @@ def macro_china_retail_price_index() -> pd.DataFrame:
|
|
|
3604
3647
|
"from": "0",
|
|
3605
3648
|
"num": "31",
|
|
3606
3649
|
"condition": "",
|
|
3607
|
-
"_": "1601624495046",
|
|
3608
3650
|
}
|
|
3609
3651
|
r = requests.get(url, params=params)
|
|
3610
3652
|
data_text = r.text
|
|
3611
|
-
data_json = demjson.decode(data_text[data_text.find("{")
|
|
3653
|
+
data_json = demjson.decode(data_text[data_text.find("{"): -3])
|
|
3612
3654
|
page_num = math.ceil(int(data_json["count"]) / 31)
|
|
3613
3655
|
big_df = pd.DataFrame(data_json["data"])
|
|
3656
|
+
tqdm = get_tqdm()
|
|
3614
3657
|
for i in tqdm(range(1, page_num), leave=False):
|
|
3615
3658
|
params.update({"from": i * 31})
|
|
3616
3659
|
r = requests.get(url, params=params)
|
|
3617
3660
|
data_text = r.text
|
|
3618
|
-
data_json = demjson.decode(data_text[data_text.find("{")
|
|
3661
|
+
data_json = demjson.decode(data_text[data_text.find("{"): -3])
|
|
3619
3662
|
temp_df = pd.DataFrame(data_json["data"])
|
|
3620
3663
|
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
3621
3664
|
big_df.columns = [item[1] for item in data_json["config"]["all"]]
|
|
@@ -3635,7 +3678,8 @@ def macro_china_real_estate() -> pd.DataFrame:
|
|
|
3635
3678
|
"""
|
|
3636
3679
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
3637
3680
|
headers = {
|
|
3638
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
3681
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
3682
|
+
"Chrome/81.0.4044.138 Safari/537.36",
|
|
3639
3683
|
}
|
|
3640
3684
|
params = {
|
|
3641
3685
|
"sortColumns": "REPORT_DATE",
|
|
@@ -3643,7 +3687,8 @@ def macro_china_real_estate() -> pd.DataFrame:
|
|
|
3643
3687
|
"pageSize": "1000",
|
|
3644
3688
|
"pageNumber": "1",
|
|
3645
3689
|
"reportName": "RPT_INDUSTRY_INDEX",
|
|
3646
|
-
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,
|
|
3690
|
+
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
|
3691
|
+
"CHANGERATE_2Y,CHANGERATE_3Y",
|
|
3647
3692
|
"filter": '(INDICATOR_ID="EMM00121987")',
|
|
3648
3693
|
"source": "WEB",
|
|
3649
3694
|
"client": "WEB",
|
|
@@ -3652,6 +3697,7 @@ def macro_china_real_estate() -> pd.DataFrame:
|
|
|
3652
3697
|
data_json = r.json()
|
|
3653
3698
|
total_page = data_json["result"]["pages"]
|
|
3654
3699
|
big_df = pd.DataFrame()
|
|
3700
|
+
tqdm = get_tqdm()
|
|
3655
3701
|
for page in tqdm(range(1, total_page + 1), leave=False):
|
|
3656
3702
|
params.update({"pageNumber": page})
|
|
3657
3703
|
r = requests.get(url, params=params, headers=headers)
|
|
@@ -3668,15 +3714,15 @@ def macro_china_real_estate() -> pd.DataFrame:
|
|
|
3668
3714
|
"近2年涨跌幅",
|
|
3669
3715
|
"近3年涨跌幅",
|
|
3670
3716
|
]
|
|
3671
|
-
big_df["日期"] = pd.to_datetime(big_df["日期"]).dt.date
|
|
3672
|
-
big_df["最新值"] = pd.to_numeric(big_df["最新值"])
|
|
3673
|
-
big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"])
|
|
3674
|
-
big_df["近3月涨跌幅"] = pd.to_numeric(big_df["近3月涨跌幅"])
|
|
3675
|
-
big_df["近6月涨跌幅"] = pd.to_numeric(big_df["近6月涨跌幅"])
|
|
3676
|
-
big_df["近1年涨跌幅"] = pd.to_numeric(big_df["近1年涨跌幅"])
|
|
3677
|
-
big_df["近2年涨跌幅"] = pd.to_numeric(big_df["近2年涨跌幅"])
|
|
3678
|
-
big_df["近3年涨跌幅"] = pd.to_numeric(big_df["近3年涨跌幅"])
|
|
3679
|
-
big_df.sort_values(["日期"], inplace=True)
|
|
3717
|
+
big_df["日期"] = pd.to_datetime(big_df["日期"], errors="coerce").dt.date
|
|
3718
|
+
big_df["最新值"] = pd.to_numeric(big_df["最新值"], errors="coerce")
|
|
3719
|
+
big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"], errors="coerce")
|
|
3720
|
+
big_df["近3月涨跌幅"] = pd.to_numeric(big_df["近3月涨跌幅"], errors="coerce")
|
|
3721
|
+
big_df["近6月涨跌幅"] = pd.to_numeric(big_df["近6月涨跌幅"], errors="coerce")
|
|
3722
|
+
big_df["近1年涨跌幅"] = pd.to_numeric(big_df["近1年涨跌幅"], errors="coerce")
|
|
3723
|
+
big_df["近2年涨跌幅"] = pd.to_numeric(big_df["近2年涨跌幅"], errors="coerce")
|
|
3724
|
+
big_df["近3年涨跌幅"] = pd.to_numeric(big_df["近3年涨跌幅"], errors="coerce")
|
|
3725
|
+
big_df.sort_values(by=["日期"], inplace=True)
|
|
3680
3726
|
big_df.drop_duplicates(inplace=True)
|
|
3681
3727
|
big_df.reset_index(inplace=True, drop=True)
|
|
3682
3728
|
return big_df
|