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
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
# -*- coding:utf-8 -*-
|
|
2
2
|
# !/usr/bin/env python
|
|
3
3
|
"""
|
|
4
|
-
Date:
|
|
4
|
+
Date: 2024/6/19 22:00
|
|
5
5
|
Desc: 巨潮资讯-数据中心-专题统计-债券报表-债券发行
|
|
6
6
|
http://webapi.cninfo.com.cn/#/thematicStatistics
|
|
7
7
|
"""
|
|
8
|
-
import time
|
|
9
8
|
|
|
10
9
|
import pandas as pd
|
|
11
10
|
import requests
|
|
12
|
-
|
|
11
|
+
import py_mini_racer
|
|
13
12
|
|
|
14
13
|
from akshare.datasets import get_ths_js
|
|
15
14
|
|
|
@@ -23,7 +22,7 @@ def _get_file_content_cninfo(file: str = "cninfo.js") -> str:
|
|
|
23
22
|
:rtype: str
|
|
24
23
|
"""
|
|
25
24
|
setting_file_path = get_ths_js(file)
|
|
26
|
-
with open(setting_file_path) as f:
|
|
25
|
+
with open(setting_file_path, encoding="utf-8") as f:
|
|
27
26
|
file_data = f.read()
|
|
28
27
|
return file_data
|
|
29
28
|
|
|
@@ -58,7 +57,8 @@ def bond_treasure_issue_cninfo(
|
|
|
58
57
|
"Pragma": "no-cache",
|
|
59
58
|
"Proxy-Connection": "keep-alive",
|
|
60
59
|
"Referer": "http://webapi.cninfo.com.cn/",
|
|
61
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
60
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
61
|
+
"Chrome/93.0.4577.63 Safari/537.36",
|
|
62
62
|
"X-Requested-With": "XMLHttpRequest",
|
|
63
63
|
}
|
|
64
64
|
params = {
|
|
@@ -107,8 +107,12 @@ def bond_treasure_issue_cninfo(
|
|
|
107
107
|
"债券名称",
|
|
108
108
|
]
|
|
109
109
|
]
|
|
110
|
-
temp_df["发行起始日"] = pd.to_datetime(
|
|
111
|
-
|
|
110
|
+
temp_df["发行起始日"] = pd.to_datetime(
|
|
111
|
+
temp_df["发行起始日"], errors="coerce"
|
|
112
|
+
).dt.date
|
|
113
|
+
temp_df["发行终止日"] = pd.to_datetime(
|
|
114
|
+
temp_df["发行终止日"], errors="coerce"
|
|
115
|
+
).dt.date
|
|
112
116
|
temp_df["缴款日"] = pd.to_datetime(temp_df["缴款日"], errors="coerce").dt.date
|
|
113
117
|
temp_df["公告日期"] = pd.to_datetime(temp_df["公告日期"], errors="coerce").dt.date
|
|
114
118
|
temp_df["计划发行总量"] = pd.to_numeric(temp_df["计划发行总量"], errors="coerce")
|
|
@@ -133,7 +137,6 @@ def bond_local_government_issue_cninfo(
|
|
|
133
137
|
:rtype: pandas.DataFrame
|
|
134
138
|
"""
|
|
135
139
|
url = "http://webapi.cninfo.com.cn/api/sysapi/p_sysapi1121"
|
|
136
|
-
random_time_str = str(int(time.time()))
|
|
137
140
|
js_code = py_mini_racer.MiniRacer()
|
|
138
141
|
js_content = _get_file_content_cninfo("cninfo.js")
|
|
139
142
|
js_code.eval(js_content)
|
|
@@ -150,7 +153,8 @@ def bond_local_government_issue_cninfo(
|
|
|
150
153
|
"Pragma": "no-cache",
|
|
151
154
|
"Proxy-Connection": "keep-alive",
|
|
152
155
|
"Referer": "http://webapi.cninfo.com.cn/",
|
|
153
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
156
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
157
|
+
"Chrome/93.0.4577.63 Safari/537.36",
|
|
154
158
|
"X-Requested-With": "XMLHttpRequest",
|
|
155
159
|
}
|
|
156
160
|
params = {
|
|
@@ -199,8 +203,12 @@ def bond_local_government_issue_cninfo(
|
|
|
199
203
|
"债券名称",
|
|
200
204
|
]
|
|
201
205
|
]
|
|
202
|
-
temp_df["发行起始日"] = pd.to_datetime(
|
|
203
|
-
|
|
206
|
+
temp_df["发行起始日"] = pd.to_datetime(
|
|
207
|
+
temp_df["发行起始日"], errors="coerce"
|
|
208
|
+
).dt.date
|
|
209
|
+
temp_df["发行终止日"] = pd.to_datetime(
|
|
210
|
+
temp_df["发行终止日"], errors="coerce"
|
|
211
|
+
).dt.date
|
|
204
212
|
temp_df["缴款日"] = pd.to_datetime(temp_df["缴款日"], errors="coerce").dt.date
|
|
205
213
|
temp_df["公告日期"] = pd.to_datetime(temp_df["公告日期"], errors="coerce").dt.date
|
|
206
214
|
temp_df["计划发行总量"] = pd.to_numeric(temp_df["计划发行总量"], errors="coerce")
|
|
@@ -241,7 +249,8 @@ def bond_corporate_issue_cninfo(
|
|
|
241
249
|
"Pragma": "no-cache",
|
|
242
250
|
"Proxy-Connection": "keep-alive",
|
|
243
251
|
"Referer": "http://webapi.cninfo.com.cn/",
|
|
244
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
252
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
253
|
+
"Chrome/93.0.4577.63 Safari/537.36",
|
|
245
254
|
"X-Requested-With": "XMLHttpRequest",
|
|
246
255
|
}
|
|
247
256
|
params = {
|
|
@@ -295,8 +304,12 @@ def bond_corporate_issue_cninfo(
|
|
|
295
304
|
]
|
|
296
305
|
]
|
|
297
306
|
temp_df["公告日期"] = pd.to_datetime(temp_df["公告日期"], errors="coerce").dt.date
|
|
298
|
-
temp_df["交易所网上发行起始日"] = pd.to_datetime(
|
|
299
|
-
|
|
307
|
+
temp_df["交易所网上发行起始日"] = pd.to_datetime(
|
|
308
|
+
temp_df["交易所网上发行起始日"], errors="coerce"
|
|
309
|
+
).dt.date
|
|
310
|
+
temp_df["交易所网上发行终止日"] = pd.to_datetime(
|
|
311
|
+
temp_df["交易所网上发行终止日"], errors="coerce"
|
|
312
|
+
).dt.date
|
|
300
313
|
temp_df["计划发行总量"] = pd.to_numeric(temp_df["计划发行总量"], errors="coerce")
|
|
301
314
|
temp_df["实际发行总量"] = pd.to_numeric(temp_df["实际发行总量"], errors="coerce")
|
|
302
315
|
temp_df["发行面值"] = pd.to_numeric(temp_df["发行面值"], errors="coerce")
|
|
@@ -336,7 +349,8 @@ def bond_cov_issue_cninfo(
|
|
|
336
349
|
"Pragma": "no-cache",
|
|
337
350
|
"Proxy-Connection": "keep-alive",
|
|
338
351
|
"Referer": "http://webapi.cninfo.com.cn/",
|
|
339
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
352
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
353
|
+
"Chrome/93.0.4577.63 Safari/537.36",
|
|
340
354
|
"X-Requested-With": "XMLHttpRequest",
|
|
341
355
|
}
|
|
342
356
|
params = {
|
|
@@ -418,23 +432,47 @@ def bond_cov_issue_cninfo(
|
|
|
418
432
|
]
|
|
419
433
|
]
|
|
420
434
|
temp_df["公告日期"] = pd.to_datetime(temp_df["公告日期"], errors="coerce").dt.date
|
|
421
|
-
temp_df["发行起始日"] = pd.to_datetime(
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
temp_df["
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
temp_df["
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
temp_df["
|
|
435
|
+
temp_df["发行起始日"] = pd.to_datetime(
|
|
436
|
+
temp_df["发行起始日"], errors="coerce"
|
|
437
|
+
).dt.date
|
|
438
|
+
temp_df["发行终止日"] = pd.to_datetime(
|
|
439
|
+
temp_df["发行终止日"], errors="coerce"
|
|
440
|
+
).dt.date
|
|
441
|
+
temp_df["转股开始日期"] = pd.to_datetime(
|
|
442
|
+
temp_df["转股开始日期"], errors="coerce"
|
|
443
|
+
).dt.date
|
|
444
|
+
temp_df["转股终止日期"] = pd.to_datetime(
|
|
445
|
+
temp_df["转股终止日期"], errors="coerce"
|
|
446
|
+
).dt.date
|
|
447
|
+
temp_df["转股终止日期"] = pd.to_datetime(
|
|
448
|
+
temp_df["转股终止日期"], errors="coerce"
|
|
449
|
+
).dt.date
|
|
450
|
+
temp_df["网上申购日期"] = pd.to_datetime(
|
|
451
|
+
temp_df["网上申购日期"], errors="coerce"
|
|
452
|
+
).dt.date
|
|
453
|
+
temp_df["网上申购中签结果公告日及退款日"] = pd.to_datetime(
|
|
454
|
+
temp_df["网上申购中签结果公告日及退款日"], errors="coerce"
|
|
455
|
+
).dt.date
|
|
456
|
+
temp_df["债权登记日"] = pd.to_datetime(
|
|
457
|
+
temp_df["债权登记日"], errors="coerce"
|
|
458
|
+
).dt.date
|
|
459
|
+
temp_df["优先申购日"] = pd.to_datetime(
|
|
460
|
+
temp_df["优先申购日"], errors="coerce"
|
|
461
|
+
).dt.date
|
|
462
|
+
temp_df["优先申购缴款日"] = pd.to_datetime(
|
|
463
|
+
temp_df["优先申购缴款日"], errors="coerce"
|
|
464
|
+
).dt.date
|
|
431
465
|
temp_df["计划发行总量"] = pd.to_numeric(temp_df["计划发行总量"], errors="coerce")
|
|
432
466
|
temp_df["实际发行总量"] = pd.to_numeric(temp_df["实际发行总量"], errors="coerce")
|
|
433
467
|
temp_df["发行面值"] = pd.to_numeric(temp_df["发行面值"], errors="coerce")
|
|
434
468
|
temp_df["发行价格"] = pd.to_numeric(temp_df["发行价格"], errors="coerce")
|
|
435
469
|
temp_df["初始转股价格"] = pd.to_numeric(temp_df["初始转股价格"], errors="coerce")
|
|
436
|
-
temp_df["网上申购数量上限"] = pd.to_numeric(
|
|
437
|
-
|
|
470
|
+
temp_df["网上申购数量上限"] = pd.to_numeric(
|
|
471
|
+
temp_df["网上申购数量上限"], errors="coerce"
|
|
472
|
+
)
|
|
473
|
+
temp_df["网上申购数量下限"] = pd.to_numeric(
|
|
474
|
+
temp_df["网上申购数量下限"], errors="coerce"
|
|
475
|
+
)
|
|
438
476
|
temp_df["网上申购单位"] = pd.to_numeric(temp_df["网上申购单位"], errors="coerce")
|
|
439
477
|
temp_df["配售价格"] = pd.to_numeric(temp_df["配售价格"], errors="coerce")
|
|
440
478
|
return temp_df
|
|
@@ -464,7 +502,8 @@ def bond_cov_stock_issue_cninfo() -> pd.DataFrame:
|
|
|
464
502
|
"Pragma": "no-cache",
|
|
465
503
|
"Proxy-Connection": "keep-alive",
|
|
466
504
|
"Referer": "http://webapi.cninfo.com.cn/",
|
|
467
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
505
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
506
|
+
"Chrome/93.0.4577.63 Safari/537.36",
|
|
468
507
|
"X-Requested-With": "XMLHttpRequest",
|
|
469
508
|
}
|
|
470
509
|
r = requests.post(url, headers=headers)
|
|
@@ -500,8 +539,12 @@ def bond_cov_stock_issue_cninfo() -> pd.DataFrame:
|
|
|
500
539
|
]
|
|
501
540
|
]
|
|
502
541
|
temp_df["公告日期"] = pd.to_datetime(temp_df["公告日期"], errors="coerce").dt.date
|
|
503
|
-
temp_df["自愿转换期起始日"] = pd.to_datetime(
|
|
504
|
-
|
|
542
|
+
temp_df["自愿转换期起始日"] = pd.to_datetime(
|
|
543
|
+
temp_df["自愿转换期起始日"], errors="coerce"
|
|
544
|
+
).dt.date
|
|
545
|
+
temp_df["自愿转换期终止日"] = pd.to_datetime(
|
|
546
|
+
temp_df["自愿转换期终止日"], errors="coerce"
|
|
547
|
+
).dt.date
|
|
505
548
|
temp_df["转股价格"] = pd.to_numeric(temp_df["转股价格"], errors="coerce")
|
|
506
549
|
return temp_df
|
|
507
550
|
|
akshare/bond/bond_summary.py
CHANGED
|
@@ -5,13 +5,14 @@ Date: 2022/3/5 12:55
|
|
|
5
5
|
Desc: 上登债券信息网-债券成交概览
|
|
6
6
|
http://bond.sse.com.cn/data/statistics/overview/turnover/
|
|
7
7
|
"""
|
|
8
|
+
|
|
8
9
|
from io import BytesIO
|
|
9
10
|
|
|
10
11
|
import pandas as pd
|
|
11
12
|
import requests
|
|
12
13
|
|
|
13
14
|
|
|
14
|
-
def bond_cash_summary_sse(date: str =
|
|
15
|
+
def bond_cash_summary_sse(date: str = "20210111") -> pd.DataFrame:
|
|
15
16
|
"""
|
|
16
17
|
上登债券信息网-市场数据-市场统计-市场概览-债券现券市场概览
|
|
17
18
|
http://bond.sse.com.cn/data/statistics/overview/bondow/
|
|
@@ -20,33 +21,33 @@ def bond_cash_summary_sse(date: str = '20210111') -> pd.DataFrame:
|
|
|
20
21
|
:return: 债券成交概览
|
|
21
22
|
:rtype: pandas.DataFrame
|
|
22
23
|
"""
|
|
23
|
-
url =
|
|
24
|
+
url = "http://query.sse.com.cn/commonExcelDd.do"
|
|
24
25
|
headers = {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
|
|
27
|
+
"Referer": "http://bond.sse.com.cn/",
|
|
28
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
|
|
28
29
|
}
|
|
29
30
|
params = {
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
"sqlId": "COMMON_SSEBOND_SCSJ_SCTJ_SCGL_ZQXQSCGL_CX_L",
|
|
32
|
+
"TRADE_DATE": f"{date[:4]}-{date[4:6]}-{date[6:]}",
|
|
32
33
|
}
|
|
33
34
|
r = requests.get(url, params=params, headers=headers)
|
|
34
35
|
temp_df = pd.read_excel(BytesIO(r.content), engine="xlrd")
|
|
35
36
|
temp_df.columns = [
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
"债券现货",
|
|
38
|
+
"托管只数",
|
|
39
|
+
"托管市值",
|
|
40
|
+
"托管面值",
|
|
41
|
+
"数据日期",
|
|
41
42
|
]
|
|
42
|
-
temp_df[
|
|
43
|
-
temp_df[
|
|
44
|
-
temp_df[
|
|
45
|
-
temp_df[
|
|
43
|
+
temp_df["托管只数"] = pd.to_numeric(temp_df["托管只数"])
|
|
44
|
+
temp_df["托管市值"] = pd.to_numeric(temp_df["托管市值"])
|
|
45
|
+
temp_df["托管面值"] = pd.to_numeric(temp_df["托管面值"])
|
|
46
|
+
temp_df["数据日期"] = pd.to_datetime(temp_df["数据日期"]).dt.date
|
|
46
47
|
return temp_df
|
|
47
48
|
|
|
48
49
|
|
|
49
|
-
def bond_deal_summary_sse(date: str =
|
|
50
|
+
def bond_deal_summary_sse(date: str = "20210104") -> pd.DataFrame:
|
|
50
51
|
"""
|
|
51
52
|
上登债券信息网-市场数据-市场统计-市场概览-债券成交概览
|
|
52
53
|
http://bond.sse.com.cn/data/statistics/overview/turnover/
|
|
@@ -55,37 +56,37 @@ def bond_deal_summary_sse(date: str = '20210104') -> pd.DataFrame:
|
|
|
55
56
|
:return: 债券成交概览
|
|
56
57
|
:rtype: pandas.DataFrame
|
|
57
58
|
"""
|
|
58
|
-
url =
|
|
59
|
+
url = "http://query.sse.com.cn/commonExcelDd.do"
|
|
59
60
|
headers = {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
|
|
62
|
+
"Referer": "http://bond.sse.com.cn/",
|
|
63
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
|
|
63
64
|
}
|
|
64
65
|
params = {
|
|
65
|
-
|
|
66
|
-
|
|
66
|
+
"sqlId": "COMMON_SSEBOND_SCSJ_SCTJ_SCGL_ZQCJGL_CX_L",
|
|
67
|
+
"TRADE_DATE": f"{date[:4]}-{date[4:6]}-{date[6:]}",
|
|
67
68
|
}
|
|
68
69
|
r = requests.get(url, params=params, headers=headers)
|
|
69
70
|
temp_df = pd.read_excel(BytesIO(r.content))
|
|
70
71
|
temp_df.columns = [
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
72
|
+
"债券类型",
|
|
73
|
+
"当日成交笔数",
|
|
74
|
+
"当日成交金额",
|
|
75
|
+
"当年成交笔数",
|
|
76
|
+
"当年成交金额",
|
|
77
|
+
"数据日期",
|
|
77
78
|
]
|
|
78
|
-
temp_df[
|
|
79
|
-
temp_df[
|
|
80
|
-
temp_df[
|
|
81
|
-
temp_df[
|
|
82
|
-
temp_df[
|
|
79
|
+
temp_df["当日成交笔数"] = pd.to_numeric(temp_df["当日成交笔数"])
|
|
80
|
+
temp_df["当日成交金额"] = pd.to_numeric(temp_df["当日成交金额"])
|
|
81
|
+
temp_df["当年成交笔数"] = pd.to_numeric(temp_df["当年成交笔数"])
|
|
82
|
+
temp_df["当年成交金额"] = pd.to_numeric(temp_df["当年成交金额"])
|
|
83
|
+
temp_df["数据日期"] = pd.to_datetime(temp_df["数据日期"]).dt.date
|
|
83
84
|
return temp_df
|
|
84
85
|
|
|
85
86
|
|
|
86
|
-
if __name__ ==
|
|
87
|
-
bond_cash_summary_sse_df = bond_cash_summary_sse(date=
|
|
87
|
+
if __name__ == "__main__":
|
|
88
|
+
bond_cash_summary_sse_df = bond_cash_summary_sse(date="20210111")
|
|
88
89
|
print(bond_cash_summary_sse_df)
|
|
89
90
|
|
|
90
|
-
bond_summary_sse_df = bond_deal_summary_sse(date=
|
|
91
|
+
bond_summary_sse_df = bond_deal_summary_sse(date="20210111")
|
|
91
92
|
print(bond_summary_sse_df)
|
akshare/bond/bond_zh_cov.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date:
|
|
4
|
+
Date: 2025/7/4 15:00
|
|
5
5
|
Desc: 新浪财经-债券-沪深可转债-实时行情数据和历史行情数据
|
|
6
6
|
https://vip.stock.finance.sina.com.cn/mkt/#hskzz_z
|
|
7
7
|
"""
|
|
@@ -10,8 +10,8 @@ import datetime
|
|
|
10
10
|
import re
|
|
11
11
|
|
|
12
12
|
import pandas as pd
|
|
13
|
+
import py_mini_racer
|
|
13
14
|
import requests
|
|
14
|
-
from py_mini_racer import py_mini_racer
|
|
15
15
|
|
|
16
16
|
from akshare.bond.cons import (
|
|
17
17
|
zh_sina_bond_hs_cov_count_url,
|
|
@@ -21,6 +21,7 @@ from akshare.bond.cons import (
|
|
|
21
21
|
)
|
|
22
22
|
from akshare.stock.cons import hk_js_decode
|
|
23
23
|
from akshare.utils import demjson
|
|
24
|
+
from akshare.utils.func import fetch_paginated_data
|
|
24
25
|
from akshare.utils.tqdm import get_tqdm
|
|
25
26
|
|
|
26
27
|
|
|
@@ -57,7 +58,7 @@ def bond_zh_hs_cov_spot() -> pd.DataFrame:
|
|
|
57
58
|
zh_sina_bond_hs_payload_copy.update({"page": page})
|
|
58
59
|
res = requests.get(zh_sina_bond_hs_cov_url, params=zh_sina_bond_hs_payload_copy)
|
|
59
60
|
data_json = demjson.decode(res.text)
|
|
60
|
-
big_df = pd.concat([big_df, pd.DataFrame(data_json)], ignore_index=True)
|
|
61
|
+
big_df = pd.concat(objs=[big_df, pd.DataFrame(data_json)], ignore_index=True)
|
|
61
62
|
return big_df
|
|
62
63
|
|
|
63
64
|
|
|
@@ -95,26 +96,23 @@ def _code_id_map() -> dict:
|
|
|
95
96
|
url = "https://80.push2.eastmoney.com/api/qt/clist/get"
|
|
96
97
|
params = {
|
|
97
98
|
"pn": "1",
|
|
98
|
-
"pz": "
|
|
99
|
+
"pz": "100",
|
|
99
100
|
"po": "1",
|
|
100
101
|
"np": "1",
|
|
101
102
|
"ut": "bd1d9ddb04089700cf9c27f6f7426281",
|
|
102
103
|
"fltt": "2",
|
|
103
104
|
"invt": "2",
|
|
104
|
-
"fid": "
|
|
105
|
+
"fid": "f12",
|
|
105
106
|
"fs": "m:1 t:2,m:1 t:23",
|
|
106
|
-
"fields": "f12",
|
|
107
|
-
"_": "1623833739532",
|
|
107
|
+
"fields": "f3,f12",
|
|
108
108
|
}
|
|
109
|
-
|
|
110
|
-
data_json = r.json()
|
|
111
|
-
temp_df = pd.DataFrame(data_json["data"]["diff"])
|
|
109
|
+
temp_df = fetch_paginated_data(url, params)
|
|
112
110
|
temp_df["market_id"] = 1
|
|
113
|
-
temp_df.columns
|
|
111
|
+
temp_df.rename(columns={"f12": "sh_code", "market_id": "sh_id"}, inplace=True)
|
|
114
112
|
code_id_dict = dict(zip(temp_df["sh_code"], temp_df["sh_id"]))
|
|
115
113
|
params = {
|
|
116
114
|
"pn": "1",
|
|
117
|
-
"pz": "
|
|
115
|
+
"pz": "100",
|
|
118
116
|
"po": "1",
|
|
119
117
|
"np": "1",
|
|
120
118
|
"ut": "bd1d9ddb04089700cf9c27f6f7426281",
|
|
@@ -122,12 +120,9 @@ def _code_id_map() -> dict:
|
|
|
122
120
|
"invt": "2",
|
|
123
121
|
"fid": "f3",
|
|
124
122
|
"fs": "m:0 t:6,m:0 t:80",
|
|
125
|
-
"fields": "f12",
|
|
126
|
-
"_": "1623833739532",
|
|
123
|
+
"fields": "f3,f12",
|
|
127
124
|
}
|
|
128
|
-
|
|
129
|
-
data_json = r.json()
|
|
130
|
-
temp_df_sz = pd.DataFrame(data_json["data"]["diff"])
|
|
125
|
+
temp_df_sz = fetch_paginated_data(url, params)
|
|
131
126
|
temp_df_sz["sz_id"] = 0
|
|
132
127
|
code_id_dict.update(dict(zip(temp_df_sz["f12"], temp_df_sz["sz_id"])))
|
|
133
128
|
return code_id_dict
|
|
@@ -280,12 +275,10 @@ def bond_zh_hs_cov_pre_min(symbol: str = "sh113570") -> pd.DataFrame:
|
|
|
280
275
|
params = {
|
|
281
276
|
"fields1": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13",
|
|
282
277
|
"fields2": "f51,f52,f53,f54,f55,f56,f57,f58",
|
|
283
|
-
"ut": "fa5fd1943c7b386f172d6893dbfba10b",
|
|
284
278
|
"ndays": "1",
|
|
285
279
|
"iscr": "1",
|
|
286
280
|
"iscca": "0",
|
|
287
281
|
"secid": f"{market_type[symbol[:2]]}.{symbol[2:]}",
|
|
288
|
-
"_": "1623766962675",
|
|
289
282
|
}
|
|
290
283
|
r = requests.get(url, params=params)
|
|
291
284
|
data_json = r.json()
|
|
@@ -329,10 +322,10 @@ def bond_zh_cov() -> pd.DataFrame:
|
|
|
329
322
|
"reportName": "RPT_BOND_CB_LIST",
|
|
330
323
|
"columns": "ALL",
|
|
331
324
|
"quoteColumns": "f2~01~CONVERT_STOCK_CODE~CONVERT_STOCK_PRICE,"
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
325
|
+
"f235~10~SECURITY_CODE~TRANSFER_PRICE,f236~10~SECURITY_CODE~TRANSFER_VALUE,"
|
|
326
|
+
"f2~10~SECURITY_CODE~CURRENT_BOND_PRICE,f237~10~SECURITY_CODE~TRANSFER_PREMIUM_RATIO,"
|
|
327
|
+
"f239~10~SECURITY_CODE~RESALE_TRIG_PRICE,f240~10~SECURITY_CODE~REDEEM_TRIG_PRICE,"
|
|
328
|
+
"f23~01~CONVERT_STOCK_CODE~PBV_RATIO",
|
|
336
329
|
"source": "WEB",
|
|
337
330
|
"client": "WEB",
|
|
338
331
|
}
|
|
@@ -420,6 +413,7 @@ def bond_zh_cov() -> pd.DataFrame:
|
|
|
420
413
|
"_",
|
|
421
414
|
"_",
|
|
422
415
|
"_",
|
|
416
|
+
"_",
|
|
423
417
|
]
|
|
424
418
|
big_df = big_df[
|
|
425
419
|
[
|
|
@@ -478,7 +472,7 @@ def bond_cov_comparison() -> pd.DataFrame:
|
|
|
478
472
|
url = "https://16.push2.eastmoney.com/api/qt/clist/get"
|
|
479
473
|
params = {
|
|
480
474
|
"pn": "1",
|
|
481
|
-
"pz": "
|
|
475
|
+
"pz": "100",
|
|
482
476
|
"po": "1",
|
|
483
477
|
"np": "1",
|
|
484
478
|
"ut": "bd1d9ddb04089700cf9c27f6f7426281",
|
|
@@ -487,15 +481,9 @@ def bond_cov_comparison() -> pd.DataFrame:
|
|
|
487
481
|
"fid": "f243",
|
|
488
482
|
"fs": "b:MK0354",
|
|
489
483
|
"fields": "f1,f152,f2,f3,f12,f13,f14,f227,f228,f229,f230,f231,f232,f233,f234,"
|
|
490
|
-
|
|
491
|
-
"_": "1590386857527",
|
|
484
|
+
"f235,f236,f237,f238,f239,f240,f241,f242,f26,f243",
|
|
492
485
|
}
|
|
493
|
-
|
|
494
|
-
text_data = r.text
|
|
495
|
-
json_data = demjson.decode(text_data)
|
|
496
|
-
temp_df = pd.DataFrame(json_data["data"]["diff"])
|
|
497
|
-
temp_df.reset_index(inplace=True)
|
|
498
|
-
temp_df["index"] = range(1, len(temp_df) + 1)
|
|
486
|
+
temp_df = fetch_paginated_data(url, params)
|
|
499
487
|
temp_df.columns = [
|
|
500
488
|
"序号",
|
|
501
489
|
"_",
|
|
@@ -575,23 +563,22 @@ def bond_zh_cov_info(
|
|
|
575
563
|
"reportName": "RPT_BOND_CB_LIST",
|
|
576
564
|
"columns": "ALL",
|
|
577
565
|
"quoteColumns": "f2~01~CONVERT_STOCK_CODE~CONVERT_STOCK_PRICE,f235~10~SECURITY_CODE~TRANSFER_PRICE,"
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
566
|
+
"f236~10~SECURITY_CODE~TRANSFER_VALUE,f2~10~SECURITY_CODE~CURRENT_BOND_PRICE,"
|
|
567
|
+
"f237~10~SECURITY_CODE~TRANSFER_PREMIUM_RATIO,f239~10~SECURITY_CODE~RESALE_TRIG_PRICE,"
|
|
568
|
+
"f240~10~SECURITY_CODE~REDEEM_TRIG_PRICE,f23~01~CONVERT_STOCK_CODE~PBV_RATIO",
|
|
581
569
|
"quoteType": "0",
|
|
582
570
|
"source": "WEB",
|
|
583
571
|
"client": "WEB",
|
|
584
572
|
"filter": f'(SECURITY_CODE="{symbol}")',
|
|
585
|
-
"_": "1654952140613",
|
|
586
573
|
}
|
|
587
574
|
if indicator == "基本信息":
|
|
588
575
|
params.update(
|
|
589
576
|
{
|
|
590
577
|
"reportName": indicator_map[indicator],
|
|
591
578
|
"quoteColumns": "f2~01~CONVERT_STOCK_CODE~CONVERT_STOCK_PRICE,f235~10~SECURITY_CODE~TRANSFER_PRICE,"
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
579
|
+
"f236~10~SECURITY_CODE~TRANSFER_VALUE,f2~10~SECURITY_CODE~CURRENT_BOND_PRICE,"
|
|
580
|
+
"f237~10~SECURITY_CODE~TRANSFER_PREMIUM_RATIO,f239~10~SECURITY_CODE~RESALE_TRIG_PRICE,"
|
|
581
|
+
"f240~10~SECURITY_CODE~REDEEM_TRIG_PRICE,f23~01~CONVERT_STOCK_CODE~PBV_RATIO",
|
|
595
582
|
}
|
|
596
583
|
)
|
|
597
584
|
r = requests.get(url, params=params)
|
|
@@ -633,12 +620,16 @@ def bond_zh_cov_info(
|
|
|
633
620
|
data_json = r.json()
|
|
634
621
|
temp_df = pd.DataFrame.from_dict(data_json["result"]["data"])
|
|
635
622
|
return temp_df
|
|
623
|
+
else:
|
|
624
|
+
return pd.DataFrame()
|
|
636
625
|
|
|
637
626
|
|
|
638
627
|
def bond_zh_cov_value_analysis(symbol: str = "113527") -> pd.DataFrame:
|
|
639
628
|
"""
|
|
640
629
|
https://data.eastmoney.com/kzz/detail/113527.html
|
|
641
630
|
东方财富网-数据中心-新股数据-可转债数据-价值分析-溢价率分析
|
|
631
|
+
:param symbol: 可转债代码
|
|
632
|
+
:type symbol: str
|
|
642
633
|
:return: 可转债价值分析
|
|
643
634
|
:rtype: pandas.DataFrame
|
|
644
635
|
"""
|
|
@@ -653,7 +644,6 @@ def bond_zh_cov_value_analysis(symbol: str = "113527") -> pd.DataFrame:
|
|
|
653
644
|
"filter": f'(zcode="{symbol}")',
|
|
654
645
|
"p": "1",
|
|
655
646
|
"ps": "8000",
|
|
656
|
-
"_": "1648629088839",
|
|
657
647
|
}
|
|
658
648
|
r = requests.get(url, params=params)
|
|
659
649
|
data_json = r.json()
|
|
@@ -671,6 +661,7 @@ def bond_zh_cov_value_analysis(symbol: str = "113527") -> pd.DataFrame:
|
|
|
671
661
|
"-",
|
|
672
662
|
"-",
|
|
673
663
|
"-",
|
|
664
|
+
"-",
|
|
674
665
|
]
|
|
675
666
|
temp_df = temp_df[
|
|
676
667
|
[
|