akshare 1.14.49__py3-none-any.whl → 1.17.99__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- akshare/__init__.py +595 -129
- akshare/air/air_hebei.py +77 -54
- akshare/air/air_zhenqi.py +0 -4
- akshare/air/cons.py +1 -0
- akshare/air/crypto.js +1 -1
- akshare/air/outcrypto.js +1 -1
- akshare/article/cons.py +1 -0
- akshare/article/epu_index.py +4 -3
- akshare/article/ff_factor.py +19 -8
- akshare/article/fred_md.py +4 -1
- akshare/article/risk_rv.py +3 -8
- akshare/bank/bank_cbirc_2020.py +11 -11
- akshare/bank/cons.py +7 -6
- akshare/bond/bond_buy_back_em.py +228 -0
- akshare/bond/bond_cb_sina.py +1 -0
- akshare/bond/bond_cb_ths.py +17 -9
- akshare/bond/bond_cbond.py +19 -14
- akshare/bond/bond_china.py +38 -39
- akshare/bond/bond_china_money.py +1 -1
- akshare/bond/bond_convert.py +10 -9
- akshare/bond/bond_em.py +37 -17
- akshare/bond/bond_summary.py +38 -37
- akshare/bond/bond_zh_cov.py +31 -40
- akshare/bond/bond_zh_sina.py +4 -0
- akshare/bond/cons.py +14 -11
- akshare/cal/__init__.py +0 -0
- akshare/cal/rv.py +170 -0
- akshare/cost/cost_living.py +7 -5
- akshare/crypto/__init__.py +1 -1
- akshare/crypto/crypto_bitcoin_cme.py +9 -7
- akshare/crypto/crypto_hold.py +4 -2
- akshare/currency/currency.py +1 -0
- akshare/currency/currency_china_bank_sina.py +11 -6
- akshare/data/__init__.py +1 -1
- akshare/data/cninfo.js +1 -1
- akshare/datasets.py +10 -21
- akshare/economic/cons.py +10 -3
- akshare/economic/macro_australia.py +74 -69
- akshare/economic/macro_bank.py +95 -653
- akshare/economic/macro_canada.py +92 -81
- akshare/economic/macro_china.py +97 -105
- akshare/economic/macro_china_hk.py +0 -1
- akshare/economic/macro_euro.py +103 -56
- akshare/economic/macro_finance_ths.py +7 -5
- akshare/economic/macro_germany.py +1 -1
- akshare/economic/macro_japan.py +0 -1
- akshare/economic/macro_other.py +1 -6
- akshare/economic/macro_swiss.py +2 -3
- akshare/economic/macro_uk.py +1 -1
- akshare/economic/macro_usa.py +7 -9
- akshare/economic/marco_cnbs.py +11 -6
- akshare/energy/energy_carbon.py +0 -1
- akshare/energy/energy_oil_em.py +1 -2
- akshare/event/cons.py +1 -0
- akshare/exceptions.py +43 -0
- akshare/file_fold/calendar.json +245 -2
- akshare/forex/__init__.py +0 -0
- akshare/forex/cons.py +192 -0
- akshare/forex/forex_em.py +149 -0
- akshare/fortune/fortune_500.py +1 -37
- akshare/fortune/fortune_bloomberg.py +6 -3
- akshare/fortune/fortune_forbes_500.py +3 -6
- akshare/fortune/fortune_hurun.py +2 -1
- akshare/fortune/fortune_xincaifu_500.py +17 -14
- akshare/fund/fund_announcement_em.py +145 -0
- akshare/fund/fund_aum_em.py +49 -35
- akshare/fund/fund_em.py +251 -220
- akshare/fund/fund_etf_em.py +44 -35
- akshare/fund/fund_etf_sina.py +75 -27
- akshare/fund/fund_etf_ths.py +2 -0
- akshare/fund/fund_fee_em.py +172 -0
- akshare/fund/fund_fhsp_em.py +42 -32
- akshare/fund/fund_init_em.py +8 -5
- akshare/fund/fund_lof_em.py +12 -19
- akshare/fund/fund_manager.py +25 -11
- akshare/fund/fund_overview_em.py +42 -0
- akshare/fund/fund_portfolio_em.py +23 -21
- akshare/fund/fund_position_lg.py +19 -8
- akshare/fund/fund_rank_em.py +2 -5
- akshare/fund/fund_rating.py +33 -12
- akshare/fund/fund_scale_em.py +24 -13
- akshare/fund/fund_scale_sina.py +20 -10
- akshare/fund/fund_xq.py +3 -2
- akshare/futures/cons.py +135 -39
- akshare/futures/cot.py +55 -56
- akshare/futures/futures_basis.py +49 -11
- akshare/futures/futures_comex_em.py +1 -0
- akshare/futures/futures_comm_ctp.py +1 -1
- akshare/futures/futures_contract_detail.py +59 -9
- akshare/futures/futures_daily_bar.py +66 -59
- akshare/futures/futures_foreign.py +14 -8
- akshare/futures/futures_hf_em.py +215 -61
- akshare/futures/futures_hist_em.py +191 -0
- akshare/futures/futures_hq_sina.py +5 -3
- akshare/futures/futures_index_ccidx.py +24 -82
- akshare/futures/futures_inventory_99.py +70 -272
- akshare/futures/futures_inventory_em.py +14 -11
- akshare/futures/futures_news_shmet.py +2 -2
- akshare/futures/futures_roll_yield.py +11 -24
- akshare/futures/futures_rule.py +7 -3
- akshare/futures/futures_rule_em.py +38 -0
- akshare/futures/futures_settlement_price_sgx.py +21 -6
- akshare/futures/futures_stock_js.py +0 -1
- akshare/futures/futures_to_spot.py +5 -6
- akshare/futures/futures_warehouse_receipt.py +48 -47
- akshare/futures/futures_zh_sina.py +3 -3
- akshare/futures/receipt.py +298 -165
- akshare/futures/requests_fun.py +16 -3
- akshare/futures/symbol_var.py +32 -13
- akshare/futures_derivative/cons.py +100 -103
- akshare/futures_derivative/futures_contract_info_cffex.py +55 -39
- akshare/futures_derivative/futures_contract_info_czce.py +2 -0
- akshare/futures_derivative/futures_contract_info_dce.py +43 -17
- akshare/futures_derivative/futures_contract_info_gfex.py +43 -31
- akshare/futures_derivative/futures_contract_info_ine.py +43 -34
- akshare/futures_derivative/futures_contract_info_shfe.py +3 -4
- akshare/futures_derivative/futures_cot_sina.py +8 -6
- akshare/futures_derivative/futures_index_sina.py +25 -13
- akshare/fx/cons.py +12 -7
- akshare/fx/fx_c_swap_cm.py +62 -0
- akshare/fx/fx_quote.py +3 -2
- akshare/fx/fx_quote_baidu.py +2 -1
- akshare/hf/__init__.py +1 -1
- akshare/hf/hf_sp500.py +8 -7
- akshare/index/cons.py +132 -28
- akshare/index/index_cni.py +7 -7
- akshare/index/index_cons.py +2 -2
- akshare/index/index_csindex.py +68 -0
- akshare/index/index_cx.py +20 -20
- akshare/index/index_drewry.py +17 -16
- akshare/index/index_eri.py +1 -0
- akshare/index/index_global_em.py +167 -0
- akshare/index/index_global_sina.py +82 -0
- akshare/index/index_kq_fz.py +17 -14
- akshare/index/index_kq_ss.py +1 -0
- akshare/index/index_option_qvix.py +351 -16
- akshare/index/index_research_sw.py +21 -21
- akshare/index/index_spot.py +9 -5
- akshare/index/index_stock_hk.py +5 -9
- akshare/index/index_stock_zh.py +111 -24
- akshare/index/index_stock_zh_csindex.py +3 -367
- akshare/index/index_sugar.py +18 -4
- akshare/index/index_sw.py +10 -2
- akshare/index/index_yw.py +53 -75
- akshare/index/index_zh_em.py +15 -82
- akshare/interest_rate/interbank_rate_em.py +0 -1
- akshare/movie/jm.js +0 -1
- akshare/news/__init__.py +1 -1
- akshare/news/news_baidu.py +395 -222
- akshare/news/news_stock.py +49 -16
- akshare/option/cons.py +2 -2
- akshare/option/option_commodity.py +341 -220
- akshare/option/option_commodity_sina.py +22 -26
- akshare/option/option_contract_info_ctp.py +63 -0
- akshare/option/option_current_sse.py +61 -0
- akshare/option/option_current_szse.py +84 -0
- akshare/option/option_czce.py +37 -9
- akshare/option/option_daily_stats_sse_szse.py +0 -1
- akshare/option/option_em.py +4 -8
- akshare/option/option_finance.py +60 -12
- akshare/option/option_finance_sina.py +7 -7
- akshare/option/option_lhb_em.py +0 -1
- akshare/option/option_margin.py +62 -0
- akshare/option/option_premium_analysis_em.py +58 -53
- akshare/option/option_risk_analysis_em.py +11 -8
- akshare/option/option_risk_indicator_sse.py +3 -4
- akshare/option/option_value_analysis_em.py +62 -55
- akshare/other/__init__.py +1 -1
- akshare/pro/__init__.py +0 -1
- akshare/pro/client.py +6 -4
- akshare/pro/cons.py +3 -2
- akshare/pro/data_pro.py +6 -5
- akshare/qdii/__init__.py +0 -0
- akshare/qdii/qdii_jsl.py +233 -0
- akshare/qhkc/__init__.py +1 -6
- akshare/qhkc/qhkc_api.py +64 -22
- akshare/qhkc_web/__init__.py +1 -6
- akshare/qhkc_web/qhkc_fund.py +10 -6
- akshare/qhkc_web/qhkc_index.py +28 -14
- akshare/qhkc_web/qhkc_tool.py +62 -59
- akshare/rate/__init__.py +1 -1
- akshare/rate/repo_rate.py +36 -32
- akshare/reits/__init__.py +1 -1
- akshare/reits/reits_basic.py +149 -13
- akshare/request.py +117 -0
- akshare/spot/__init__.py +1 -1
- akshare/spot/spot_hog_soozhu.py +165 -3
- akshare/spot/spot_sge.py +70 -9
- akshare/stock/cons.py +60 -23
- akshare/stock/stock_allotment_cninfo.py +8 -8
- akshare/stock/stock_ask_bid_em.py +3 -78
- akshare/stock/stock_board_concept_em.py +160 -35
- akshare/stock/stock_board_industry_em.py +163 -70
- akshare/stock/stock_dividend_cninfo.py +31 -17
- akshare/stock/stock_dzjy_em.py +347 -260
- akshare/stock/stock_fund_em.py +72 -64
- akshare/stock/stock_fund_hold.py +1 -2
- akshare/stock/stock_gsrl_em.py +1 -0
- akshare/stock/stock_hk_comparison_em.py +175 -0
- akshare/stock/stock_hk_famous.py +4 -5
- akshare/stock/stock_hk_fhpx_ths.py +2 -1
- akshare/stock/stock_hk_hot_rank_em.py +1 -0
- akshare/stock/stock_hk_sina.py +84 -36
- akshare/stock/stock_hold_control_cninfo.py +82 -0
- akshare/stock/stock_hold_control_em.py +0 -2
- akshare/stock/stock_hot_rank_em.py +4 -1
- akshare/stock/stock_hot_search_baidu.py +32 -19
- akshare/stock/stock_hot_up_em.py +4 -1
- akshare/stock/stock_hsgt_em.py +155 -0
- akshare/stock/stock_industry.py +1 -0
- akshare/stock/stock_industry_cninfo.py +1 -2
- akshare/stock/stock_info.py +6 -4
- akshare/stock/stock_info_em.py +17 -11
- akshare/stock/stock_intraday_em.py +4 -78
- akshare/stock/stock_intraday_sina.py +2 -2
- akshare/stock/stock_news_cx.py +39 -0
- akshare/stock/stock_profile_cninfo.py +7 -7
- akshare/stock/stock_profile_em.py +302 -0
- akshare/stock/stock_rank_forecast.py +6 -5
- akshare/stock/stock_repurchase_em.py +7 -2
- akshare/stock/stock_share_changes_cninfo.py +7 -5
- akshare/stock/stock_share_hold.py +24 -20
- akshare/stock/stock_stop.py +6 -6
- akshare/stock/stock_summary.py +153 -417
- akshare/stock/stock_us_famous.py +5 -6
- akshare/stock/stock_us_js.py +3 -2
- akshare/stock/stock_us_pink.py +38 -27
- akshare/stock/stock_us_sina.py +7 -3
- akshare/stock/stock_weibo_nlp.py +18 -20
- akshare/stock/stock_xq.py +24 -22
- akshare/stock/stock_zh_a_sina.py +8 -5
- akshare/stock/stock_zh_a_special.py +240 -243
- akshare/stock/stock_zh_a_tick_tx.py +11 -3
- akshare/stock/stock_zh_ah_tx.py +23 -26
- akshare/stock/stock_zh_b_sina.py +2 -2
- akshare/stock/stock_zh_comparison_em.py +250 -0
- akshare/stock/stock_zh_kcb_sina.py +67 -64
- akshare/stock_a/__init__.py +0 -0
- akshare/stock_a/stock_board_concept_name_em.py +170 -0
- akshare/stock_a/stock_individual_fund_flow_rank.py +258 -0
- akshare/stock_a/stock_zh_a_spot.py +212 -0
- akshare/stock_feature/cons.py +1 -0
- akshare/stock_feature/stock_a_indicator.py +9 -54
- akshare/stock_feature/stock_a_pe_and_pb.py +23 -5
- akshare/stock_feature/stock_account_em.py +0 -1
- akshare/stock_feature/stock_all_pb.py +2 -1
- akshare/stock_feature/stock_analyst_em.py +36 -30
- akshare/stock_feature/stock_board_concept_ths.py +328 -0
- akshare/stock_feature/stock_board_industry_ths.py +57 -2
- akshare/stock_feature/stock_buffett_index_lg.py +10 -8
- akshare/stock_feature/stock_classify_sina.py +3 -6
- akshare/stock_feature/stock_comment_em.py +81 -144
- akshare/stock_feature/stock_congestion_lg.py +2 -1
- akshare/stock_feature/stock_cyq_em.py +5 -11
- akshare/stock_feature/stock_disclosure_cninfo.py +6 -6
- akshare/stock_feature/stock_dxsyl_em.py +121 -74
- akshare/stock_feature/stock_ebs_lg.py +5 -4
- akshare/stock_feature/stock_esg_sina.py +29 -7
- akshare/stock_feature/stock_fhps_em.py +2 -1
- akshare/stock_feature/stock_fhps_ths.py +15 -7
- akshare/stock_feature/stock_fund_flow.py +30 -22
- akshare/stock_feature/stock_gddh_em.py +19 -11
- akshare/stock_feature/stock_gdfx_em.py +226 -113
- akshare/stock_feature/stock_gdhs.py +75 -50
- akshare/stock_feature/stock_gdzjc_em.py +21 -10
- akshare/stock_feature/stock_gpzy_em.py +78 -46
- akshare/stock_feature/stock_gxl_lg.py +3 -2
- akshare/stock_feature/stock_hist_em.py +137 -234
- akshare/stock_feature/stock_hist_tx.py +13 -10
- akshare/stock_feature/stock_hk_valuation_baidu.py +20 -8
- akshare/stock_feature/stock_hot_xq.py +4 -6
- akshare/stock_feature/stock_hsgt_em.py +269 -97
- akshare/stock_feature/stock_hsgt_exchange_rate.py +115 -87
- akshare/stock_feature/stock_hsgt_min_em.py +13 -16
- akshare/stock_feature/stock_info.py +7 -80
- akshare/stock_feature/stock_inner_trade_xq.py +38 -31
- akshare/stock_feature/stock_jgdy_em.py +43 -40
- akshare/stock_feature/stock_lhb_em.py +119 -3
- akshare/stock_feature/stock_margin_em.py +0 -1
- akshare/stock_feature/stock_margin_sse.py +0 -2
- akshare/stock_feature/stock_pankou_em.py +71 -35
- akshare/stock_feature/stock_qsjy_em.py +13 -4
- akshare/stock_feature/stock_report_em.py +151 -7
- akshare/stock_feature/stock_research_report_em.py +55 -20
- akshare/stock_feature/stock_sy_em.py +20 -15
- akshare/stock_feature/stock_technology_ths.py +122 -77
- akshare/stock_feature/stock_tfp_em.py +2 -1
- akshare/stock_feature/stock_three_report_em.py +21 -5
- akshare/stock_feature/stock_ttm_lyr.py +18 -9
- akshare/stock_feature/stock_value_em.py +83 -0
- akshare/stock_feature/stock_yjbb_em.py +58 -32
- akshare/stock_feature/stock_yjyg_cninfo.py +6 -2
- akshare/stock_feature/stock_yjyg_em.py +1 -1
- akshare/stock_feature/stock_yzxdr_em.py +24 -22
- akshare/stock_feature/stock_zdhtmx_em.py +20 -6
- akshare/stock_feature/stock_zh_vote_baidu.py +4 -1
- akshare/stock_feature/stock_ztb_em.py +39 -24
- akshare/stock_fundamental/__init__.py +1 -1
- akshare/stock_fundamental/stock_basic_info_xq.py +119 -0
- akshare/stock_fundamental/{stock_finance_hk.py → stock_finance_hk_em.py} +23 -16
- akshare/stock_fundamental/{stock_finance.py → stock_finance_sina.py} +60 -7
- akshare/stock_fundamental/stock_finance_ths.py +524 -57
- akshare/stock_fundamental/stock_finance_us_em.py +268 -0
- akshare/stock_fundamental/stock_gbjg_em.py +80 -0
- akshare/stock_fundamental/stock_hold.py +26 -17
- akshare/stock_fundamental/stock_ipo_declare.py +1 -0
- akshare/stock_fundamental/stock_kcb_detail_sse.py +10 -10
- akshare/stock_fundamental/stock_kcb_sse.py +26 -25
- akshare/stock_fundamental/stock_notice.py +12 -3
- akshare/stock_fundamental/stock_profit_forecast_em.py +31 -13
- akshare/stock_fundamental/stock_profit_forecast_hk_etnet.py +64 -41
- akshare/stock_fundamental/stock_profit_forecast_ths.py +86 -35
- akshare/stock_fundamental/stock_recommend.py +20 -4
- akshare/stock_fundamental/stock_zygc.py +5 -62
- akshare/utils/context.py +43 -0
- akshare/utils/demjson.py +2009 -1338
- akshare/utils/func.py +49 -2
- akshare/utils/multi_decrypt.py +53 -0
- akshare/utils/token_process.py +6 -5
- {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/METADATA +54 -80
- akshare-1.17.99.dist-info/RECORD +409 -0
- {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/WHEEL +1 -1
- {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info/licenses}/LICENSE +1 -1
- tests/test_func.py +3 -5
- akshare/bond/bond_futures.py +0 -50
- akshare/bond/bond_investing.py +0 -139
- akshare/crypto/crypto_hist_investing.py +0 -249
- akshare/fund/fund_announcement.py +0 -56
- akshare/futures/futures_international.py +0 -170
- akshare/futures/futures_news_baidu.py +0 -54
- akshare/futures/inventory_data.py +0 -100
- akshare/futures_derivative/futures_index_price_nh.py +0 -61
- akshare/futures_derivative/futures_index_return_nh.py +0 -47
- akshare/futures_derivative/futures_index_volatility_nh.py +0 -53
- akshare/futures_derivative/futures_other_index_nh.py +0 -145
- akshare/index/index_fear_greed_funddb.py +0 -78
- akshare/index/index_investing.py +0 -232
- akshare/sport/__init__.py +0 -6
- akshare/sport/sport_olympic.py +0 -27
- akshare/stock_feature/stock_wencai.py +0 -104
- akshare/stock_fundamental/stock_mda_ym.py +0 -40
- akshare-1.14.49.dist-info/RECORD +0 -387
- {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/top_level.txt +0 -0
akshare/index/index_sugar.py
CHANGED
|
@@ -5,6 +5,7 @@ Date: 2023/6/19 17:00
|
|
|
5
5
|
Desc: 沐甜科技数据中心-中国食糖指数
|
|
6
6
|
https://www.msweet.com.cn/mtkj/sjzx13/index.html
|
|
7
7
|
"""
|
|
8
|
+
|
|
8
9
|
import requests
|
|
9
10
|
import pandas as pd
|
|
10
11
|
|
|
@@ -93,12 +94,25 @@ def index_outer_quote_sugar_msweet() -> pd.DataFrame:
|
|
|
93
94
|
temp_df = pd.concat(
|
|
94
95
|
[pd.DataFrame(data_json["category"]), pd.DataFrame(data_json["data"])], axis=1
|
|
95
96
|
)
|
|
96
|
-
temp_df.columns = [
|
|
97
|
+
temp_df.columns = [
|
|
98
|
+
"日期",
|
|
99
|
+
"巴西糖进口成本",
|
|
100
|
+
"泰国糖进口利润空间",
|
|
101
|
+
"巴西糖进口利润空间",
|
|
102
|
+
"泰国糖进口成本",
|
|
103
|
+
"日照现货价",
|
|
104
|
+
]
|
|
97
105
|
temp_df["日期"] = temp_df["日期"].str.replace("/", "-")
|
|
98
106
|
temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
|
|
99
|
-
temp_df["巴西糖进口成本"] = pd.to_numeric(
|
|
100
|
-
|
|
101
|
-
|
|
107
|
+
temp_df["巴西糖进口成本"] = pd.to_numeric(
|
|
108
|
+
temp_df["巴西糖进口成本"], errors="coerce"
|
|
109
|
+
)
|
|
110
|
+
temp_df["泰国糖进口利润空间"] = pd.to_numeric(
|
|
111
|
+
temp_df["泰国糖进口利润空间"], errors="coerce"
|
|
112
|
+
)
|
|
113
|
+
temp_df["巴西糖进口利润空间"] = pd.to_numeric(
|
|
114
|
+
temp_df["巴西糖进口利润空间"], errors="coerce"
|
|
115
|
+
)
|
|
102
116
|
temp_df["泰国糖进口成本"] = pd.to_numeric(temp_df["泰国糖进口成本"])
|
|
103
117
|
temp_df["日照现货价"] = pd.to_numeric(temp_df["日照现货价"], errors="coerce")
|
|
104
118
|
return temp_df
|
akshare/index/index_sw.py
CHANGED
|
@@ -95,6 +95,9 @@ def sw_index_second_info() -> pd.DataFrame:
|
|
|
95
95
|
)
|
|
96
96
|
code = [item.get_text() for item in code_raw]
|
|
97
97
|
name = [item.get_text().split("(")[0] for item in name_raw]
|
|
98
|
+
parent_name = [
|
|
99
|
+
item.find("span").get_text().split("(")[0][1:-1] for item in name_raw
|
|
100
|
+
]
|
|
98
101
|
num = [item.get_text().split("(")[1].split(")")[0] for item in name_raw]
|
|
99
102
|
num_1 = [
|
|
100
103
|
item.find_all("span", attrs={"class": "value"})[0].get_text().strip()
|
|
@@ -112,10 +115,11 @@ def sw_index_second_info() -> pd.DataFrame:
|
|
|
112
115
|
item.find_all("span", attrs={"class": "value"})[3].get_text().strip()
|
|
113
116
|
for item in value_raw
|
|
114
117
|
]
|
|
115
|
-
temp_df = pd.DataFrame([code, name, num, num_1, num_2, num_3, num_4]).T
|
|
118
|
+
temp_df = pd.DataFrame([code, name, parent_name, num, num_1, num_2, num_3, num_4]).T
|
|
116
119
|
temp_df.columns = [
|
|
117
120
|
"行业代码",
|
|
118
121
|
"行业名称",
|
|
122
|
+
"上级行业",
|
|
119
123
|
"成份个数",
|
|
120
124
|
"静态市盈率",
|
|
121
125
|
"TTM(滚动)市盈率",
|
|
@@ -153,6 +157,9 @@ def sw_index_third_info() -> pd.DataFrame:
|
|
|
153
157
|
)
|
|
154
158
|
code = [item.get_text() for item in code_raw]
|
|
155
159
|
name = [item.get_text().split("(")[0] for item in name_raw]
|
|
160
|
+
parent_name = [
|
|
161
|
+
item.find("span").get_text().split("(")[0][1:-1] for item in name_raw
|
|
162
|
+
]
|
|
156
163
|
num = [item.get_text().split("(")[1].split(")")[0] for item in name_raw]
|
|
157
164
|
num_1 = [
|
|
158
165
|
item.find_all("span", attrs={"class": "value"})[0].get_text().strip()
|
|
@@ -170,10 +177,11 @@ def sw_index_third_info() -> pd.DataFrame:
|
|
|
170
177
|
item.find_all("span", attrs={"class": "value"})[3].get_text().strip()
|
|
171
178
|
for item in value_raw
|
|
172
179
|
]
|
|
173
|
-
temp_df = pd.DataFrame([code, name, num, num_1, num_2, num_3, num_4]).T
|
|
180
|
+
temp_df = pd.DataFrame([code, name, parent_name, num, num_1, num_2, num_3, num_4]).T
|
|
174
181
|
temp_df.columns = [
|
|
175
182
|
"行业代码",
|
|
176
183
|
"行业名称",
|
|
184
|
+
"上级行业",
|
|
177
185
|
"成份个数",
|
|
178
186
|
"静态市盈率",
|
|
179
187
|
"TTM(滚动)市盈率",
|
akshare/index/index_yw.py
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date:
|
|
4
|
+
Date: 2025/5/3
|
|
5
5
|
Desc: 义乌小商品指数
|
|
6
|
-
|
|
6
|
+
目前可以通过这些接口直接请求到 JSON 数据
|
|
7
|
+
周价格指数:https://apiserver.chinagoods.com/yiwuindex/v1/active/industry/class/history/piweek?gcCode=
|
|
8
|
+
月价格指数:https://apiserver.chinagoods.com/yiwuindex/v1/active/industry/class/history/month?gcCode=
|
|
9
|
+
月景气指数:https://apiserver.chinagoods.com/yiwuindex/v1/active/industry/class/history/bi?gcCode=
|
|
10
|
+
上涨:https://apiserver.chinagoods.com/yiwuindex/v1/active/industry/class/get/rise
|
|
11
|
+
下跌:https://apiserver.chinagoods.com/yiwuindex/v1/active/industry/class/get/drop
|
|
7
12
|
"""
|
|
8
13
|
|
|
9
14
|
import pandas as pd
|
|
10
15
|
import requests
|
|
11
|
-
from bs4 import BeautifulSoup
|
|
12
16
|
|
|
13
17
|
|
|
14
18
|
def index_yw(symbol: str = "月景气指数") -> pd.DataFrame:
|
|
@@ -21,85 +25,58 @@ def index_yw(symbol: str = "月景气指数") -> pd.DataFrame:
|
|
|
21
25
|
:rtype: pandas.DataFrame
|
|
22
26
|
"""
|
|
23
27
|
import urllib3
|
|
24
|
-
|
|
25
|
-
# 禁用InsecureRequestWarning
|
|
26
28
|
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
|
|
27
|
-
|
|
28
|
-
"周价格指数": 1,
|
|
29
|
-
"月价格指数": 3,
|
|
30
|
-
"月景气指数": 5,
|
|
31
|
-
}
|
|
32
|
-
url = "https://www.ywindex.com/Home/Product/index/"
|
|
33
|
-
res = requests.get(url, verify=False)
|
|
34
|
-
soup = BeautifulSoup(res.text, features="lxml")
|
|
35
|
-
table_name = (
|
|
36
|
-
soup.find_all(attrs={"class": "tablex"})[name_num_dict[symbol]]
|
|
37
|
-
.get_text()
|
|
38
|
-
.split("\n\n\n\n\n")[2]
|
|
39
|
-
.split("\n")
|
|
40
|
-
)
|
|
41
|
-
table_content = (
|
|
42
|
-
soup.find_all(attrs={"class": "tablex"})[name_num_dict[symbol]]
|
|
43
|
-
.get_text()
|
|
44
|
-
.split("\n\n\n\n\n")[3]
|
|
45
|
-
.split("\n\n")
|
|
46
|
-
)
|
|
29
|
+
|
|
47
30
|
if symbol == "月景气指数":
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
return table_df
|
|
61
|
-
elif symbol == "周价格指数":
|
|
62
|
-
table_df = pd.DataFrame([item.split("\n") for item in table_content]).iloc[
|
|
63
|
-
:, :6
|
|
64
|
-
]
|
|
65
|
-
table_df.columns = table_name
|
|
66
|
-
table_df["期数"] = pd.to_datetime(table_df["期数"], errors="coerce").dt.date
|
|
67
|
-
table_df["价格指数"] = pd.to_numeric(table_df["价格指数"], errors="coerce")
|
|
68
|
-
table_df["场内价格指数"] = pd.to_numeric(
|
|
69
|
-
table_df["场内价格指数"], errors="coerce"
|
|
70
|
-
)
|
|
71
|
-
table_df["网上价格指数"] = pd.to_numeric(
|
|
72
|
-
table_df["网上价格指数"], errors="coerce"
|
|
73
|
-
)
|
|
74
|
-
table_df["订单价格指数"] = pd.to_numeric(
|
|
75
|
-
table_df["订单价格指数"], errors="coerce"
|
|
76
|
-
)
|
|
77
|
-
table_df["出口价格指数"] = pd.to_numeric(
|
|
78
|
-
table_df["出口价格指数"], errors="coerce"
|
|
31
|
+
url = "https://apiserver.chinagoods.com/yiwuindex/v1/active/industry/class/history/bi?gcCode="
|
|
32
|
+
r = requests.get(url, verify=False)
|
|
33
|
+
data_json = r.json()
|
|
34
|
+
temp_df = pd.DataFrame(data_json["data"])
|
|
35
|
+
temp_df = temp_df[["indextimeno", "totalindex", "scopeindex", "benifitindex", "confidentindex"]]
|
|
36
|
+
temp_df.columns = ["期数", "景气指数", "规模指数", "效益指数", "市场信心指数"]
|
|
37
|
+
temp_df["期数"] = pd.to_datetime(temp_df["期数"], errors="coerce").dt.date
|
|
38
|
+
temp_df["景气指数"] = pd.to_numeric(temp_df["景气指数"], errors="coerce")
|
|
39
|
+
temp_df["规模指数"] = pd.to_numeric(temp_df["规模指数"], errors="coerce")
|
|
40
|
+
temp_df["效益指数"] = pd.to_numeric(temp_df["效益指数"], errors="coerce")
|
|
41
|
+
temp_df["市场信心指数"] = pd.to_numeric(
|
|
42
|
+
temp_df["市场信心指数"], errors="coerce"
|
|
79
43
|
)
|
|
80
|
-
|
|
81
|
-
return
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
44
|
+
temp_df.sort_values(["期数"], inplace=True, ignore_index=True)
|
|
45
|
+
return temp_df
|
|
46
|
+
else:
|
|
47
|
+
symbol_map = {
|
|
48
|
+
"周价格指数": "piweek",
|
|
49
|
+
"月价格指数": "month"
|
|
50
|
+
}
|
|
51
|
+
url = f"https://apiserver.chinagoods.com/yiwuindex/v1/active/industry/class/history/{symbol_map[symbol]}?gcCode="
|
|
52
|
+
r = requests.get(url, verify=False)
|
|
53
|
+
data_json = r.json()
|
|
54
|
+
columns_name = {
|
|
55
|
+
"indextimeno": "期数",
|
|
56
|
+
"totalpriceindex": "价格指数",
|
|
57
|
+
"stockdealpriceindex": "场内价格指数",
|
|
58
|
+
"netdealpriceindex": "网上价格指数",
|
|
59
|
+
"orderdealpriceindex": "订单价格指数",
|
|
60
|
+
"outdealpriceindex": "出口价格指数",
|
|
61
|
+
}
|
|
62
|
+
temp_df = pd.DataFrame(data_json["data"])
|
|
63
|
+
temp_df.columns = [columns_name[name] for name in temp_df.columns]
|
|
64
|
+
temp_df["期数"] = pd.to_datetime(temp_df["期数"], errors="coerce").dt.date
|
|
65
|
+
temp_df["价格指数"] = pd.to_numeric(temp_df["价格指数"], errors="coerce")
|
|
66
|
+
temp_df["场内价格指数"] = pd.to_numeric(
|
|
67
|
+
temp_df["场内价格指数"], errors="coerce"
|
|
91
68
|
)
|
|
92
|
-
|
|
93
|
-
|
|
69
|
+
temp_df["网上价格指数"] = pd.to_numeric(
|
|
70
|
+
temp_df["网上价格指数"], errors="coerce"
|
|
94
71
|
)
|
|
95
|
-
|
|
96
|
-
|
|
72
|
+
temp_df["订单价格指数"] = pd.to_numeric(
|
|
73
|
+
temp_df["订单价格指数"], errors="coerce"
|
|
97
74
|
)
|
|
98
|
-
|
|
99
|
-
|
|
75
|
+
temp_df["出口价格指数"] = pd.to_numeric(
|
|
76
|
+
temp_df["出口价格指数"], errors="coerce"
|
|
100
77
|
)
|
|
101
|
-
|
|
102
|
-
return
|
|
78
|
+
temp_df.sort_values(by=["期数"], inplace=True, ignore_index=True)
|
|
79
|
+
return temp_df
|
|
103
80
|
|
|
104
81
|
|
|
105
82
|
if __name__ == "__main__":
|
|
@@ -111,3 +88,4 @@ if __name__ == "__main__":
|
|
|
111
88
|
|
|
112
89
|
index_yw_df = index_yw(symbol="月景气指数")
|
|
113
90
|
print(index_yw_df)
|
|
91
|
+
|
akshare/index/index_zh_em.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date:
|
|
4
|
+
Date: 2025/3/11 17:00
|
|
5
5
|
Desc: 东方财富网-指数行情数据
|
|
6
6
|
"""
|
|
7
7
|
|
|
@@ -10,6 +10,8 @@ from functools import lru_cache
|
|
|
10
10
|
import pandas as pd
|
|
11
11
|
import requests
|
|
12
12
|
|
|
13
|
+
from akshare.utils.func import fetch_paginated_data
|
|
14
|
+
|
|
13
15
|
|
|
14
16
|
@lru_cache()
|
|
15
17
|
def index_code_id_map_em() -> dict:
|
|
@@ -22,69 +24,18 @@ def index_code_id_map_em() -> dict:
|
|
|
22
24
|
url = "https://80.push2.eastmoney.com/api/qt/clist/get"
|
|
23
25
|
params = {
|
|
24
26
|
"pn": "1",
|
|
25
|
-
"pz": "
|
|
26
|
-
"po": "1",
|
|
27
|
-
"np": "1",
|
|
28
|
-
"ut": "bd1d9ddb04089700cf9c27f6f7426281",
|
|
29
|
-
"fltt": "2",
|
|
30
|
-
"invt": "2",
|
|
31
|
-
"fid": "f3",
|
|
32
|
-
"fs": "m:1 t:2,m:1 t:23",
|
|
33
|
-
"fields": "f12",
|
|
34
|
-
"_": "1623833739532",
|
|
35
|
-
}
|
|
36
|
-
r = requests.get(url, params=params)
|
|
37
|
-
data_json = r.json()
|
|
38
|
-
if not data_json["data"]["diff"]:
|
|
39
|
-
return dict()
|
|
40
|
-
temp_df = pd.DataFrame(data_json["data"]["diff"])
|
|
41
|
-
temp_df["market_id"] = 1
|
|
42
|
-
temp_df.columns = ["sh_code", "sh_id"]
|
|
43
|
-
code_id_dict = dict(zip(temp_df["sh_code"], temp_df["sh_id"]))
|
|
44
|
-
params = {
|
|
45
|
-
"pn": "1",
|
|
46
|
-
"pz": "10000",
|
|
47
|
-
"po": "1",
|
|
48
|
-
"np": "1",
|
|
49
|
-
"ut": "bd1d9ddb04089700cf9c27f6f7426281",
|
|
50
|
-
"fltt": "2",
|
|
51
|
-
"invt": "2",
|
|
52
|
-
"fid": "f3",
|
|
53
|
-
"fs": "m:0 t:6,m:0 t:80",
|
|
54
|
-
"fields": "f12",
|
|
55
|
-
"_": "1623833739532",
|
|
56
|
-
}
|
|
57
|
-
r = requests.get(url, params=params)
|
|
58
|
-
data_json = r.json()
|
|
59
|
-
if not data_json["data"]["diff"]:
|
|
60
|
-
return dict()
|
|
61
|
-
temp_df_sz = pd.DataFrame(data_json["data"]["diff"])
|
|
62
|
-
temp_df_sz["sz_id"] = 0
|
|
63
|
-
code_id_dict.update(dict(zip(temp_df_sz["f12"], temp_df_sz["sz_id"])))
|
|
64
|
-
params = {
|
|
65
|
-
"pn": "1",
|
|
66
|
-
"pz": "10000",
|
|
27
|
+
"pz": "100",
|
|
67
28
|
"po": "1",
|
|
68
29
|
"np": "1",
|
|
69
30
|
"ut": "bd1d9ddb04089700cf9c27f6f7426281",
|
|
70
31
|
"fltt": "2",
|
|
71
32
|
"invt": "2",
|
|
72
33
|
"fid": "f3",
|
|
73
|
-
"fs": "m:0 t:
|
|
74
|
-
"fields": "f12",
|
|
75
|
-
"_": "1623833739532",
|
|
76
|
-
}
|
|
77
|
-
r = requests.get(url, params=params)
|
|
78
|
-
data_json = r.json()
|
|
79
|
-
if not data_json["data"]["diff"]:
|
|
80
|
-
return dict()
|
|
81
|
-
temp_df_sz = pd.DataFrame(data_json["data"]["diff"])
|
|
82
|
-
temp_df_sz["bj_id"] = 0
|
|
83
|
-
code_id_dict.update(dict(zip(temp_df_sz["f12"], temp_df_sz["bj_id"])))
|
|
84
|
-
code_id_dict = {
|
|
85
|
-
key: value - 1 if value == 1 else value + 1
|
|
86
|
-
for key, value in code_id_dict.items()
|
|
34
|
+
"fs": "b:MK0010,m:1+t:1,m:0 t:5,m:1+s:3,m:0+t:5,m:2",
|
|
35
|
+
"fields": "f3,f12,f13",
|
|
87
36
|
}
|
|
37
|
+
temp_df = fetch_paginated_data(url, params)
|
|
38
|
+
code_id_dict = dict(zip(temp_df["f12"], temp_df["f13"]))
|
|
88
39
|
return code_id_dict
|
|
89
40
|
|
|
90
41
|
|
|
@@ -121,7 +72,6 @@ def index_zh_a_hist(
|
|
|
121
72
|
"fqt": "0",
|
|
122
73
|
"beg": "0",
|
|
123
74
|
"end": "20500000",
|
|
124
|
-
"_": "1623766962675",
|
|
125
75
|
}
|
|
126
76
|
except KeyError:
|
|
127
77
|
params = {
|
|
@@ -133,7 +83,6 @@ def index_zh_a_hist(
|
|
|
133
83
|
"fqt": "0",
|
|
134
84
|
"beg": "0",
|
|
135
85
|
"end": "20500000",
|
|
136
|
-
"_": "1623766962675",
|
|
137
86
|
}
|
|
138
87
|
r = requests.get(url, params=params)
|
|
139
88
|
data_json = r.json()
|
|
@@ -147,7 +96,6 @@ def index_zh_a_hist(
|
|
|
147
96
|
"fqt": "0",
|
|
148
97
|
"beg": "0",
|
|
149
98
|
"end": "20500000",
|
|
150
|
-
"_": "1623766962675",
|
|
151
99
|
}
|
|
152
100
|
r = requests.get(url, params=params)
|
|
153
101
|
data_json = r.json()
|
|
@@ -161,7 +109,6 @@ def index_zh_a_hist(
|
|
|
161
109
|
"fqt": "0",
|
|
162
110
|
"beg": "0",
|
|
163
111
|
"end": "20500000",
|
|
164
|
-
"_": "1623766962675",
|
|
165
112
|
}
|
|
166
113
|
r = requests.get(url, params=params)
|
|
167
114
|
data_json = r.json()
|
|
@@ -175,7 +122,6 @@ def index_zh_a_hist(
|
|
|
175
122
|
"fqt": "0",
|
|
176
123
|
"beg": "0",
|
|
177
124
|
"end": "20500000",
|
|
178
|
-
"_": "1623766962675",
|
|
179
125
|
}
|
|
180
126
|
r = requests.get(url, params=params)
|
|
181
127
|
data_json = r.json()
|
|
@@ -194,7 +140,6 @@ def index_zh_a_hist(
|
|
|
194
140
|
"fqt": "0",
|
|
195
141
|
"beg": "0",
|
|
196
142
|
"end": "20500000",
|
|
197
|
-
"_": "1623766962675",
|
|
198
143
|
}
|
|
199
144
|
r = requests.get(url, params=params)
|
|
200
145
|
data_json = r.json()
|
|
@@ -257,21 +202,17 @@ def index_zh_a_hist_min_em(
|
|
|
257
202
|
params = {
|
|
258
203
|
"fields1": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13",
|
|
259
204
|
"fields2": "f51,f52,f53,f54,f55,f56,f57,f58",
|
|
260
|
-
"ut": "fa5fd1943c7b386f172d6893dbfba10b",
|
|
261
205
|
"iscr": "0",
|
|
262
206
|
"ndays": "5",
|
|
263
207
|
"secid": f"{code_id_dict[symbol]}.{symbol}",
|
|
264
|
-
"_": "1623766962675",
|
|
265
208
|
}
|
|
266
209
|
except KeyError:
|
|
267
210
|
params = {
|
|
268
211
|
"fields1": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13",
|
|
269
212
|
"fields2": "f51,f52,f53,f54,f55,f56,f57,f58",
|
|
270
|
-
"ut": "fa5fd1943c7b386f172d6893dbfba10b",
|
|
271
213
|
"iscr": "0",
|
|
272
214
|
"ndays": "5",
|
|
273
215
|
"secid": f"1.{symbol}",
|
|
274
|
-
"_": "1623766962675",
|
|
275
216
|
}
|
|
276
217
|
r = requests.get(url, params=params)
|
|
277
218
|
data_json = r.json()
|
|
@@ -279,11 +220,9 @@ def index_zh_a_hist_min_em(
|
|
|
279
220
|
params = {
|
|
280
221
|
"fields1": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13",
|
|
281
222
|
"fields2": "f51,f52,f53,f54,f55,f56,f57,f58",
|
|
282
|
-
"ut": "fa5fd1943c7b386f172d6893dbfba10b",
|
|
283
223
|
"iscr": "0",
|
|
284
224
|
"ndays": "5",
|
|
285
225
|
"secid": f"0.{symbol}",
|
|
286
|
-
"_": "1623766962675",
|
|
287
226
|
}
|
|
288
227
|
r = requests.get(url, params=params)
|
|
289
228
|
data_json = r.json()
|
|
@@ -291,11 +230,9 @@ def index_zh_a_hist_min_em(
|
|
|
291
230
|
params = {
|
|
292
231
|
"fields1": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13",
|
|
293
232
|
"fields2": "f51,f52,f53,f54,f55,f56,f57,f58",
|
|
294
|
-
"ut": "fa5fd1943c7b386f172d6893dbfba10b",
|
|
295
233
|
"iscr": "0",
|
|
296
234
|
"ndays": "5",
|
|
297
235
|
"secid": f"47.{symbol}",
|
|
298
|
-
"_": "1623766962675",
|
|
299
236
|
}
|
|
300
237
|
r = requests.get(url, params=params)
|
|
301
238
|
data_json = r.json()
|
|
@@ -310,7 +247,7 @@ def index_zh_a_hist_min_em(
|
|
|
310
247
|
"最低",
|
|
311
248
|
"成交量",
|
|
312
249
|
"成交额",
|
|
313
|
-
"
|
|
250
|
+
"均价",
|
|
314
251
|
]
|
|
315
252
|
temp_df.index = pd.to_datetime(temp_df["时间"], errors="coerce")
|
|
316
253
|
temp_df = temp_df[start_date:end_date]
|
|
@@ -321,11 +258,11 @@ def index_zh_a_hist_min_em(
|
|
|
321
258
|
temp_df["最低"] = pd.to_numeric(temp_df["最低"], errors="coerce")
|
|
322
259
|
temp_df["成交量"] = pd.to_numeric(temp_df["成交量"], errors="coerce")
|
|
323
260
|
temp_df["成交额"] = pd.to_numeric(temp_df["成交额"], errors="coerce")
|
|
324
|
-
temp_df["
|
|
261
|
+
temp_df["均价"] = pd.to_numeric(temp_df["均价"], errors="coerce")
|
|
325
262
|
temp_df["时间"] = pd.to_datetime(temp_df["时间"]).astype(str)
|
|
326
263
|
return temp_df
|
|
327
264
|
else:
|
|
328
|
-
url = "
|
|
265
|
+
url = "https://push2his.eastmoney.com/api/qt/stock/kline/get"
|
|
329
266
|
try:
|
|
330
267
|
params = {
|
|
331
268
|
"secid": f"{code_id_dict[symbol]}.{symbol}",
|
|
@@ -336,7 +273,6 @@ def index_zh_a_hist_min_em(
|
|
|
336
273
|
"fqt": "1",
|
|
337
274
|
"beg": "0",
|
|
338
275
|
"end": "20500000",
|
|
339
|
-
"_": "1630930917857",
|
|
340
276
|
}
|
|
341
277
|
except: # noqa: E722
|
|
342
278
|
params = {
|
|
@@ -348,7 +284,6 @@ def index_zh_a_hist_min_em(
|
|
|
348
284
|
"fqt": "1",
|
|
349
285
|
"beg": "0",
|
|
350
286
|
"end": "20500000",
|
|
351
|
-
"_": "1630930917857",
|
|
352
287
|
}
|
|
353
288
|
r = requests.get(url, params=params)
|
|
354
289
|
data_json = r.json()
|
|
@@ -362,7 +297,6 @@ def index_zh_a_hist_min_em(
|
|
|
362
297
|
"fqt": "1",
|
|
363
298
|
"beg": "0",
|
|
364
299
|
"end": "20500000",
|
|
365
|
-
"_": "1630930917857",
|
|
366
300
|
}
|
|
367
301
|
r = requests.get(url, params=params)
|
|
368
302
|
data_json = r.json()
|
|
@@ -376,7 +310,6 @@ def index_zh_a_hist_min_em(
|
|
|
376
310
|
"fqt": "1",
|
|
377
311
|
"beg": "0",
|
|
378
312
|
"end": "20500000",
|
|
379
|
-
"_": "1630930917857",
|
|
380
313
|
}
|
|
381
314
|
r = requests.get(url, params=params)
|
|
382
315
|
data_json = r.json()
|
|
@@ -430,7 +363,7 @@ def index_zh_a_hist_min_em(
|
|
|
430
363
|
|
|
431
364
|
if __name__ == "__main__":
|
|
432
365
|
index_zh_a_hist_df = index_zh_a_hist(
|
|
433
|
-
symbol="
|
|
366
|
+
symbol="932000",
|
|
434
367
|
period="daily",
|
|
435
368
|
start_date="19700101",
|
|
436
369
|
end_date="22220101",
|
|
@@ -438,9 +371,9 @@ if __name__ == "__main__":
|
|
|
438
371
|
print(index_zh_a_hist_df)
|
|
439
372
|
|
|
440
373
|
index_zh_a_hist_min_em_df = index_zh_a_hist_min_em(
|
|
441
|
-
symbol="
|
|
374
|
+
symbol="000003",
|
|
442
375
|
period="1",
|
|
443
|
-
start_date="
|
|
444
|
-
end_date="
|
|
376
|
+
start_date="2025-03-17 09:30:00",
|
|
377
|
+
end_date="2025-03-17 19:00:00",
|
|
445
378
|
)
|
|
446
379
|
print(index_zh_a_hist_min_em_df)
|
akshare/movie/jm.js
CHANGED
akshare/news/__init__.py
CHANGED