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
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# -*- coding:utf-8 -*-
|
|
3
|
+
"""
|
|
4
|
+
Date: 2024/6/14 17:00
|
|
5
|
+
Desc: 东方财富网-数据中心-融资融券-融资融券账户统计-两融账户信息
|
|
6
|
+
https://www.szse.cn/disclosure/margin/object/index.html
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import pandas as pd
|
|
10
|
+
import requests
|
|
11
|
+
|
|
12
|
+
from akshare.utils.tqdm import get_tqdm
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def stock_margin_account_info() -> pd.DataFrame:
|
|
16
|
+
"""
|
|
17
|
+
东方财富网-数据中心-融资融券-融资融券账户统计-两融账户信息
|
|
18
|
+
https://data.eastmoney.com/rzrq/zhtjday.html
|
|
19
|
+
:return: 融资融券账户统计
|
|
20
|
+
:rtype: pandas.DataFrame
|
|
21
|
+
"""
|
|
22
|
+
import warnings
|
|
23
|
+
|
|
24
|
+
warnings.filterwarnings(action="ignore", category=FutureWarning)
|
|
25
|
+
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
26
|
+
params = {
|
|
27
|
+
"reportName": "RPTA_WEB_MARGIN_DAILYTRADE",
|
|
28
|
+
"columns": "ALL",
|
|
29
|
+
"pageNumber": "1",
|
|
30
|
+
"pageSize": "500",
|
|
31
|
+
"sortColumns": "STATISTICS_DATE",
|
|
32
|
+
"sortTypes": "-1",
|
|
33
|
+
"p": "1",
|
|
34
|
+
"pageNo": "1",
|
|
35
|
+
"pageNum": "1",
|
|
36
|
+
}
|
|
37
|
+
r = requests.get(url=url, params=params)
|
|
38
|
+
data_json = r.json()
|
|
39
|
+
total_page = data_json["result"]["pages"]
|
|
40
|
+
tqdm = get_tqdm()
|
|
41
|
+
big_df = pd.DataFrame()
|
|
42
|
+
for page in tqdm(range(1, total_page + 1), leave=False):
|
|
43
|
+
params.update(
|
|
44
|
+
{
|
|
45
|
+
"pageNumber": page,
|
|
46
|
+
"p": page,
|
|
47
|
+
"pageNo": page,
|
|
48
|
+
"pageNum": page,
|
|
49
|
+
}
|
|
50
|
+
)
|
|
51
|
+
r = requests.get(url=url, params=params)
|
|
52
|
+
data_json = r.json()
|
|
53
|
+
temp_df = pd.DataFrame(data_json["result"]["data"])
|
|
54
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
55
|
+
|
|
56
|
+
big_df.rename(
|
|
57
|
+
columns={
|
|
58
|
+
"STATISTICS_DATE": "日期",
|
|
59
|
+
"FIN_BALANCE": "融资余额",
|
|
60
|
+
"LOAN_BALANCE": "融券余额",
|
|
61
|
+
"FIN_BUY_AMT": "融资买入额",
|
|
62
|
+
"LOAN_SELL_AMT": "融券卖出额",
|
|
63
|
+
"SECURITY_ORG_NUM": "证券公司数量",
|
|
64
|
+
"OPERATEDEPT_NUM": "营业部数量",
|
|
65
|
+
"PERSONAL_INVESTOR_NUM": "个人投资者数量",
|
|
66
|
+
"ORG_INVESTOR_NUM": "机构投资者数量",
|
|
67
|
+
"INVESTOR_NUM": "参与交易的投资者数量",
|
|
68
|
+
"MARGINLIAB_INVESTOR_NUM": "有融资融券负债的投资者数量",
|
|
69
|
+
"TOTAL_GUARANTEE": "担保物总价值",
|
|
70
|
+
"AVG_GUARANTEE_RATIO": "平均维持担保比例",
|
|
71
|
+
},
|
|
72
|
+
inplace=True,
|
|
73
|
+
)
|
|
74
|
+
big_df = big_df[
|
|
75
|
+
[
|
|
76
|
+
"日期",
|
|
77
|
+
"融资余额",
|
|
78
|
+
"融券余额",
|
|
79
|
+
"融资买入额",
|
|
80
|
+
"融券卖出额",
|
|
81
|
+
"证券公司数量",
|
|
82
|
+
"营业部数量",
|
|
83
|
+
"个人投资者数量",
|
|
84
|
+
"机构投资者数量",
|
|
85
|
+
"参与交易的投资者数量",
|
|
86
|
+
"有融资融券负债的投资者数量",
|
|
87
|
+
"担保物总价值",
|
|
88
|
+
"平均维持担保比例",
|
|
89
|
+
]
|
|
90
|
+
]
|
|
91
|
+
|
|
92
|
+
big_df["日期"] = pd.to_datetime(big_df["日期"], errors="coerce").dt.date
|
|
93
|
+
for item in big_df.columns[1:]:
|
|
94
|
+
big_df[item] = pd.to_numeric(big_df[item], errors="coerce")
|
|
95
|
+
big_df.sort_values(["日期"], ignore_index=True, inplace=True)
|
|
96
|
+
return big_df
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
if __name__ == "__main__":
|
|
100
|
+
stock_margin_account_info_df = stock_margin_account_info()
|
|
101
|
+
print(stock_margin_account_info_df)
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date:
|
|
4
|
+
Date: 2024/6/14 17:20
|
|
5
5
|
Desc: 上海证券交易所-融资融券数据
|
|
6
|
-
|
|
6
|
+
https://www.sse.com.cn/market/othersdata/margin/sum/
|
|
7
7
|
"""
|
|
8
|
+
|
|
8
9
|
import pandas as pd
|
|
9
10
|
import requests
|
|
10
11
|
|
|
@@ -41,16 +42,19 @@ def stock_margin_ratio_pa(date: str = "20231013") -> pd.DataFrame:
|
|
|
41
42
|
"secuCode": "证券代码",
|
|
42
43
|
"secuName": "证券简称",
|
|
43
44
|
"slMarginRatio": "融券比例",
|
|
44
|
-
},
|
|
45
|
+
},
|
|
46
|
+
inplace=True,
|
|
45
47
|
)
|
|
46
|
-
temp_df = temp_df[
|
|
48
|
+
temp_df = temp_df[
|
|
49
|
+
[
|
|
47
50
|
"证券代码",
|
|
48
51
|
"证券简称",
|
|
49
52
|
"融资比例",
|
|
50
53
|
"融券比例",
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
temp_df[
|
|
54
|
+
]
|
|
55
|
+
]
|
|
56
|
+
temp_df["融资比例"] = pd.to_numeric(temp_df["融资比例"], errors="coerce")
|
|
57
|
+
temp_df["融券比例"] = pd.to_numeric(temp_df["融券比例"], errors="coerce")
|
|
54
58
|
return temp_df
|
|
55
59
|
|
|
56
60
|
|
|
@@ -59,7 +63,7 @@ def stock_margin_sse(
|
|
|
59
63
|
) -> pd.DataFrame:
|
|
60
64
|
"""
|
|
61
65
|
上海证券交易所-融资融券数据-融资融券汇总
|
|
62
|
-
|
|
66
|
+
https://www.sse.com.cn/market/othersdata/margin/sum/
|
|
63
67
|
:param start_date: 交易开始日期
|
|
64
68
|
:type start_date: str
|
|
65
69
|
:param end_date: 交易结束日期
|
|
@@ -67,7 +71,7 @@ def stock_margin_sse(
|
|
|
67
71
|
:return: 融资融券汇总
|
|
68
72
|
:rtype: pandas.DataFrame
|
|
69
73
|
"""
|
|
70
|
-
url = "
|
|
74
|
+
url = "https://query.sse.com.cn/marketdata/tradedata/queryMargin.do"
|
|
71
75
|
params = {
|
|
72
76
|
"isPagination": "true",
|
|
73
77
|
"beginDate": start_date,
|
|
@@ -79,11 +83,11 @@ def stock_margin_sse(
|
|
|
79
83
|
"pageHelp.beginPage": "1",
|
|
80
84
|
"pageHelp.cacheSize": "1",
|
|
81
85
|
"pageHelp.endPage": "5",
|
|
82
|
-
"_": "1612773448860",
|
|
83
86
|
}
|
|
84
87
|
headers = {
|
|
85
|
-
"Referer": "
|
|
86
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
88
|
+
"Referer": "https://www.sse.com.cn/",
|
|
89
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
90
|
+
"Chrome/88.0.4324.150 Safari/537.36",
|
|
87
91
|
}
|
|
88
92
|
r = requests.get(url, params=params, headers=headers)
|
|
89
93
|
data_json = r.json()
|
|
@@ -126,13 +130,13 @@ def stock_margin_sse(
|
|
|
126
130
|
def stock_margin_detail_sse(date: str = "20230922") -> pd.DataFrame:
|
|
127
131
|
"""
|
|
128
132
|
上海证券交易所-融资融券数据-融资融券明细
|
|
129
|
-
|
|
133
|
+
https://www.sse.com.cn/market/othersdata/margin/detail/
|
|
130
134
|
:param date: 交易日期
|
|
131
135
|
:type date: str
|
|
132
136
|
:return: 融资融券明细
|
|
133
137
|
:rtype: pandas.DataFrame
|
|
134
138
|
"""
|
|
135
|
-
url = "
|
|
139
|
+
url = "https://query.sse.com.cn/marketdata/tradedata/queryMargin.do"
|
|
136
140
|
params = {
|
|
137
141
|
"isPagination": "true",
|
|
138
142
|
"tabType": "mxtype",
|
|
@@ -146,11 +150,11 @@ def stock_margin_detail_sse(date: str = "20230922") -> pd.DataFrame:
|
|
|
146
150
|
"pageHelp.beginPage": "1",
|
|
147
151
|
"pageHelp.cacheSize": "1",
|
|
148
152
|
"pageHelp.endPage": "21",
|
|
149
|
-
"_": "1612773448860",
|
|
150
153
|
}
|
|
151
154
|
headers = {
|
|
152
|
-
"Referer": "
|
|
153
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
155
|
+
"Referer": "https://www.sse.com.cn/",
|
|
156
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
157
|
+
"Chrome/88.0.4324.150 Safari/537.36",
|
|
154
158
|
}
|
|
155
159
|
r = requests.get(url, params=params, headers=headers)
|
|
156
160
|
data_json = r.json()
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date: 2024/
|
|
4
|
+
Date: 2024/6/14 17:00
|
|
5
5
|
Desc: 深圳证券交易所-融资融券数据
|
|
6
6
|
https://www.szse.cn/disclosure/margin/object/index.html
|
|
7
7
|
"""
|
|
@@ -76,17 +76,17 @@ def stock_margin_szse(date: str = "20240411") -> pd.DataFrame:
|
|
|
76
76
|
"融资融券余额",
|
|
77
77
|
]
|
|
78
78
|
temp_df["融资买入额"] = temp_df["融资买入额"].str.replace(",", "")
|
|
79
|
-
temp_df["融资买入额"] = pd.to_numeric(temp_df["融资买入额"])
|
|
79
|
+
temp_df["融资买入额"] = pd.to_numeric(temp_df["融资买入额"], errors="coerce")
|
|
80
80
|
temp_df["融资余额"] = temp_df["融资余额"].str.replace(",", "")
|
|
81
|
-
temp_df["融资余额"] = pd.to_numeric(temp_df["融资余额"])
|
|
81
|
+
temp_df["融资余额"] = pd.to_numeric(temp_df["融资余额"], errors="coerce")
|
|
82
82
|
temp_df["融券卖出量"] = temp_df["融券卖出量"].str.replace(",", "")
|
|
83
|
-
temp_df["融券卖出量"] = pd.to_numeric(temp_df["融券卖出量"])
|
|
83
|
+
temp_df["融券卖出量"] = pd.to_numeric(temp_df["融券卖出量"], errors="coerce")
|
|
84
84
|
temp_df["融券余量"] = temp_df["融券余量"].str.replace(",", "")
|
|
85
|
-
temp_df["融券余量"] = pd.to_numeric(temp_df["融券余量"])
|
|
85
|
+
temp_df["融券余量"] = pd.to_numeric(temp_df["融券余量"], errors="coerce")
|
|
86
86
|
temp_df["融券余额"] = temp_df["融券余额"].str.replace(",", "")
|
|
87
|
-
temp_df["融券余额"] = pd.to_numeric(temp_df["融券余额"])
|
|
87
|
+
temp_df["融券余额"] = pd.to_numeric(temp_df["融券余额"], errors="coerce")
|
|
88
88
|
temp_df["融资融券余额"] = temp_df["融资融券余额"].str.replace(",", "")
|
|
89
|
-
temp_df["融资融券余额"] = pd.to_numeric(temp_df["融资融券余额"])
|
|
89
|
+
temp_df["融资融券余额"] = pd.to_numeric(temp_df["融资融券余额"], errors="coerce")
|
|
90
90
|
return temp_df
|
|
91
91
|
|
|
92
92
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date: 2024/4/
|
|
4
|
+
Date: 2024/4/25 20:22
|
|
5
5
|
Desc: 乐咕乐股网-赚钱效应分析
|
|
6
6
|
https://www.legulegu.com/stockdata/market-activity
|
|
7
7
|
"""
|
|
@@ -12,6 +12,8 @@ import pandas as pd
|
|
|
12
12
|
import requests
|
|
13
13
|
from bs4 import BeautifulSoup
|
|
14
14
|
|
|
15
|
+
from akshare.utils.cons import headers
|
|
16
|
+
|
|
15
17
|
|
|
16
18
|
def stock_market_activity_legu() -> pd.DataFrame:
|
|
17
19
|
"""
|
|
@@ -21,7 +23,7 @@ def stock_market_activity_legu() -> pd.DataFrame:
|
|
|
21
23
|
:rtype: pandas.DataFrame
|
|
22
24
|
"""
|
|
23
25
|
url = "https://legulegu.com/stockdata/market-activity"
|
|
24
|
-
r = requests.get(url)
|
|
26
|
+
r = requests.get(url, headers=headers)
|
|
25
27
|
temp_df = pd.read_html(StringIO(r.text))[0]
|
|
26
28
|
temp_df_one = temp_df.iloc[:, :2]
|
|
27
29
|
temp_df_one.columns = ["item", "value"]
|
|
@@ -5,6 +5,7 @@ Date: 2022/12/27 21:11
|
|
|
5
5
|
Desc: 东方财富-行情中心-盘口异动
|
|
6
6
|
https://quote.eastmoney.com/changes/
|
|
7
7
|
"""
|
|
8
|
+
|
|
8
9
|
import pandas as pd
|
|
9
10
|
import requests
|
|
10
11
|
|
|
@@ -13,12 +14,14 @@ def stock_changes_em(symbol: str = "大笔买入") -> pd.DataFrame:
|
|
|
13
14
|
"""
|
|
14
15
|
东方财富-行情中心-盘口异动
|
|
15
16
|
https://quote.eastmoney.com/changes/
|
|
16
|
-
:param symbol: choice of {'火箭发射', '快速反弹', '大笔买入', '封涨停板', '打开跌停板', '有大买盘',
|
|
17
|
+
:param symbol: choice of {'火箭发射', '快速反弹', '大笔买入', '封涨停板', '打开跌停板', '有大买盘',
|
|
18
|
+
'竞价上涨', '高开5日线', '向上缺口', '60日新高', '60日大幅上涨', '加速下跌', '高台跳水',
|
|
19
|
+
'大笔卖出', '封跌停板', '打开涨停板', '有大卖盘', '竞价下跌', '低开5日线', '向下缺口', '60日新低', '60日大幅下跌'}
|
|
17
20
|
:type symbol: str
|
|
18
21
|
:return: 盘口异动
|
|
19
22
|
:rtype: pandas.DataFrame
|
|
20
23
|
"""
|
|
21
|
-
url = "
|
|
24
|
+
url = "https://push2ex.eastmoney.com/getAllStockChanges"
|
|
22
25
|
symbol_map = {
|
|
23
26
|
"火箭发射": "8201",
|
|
24
27
|
"快速反弹": "8202",
|
|
@@ -50,7 +53,6 @@ def stock_changes_em(symbol: str = "大笔买入") -> pd.DataFrame:
|
|
|
50
53
|
"pagesize": "5000",
|
|
51
54
|
"ut": "7eea3edcaed734bea9cbfc24409ed989",
|
|
52
55
|
"dpt": "wzchanges",
|
|
53
|
-
"_": "1624005264245",
|
|
54
56
|
}
|
|
55
57
|
r = requests.get(url, params=params)
|
|
56
58
|
data_json = r.json()
|
|
@@ -85,54 +87,88 @@ def stock_board_change_em() -> pd.DataFrame:
|
|
|
85
87
|
:return: 当日板块异动详情页
|
|
86
88
|
:rtype: pandas.DataFrame
|
|
87
89
|
"""
|
|
88
|
-
url = "
|
|
90
|
+
url = "https://push2ex.eastmoney.com/getAllBKChanges"
|
|
89
91
|
params = {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
'_': '1671978840598',
|
|
92
|
+
"ut": "7eea3edcaed734bea9cbfc24409ed989",
|
|
93
|
+
"dpt": "wzchanges",
|
|
94
|
+
"pageindex": "0",
|
|
95
|
+
"pagesize": "5000",
|
|
95
96
|
}
|
|
96
97
|
r = requests.get(url, params=params)
|
|
97
98
|
data_json = r.json()
|
|
98
|
-
data_df = pd.DataFrame(data_json[
|
|
99
|
+
data_df = pd.DataFrame(data_json["data"]["allbk"])
|
|
99
100
|
data_df.columns = [
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
101
|
+
"-",
|
|
102
|
+
"-",
|
|
103
|
+
"板块名称",
|
|
104
|
+
"涨跌幅",
|
|
105
|
+
"主力净流入",
|
|
106
|
+
"板块异动总次数",
|
|
106
107
|
"ms",
|
|
107
108
|
"板块具体异动类型列表及出现次数",
|
|
108
109
|
]
|
|
109
|
-
data_df[
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
data_df[
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
110
|
+
data_df["板块异动最频繁个股及所属类型-买卖方向"] = [
|
|
111
|
+
item["m"] for item in data_df["ms"]
|
|
112
|
+
]
|
|
113
|
+
data_df["板块异动最频繁个股及所属类型-股票代码"] = [
|
|
114
|
+
item["c"] for item in data_df["ms"]
|
|
115
|
+
]
|
|
116
|
+
data_df["板块异动最频繁个股及所属类型-股票名称"] = [
|
|
117
|
+
item["n"] for item in data_df["ms"]
|
|
118
|
+
]
|
|
119
|
+
data_df["板块异动最频繁个股及所属类型-买卖方向"] = data_df[
|
|
120
|
+
"板块异动最频繁个股及所属类型-买卖方向"
|
|
121
|
+
].map({0: "大笔买入", 1: "大笔卖出"})
|
|
122
|
+
data_df = data_df[
|
|
123
|
+
[
|
|
124
|
+
"板块名称",
|
|
125
|
+
"涨跌幅",
|
|
126
|
+
"主力净流入",
|
|
127
|
+
"板块异动总次数",
|
|
128
|
+
"板块异动最频繁个股及所属类型-股票代码",
|
|
129
|
+
"板块异动最频繁个股及所属类型-股票名称",
|
|
130
|
+
"板块异动最频繁个股及所属类型-买卖方向",
|
|
131
|
+
"板块具体异动类型列表及出现次数",
|
|
132
|
+
]
|
|
133
|
+
]
|
|
134
|
+
data_df["涨跌幅"] = pd.to_numeric(data_df["涨跌幅"], errors="coerce")
|
|
135
|
+
data_df["主力净流入"] = pd.to_numeric(data_df["主力净流入"], errors="coerce")
|
|
136
|
+
data_df["板块异动总次数"] = pd.to_numeric(
|
|
137
|
+
data_df["板块异动总次数"], errors="coerce"
|
|
138
|
+
)
|
|
126
139
|
return data_df
|
|
127
140
|
|
|
128
141
|
|
|
129
142
|
if __name__ == "__main__":
|
|
130
|
-
stock_changes_em_df = stock_changes_em(symbol=
|
|
143
|
+
stock_changes_em_df = stock_changes_em(symbol="大笔买入")
|
|
131
144
|
print(stock_changes_em_df)
|
|
132
145
|
|
|
133
146
|
stock_board_change_em_df = stock_board_change_em()
|
|
134
147
|
print(stock_board_change_em_df)
|
|
135
148
|
|
|
136
|
-
for item in {
|
|
149
|
+
for item in {
|
|
150
|
+
"火箭发射",
|
|
151
|
+
"快速反弹",
|
|
152
|
+
"大笔买入",
|
|
153
|
+
"封涨停板",
|
|
154
|
+
"打开跌停板",
|
|
155
|
+
"有大买盘",
|
|
156
|
+
"竞价上涨",
|
|
157
|
+
"高开5日线",
|
|
158
|
+
"向上缺口",
|
|
159
|
+
"60日新高",
|
|
160
|
+
"60日大幅上涨",
|
|
161
|
+
"加速下跌",
|
|
162
|
+
"高台跳水",
|
|
163
|
+
"大笔卖出",
|
|
164
|
+
"封跌停板",
|
|
165
|
+
"打开涨停板",
|
|
166
|
+
"有大卖盘",
|
|
167
|
+
"竞价下跌",
|
|
168
|
+
"低开5日线",
|
|
169
|
+
"向下缺口",
|
|
170
|
+
"60日新低",
|
|
171
|
+
"60日大幅下跌",
|
|
172
|
+
}:
|
|
137
173
|
stock_changes_em_df = stock_changes_em(symbol=item)
|
|
138
174
|
print(stock_changes_em_df)
|
|
@@ -5,6 +5,7 @@ Date: 2022/9/21 16:49
|
|
|
5
5
|
Desc: 东方财富网-数据中心-特色数据-券商业绩月报
|
|
6
6
|
http://data.eastmoney.com/other/qsjy.html
|
|
7
7
|
"""
|
|
8
|
+
|
|
8
9
|
import pandas as pd
|
|
9
10
|
import requests
|
|
10
11
|
|
|
@@ -71,13 +72,21 @@ def stock_qsjy_em(date: str = "20200731") -> pd.DataFrame:
|
|
|
71
72
|
temp_df["当月净利润-净利润"] = pd.to_numeric(temp_df["当月净利润-净利润"])
|
|
72
73
|
temp_df["当月净利润-同比增长"] = pd.to_numeric(temp_df["当月净利润-同比增长"])
|
|
73
74
|
temp_df["当月净利润-环比增长"] = pd.to_numeric(temp_df["当月净利润-环比增长"])
|
|
74
|
-
temp_df["当年累计净利润-累计净利润"] = pd.to_numeric(
|
|
75
|
-
|
|
75
|
+
temp_df["当年累计净利润-累计净利润"] = pd.to_numeric(
|
|
76
|
+
temp_df["当年累计净利润-累计净利润"]
|
|
77
|
+
)
|
|
78
|
+
temp_df["当年累计净利润-同比增长"] = pd.to_numeric(
|
|
79
|
+
temp_df["当年累计净利润-同比增长"]
|
|
80
|
+
)
|
|
76
81
|
temp_df["当月营业收入-营业收入"] = pd.to_numeric(temp_df["当月营业收入-营业收入"])
|
|
77
82
|
temp_df["当月营业收入-环比增长"] = pd.to_numeric(temp_df["当月营业收入-环比增长"])
|
|
78
83
|
temp_df["当月营业收入-同比增长"] = pd.to_numeric(temp_df["当月营业收入-同比增长"])
|
|
79
|
-
temp_df["当年累计营业收入-累计营业收入"] = pd.to_numeric(
|
|
80
|
-
|
|
84
|
+
temp_df["当年累计营业收入-累计营业收入"] = pd.to_numeric(
|
|
85
|
+
temp_df["当年累计营业收入-累计营业收入"]
|
|
86
|
+
)
|
|
87
|
+
temp_df["当年累计营业收入-同比增长"] = pd.to_numeric(
|
|
88
|
+
temp_df["当年累计营业收入-同比增长"]
|
|
89
|
+
)
|
|
81
90
|
temp_df["净资产-净资产"] = pd.to_numeric(temp_df["净资产-净资产"])
|
|
82
91
|
temp_df["净资产-同比增长"] = pd.to_numeric(temp_df["净资产-同比增长"])
|
|
83
92
|
return temp_df
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date: 2024/
|
|
4
|
+
Date: 2024/9/20 15:30
|
|
5
5
|
Desc: 东方财富-数据中心-年报季报-业绩快报-三大报表
|
|
6
6
|
资产负债表
|
|
7
7
|
https://data.eastmoney.com/bbsj/202003/zcfz.html
|
|
@@ -17,7 +17,7 @@ import requests
|
|
|
17
17
|
from akshare.utils.tqdm import get_tqdm
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
def stock_zcfz_em(date: str = "
|
|
20
|
+
def stock_zcfz_em(date: str = "20240331") -> pd.DataFrame:
|
|
21
21
|
"""
|
|
22
22
|
东方财富-数据中心-年报季报-业绩快报-资产负债表
|
|
23
23
|
https://data.eastmoney.com/bbsj/202003/zcfz.html
|
|
@@ -158,7 +158,148 @@ def stock_zcfz_em(date: str = "20220331") -> pd.DataFrame:
|
|
|
158
158
|
return big_df
|
|
159
159
|
|
|
160
160
|
|
|
161
|
-
def
|
|
161
|
+
def stock_zcfz_bj_em(date: str = "20240331") -> pd.DataFrame:
|
|
162
|
+
"""
|
|
163
|
+
东方财富-数据中心-年报季报-业绩快报-资产负债表
|
|
164
|
+
https://data.eastmoney.com/bbsj/202003/zcfz.html
|
|
165
|
+
:param date: choice of {"20200331", "20200630", "20200930", "20201231", "..."}; 从 20100331 开始
|
|
166
|
+
:type date: str
|
|
167
|
+
:return: 资产负债表
|
|
168
|
+
:rtype: pandas.DataFrame
|
|
169
|
+
"""
|
|
170
|
+
import warnings
|
|
171
|
+
|
|
172
|
+
warnings.filterwarnings(action="ignore", category=FutureWarning)
|
|
173
|
+
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
174
|
+
params = {
|
|
175
|
+
"sortColumns": "NOTICE_DATE,SECURITY_CODE",
|
|
176
|
+
"sortTypes": "-1,-1",
|
|
177
|
+
"pageSize": "500",
|
|
178
|
+
"pageNumber": "1",
|
|
179
|
+
"reportName": "RPT_DMSK_FN_BALANCE",
|
|
180
|
+
"columns": "ALL",
|
|
181
|
+
"filter": f"""(TRADE_MARKET_CODE="069001017")
|
|
182
|
+
(REPORT_DATE='{'-'.join([date[:4], date[4:6], date[6:]])}')""",
|
|
183
|
+
}
|
|
184
|
+
r = requests.get(url, params=params)
|
|
185
|
+
data_json = r.json()
|
|
186
|
+
page_num = data_json["result"]["pages"]
|
|
187
|
+
big_df = pd.DataFrame()
|
|
188
|
+
tqdm = get_tqdm()
|
|
189
|
+
for page in tqdm(range(1, page_num + 1), leave=False):
|
|
190
|
+
params.update(
|
|
191
|
+
{
|
|
192
|
+
"pageNumber": page,
|
|
193
|
+
}
|
|
194
|
+
)
|
|
195
|
+
r = requests.get(url, params=params)
|
|
196
|
+
data_json = r.json()
|
|
197
|
+
temp_df = pd.DataFrame(data_json["result"]["data"])
|
|
198
|
+
big_df = pd.concat(objs=[big_df, temp_df], join="outer", ignore_index=True)
|
|
199
|
+
|
|
200
|
+
big_df.reset_index(inplace=True)
|
|
201
|
+
big_df["index"] = big_df.index + 1
|
|
202
|
+
big_df.columns = [
|
|
203
|
+
"序号",
|
|
204
|
+
"_",
|
|
205
|
+
"股票代码",
|
|
206
|
+
"_",
|
|
207
|
+
"_",
|
|
208
|
+
"股票简称",
|
|
209
|
+
"_",
|
|
210
|
+
"_",
|
|
211
|
+
"_",
|
|
212
|
+
"_",
|
|
213
|
+
"_",
|
|
214
|
+
"_",
|
|
215
|
+
"_",
|
|
216
|
+
"公告日期",
|
|
217
|
+
"_",
|
|
218
|
+
"资产-总资产",
|
|
219
|
+
"_",
|
|
220
|
+
"资产-货币资金",
|
|
221
|
+
"_",
|
|
222
|
+
"资产-应收账款",
|
|
223
|
+
"_",
|
|
224
|
+
"资产-存货",
|
|
225
|
+
"_",
|
|
226
|
+
"负债-总负债",
|
|
227
|
+
"负债-应付账款",
|
|
228
|
+
"_",
|
|
229
|
+
"负债-预收账款",
|
|
230
|
+
"_",
|
|
231
|
+
"股东权益合计",
|
|
232
|
+
"_",
|
|
233
|
+
"资产-总资产同比",
|
|
234
|
+
"负债-总负债同比",
|
|
235
|
+
"_",
|
|
236
|
+
"资产负债率",
|
|
237
|
+
"_",
|
|
238
|
+
"_",
|
|
239
|
+
"_",
|
|
240
|
+
"_",
|
|
241
|
+
"_",
|
|
242
|
+
"_",
|
|
243
|
+
"_",
|
|
244
|
+
"_",
|
|
245
|
+
"_",
|
|
246
|
+
"_",
|
|
247
|
+
"_",
|
|
248
|
+
"_",
|
|
249
|
+
"_",
|
|
250
|
+
"_",
|
|
251
|
+
"_",
|
|
252
|
+
"_",
|
|
253
|
+
"_",
|
|
254
|
+
"_",
|
|
255
|
+
"_",
|
|
256
|
+
"_",
|
|
257
|
+
"_",
|
|
258
|
+
"_",
|
|
259
|
+
"_",
|
|
260
|
+
"_",
|
|
261
|
+
]
|
|
262
|
+
big_df = big_df[
|
|
263
|
+
[
|
|
264
|
+
"序号",
|
|
265
|
+
"股票代码",
|
|
266
|
+
"股票简称",
|
|
267
|
+
"资产-货币资金",
|
|
268
|
+
"资产-应收账款",
|
|
269
|
+
"资产-存货",
|
|
270
|
+
"资产-总资产",
|
|
271
|
+
"资产-总资产同比",
|
|
272
|
+
"负债-应付账款",
|
|
273
|
+
"负债-预收账款",
|
|
274
|
+
"负债-总负债",
|
|
275
|
+
"负债-总负债同比",
|
|
276
|
+
"资产负债率",
|
|
277
|
+
"股东权益合计",
|
|
278
|
+
"公告日期",
|
|
279
|
+
]
|
|
280
|
+
]
|
|
281
|
+
|
|
282
|
+
big_df["资产-货币资金"] = pd.to_numeric(big_df["资产-货币资金"], errors="coerce")
|
|
283
|
+
big_df["资产-应收账款"] = pd.to_numeric(big_df["资产-应收账款"], errors="coerce")
|
|
284
|
+
big_df["资产-存货"] = pd.to_numeric(big_df["资产-存货"], errors="coerce")
|
|
285
|
+
big_df["资产-总资产"] = pd.to_numeric(big_df["资产-总资产"], errors="coerce")
|
|
286
|
+
big_df["资产-总资产同比"] = pd.to_numeric(
|
|
287
|
+
big_df["资产-总资产同比"], errors="coerce"
|
|
288
|
+
)
|
|
289
|
+
big_df["负债-应付账款"] = pd.to_numeric(big_df["负债-应付账款"], errors="coerce")
|
|
290
|
+
big_df["负债-预收账款"] = pd.to_numeric(big_df["负债-预收账款"], errors="coerce")
|
|
291
|
+
big_df["负债-总负债"] = pd.to_numeric(big_df["负债-总负债"], errors="coerce")
|
|
292
|
+
big_df["负债-总负债同比"] = pd.to_numeric(
|
|
293
|
+
big_df["负债-总负债同比"], errors="coerce"
|
|
294
|
+
)
|
|
295
|
+
big_df["资产负债率"] = pd.to_numeric(big_df["资产负债率"], errors="coerce")
|
|
296
|
+
big_df["股东权益合计"] = pd.to_numeric(big_df["股东权益合计"], errors="coerce")
|
|
297
|
+
big_df["股东权益合计"] = pd.to_numeric(big_df["股东权益合计"], errors="coerce")
|
|
298
|
+
big_df["公告日期"] = pd.to_datetime(big_df["公告日期"], errors="coerce").dt.date
|
|
299
|
+
return big_df
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
def stock_lrb_em(date: str = "20240331") -> pd.DataFrame:
|
|
162
303
|
"""
|
|
163
304
|
东方财富-数据中心-年报季报-业绩快报-利润表
|
|
164
305
|
https://data.eastmoney.com/bbsj/202003/lrb.html
|
|
@@ -195,7 +336,7 @@ def stock_lrb_em(date: str = "20081231") -> pd.DataFrame:
|
|
|
195
336
|
r = requests.get(url, params=params)
|
|
196
337
|
data_json = r.json()
|
|
197
338
|
temp_df = pd.DataFrame(data_json["result"]["data"])
|
|
198
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
339
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
199
340
|
|
|
200
341
|
big_df.reset_index(inplace=True)
|
|
201
342
|
big_df["index"] = big_df.index + 1
|
|
@@ -294,7 +435,7 @@ def stock_lrb_em(date: str = "20081231") -> pd.DataFrame:
|
|
|
294
435
|
return big_df
|
|
295
436
|
|
|
296
437
|
|
|
297
|
-
def stock_xjll_em(date: str = "
|
|
438
|
+
def stock_xjll_em(date: str = "20240331") -> pd.DataFrame:
|
|
298
439
|
"""
|
|
299
440
|
东方财富-数据中心-年报季报-业绩快报-现金流量表
|
|
300
441
|
https://data.eastmoney.com/bbsj/202003/xjll.html
|
|
@@ -432,11 +573,14 @@ def stock_xjll_em(date: str = "20220331") -> pd.DataFrame:
|
|
|
432
573
|
|
|
433
574
|
|
|
434
575
|
if __name__ == "__main__":
|
|
435
|
-
stock_zcfz_em_df = stock_zcfz_em(date="
|
|
576
|
+
stock_zcfz_em_df = stock_zcfz_em(date="20240331")
|
|
436
577
|
print(stock_zcfz_em_df)
|
|
437
578
|
|
|
438
|
-
|
|
579
|
+
stock_zcfz_bj_em_df = stock_zcfz_bj_em(date="20240331")
|
|
580
|
+
print(stock_zcfz_bj_em_df)
|
|
581
|
+
|
|
582
|
+
stock_lrb_em_df = stock_lrb_em(date="20240331")
|
|
439
583
|
print(stock_lrb_em_df)
|
|
440
584
|
|
|
441
|
-
stock_xjll_em_df = stock_xjll_em(date="
|
|
585
|
+
stock_xjll_em_df = stock_xjll_em(date="20240331")
|
|
442
586
|
print(stock_xjll_em_df)
|