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/utils/func.py
CHANGED
|
@@ -1,12 +1,59 @@
|
|
|
1
1
|
# !/usr/bin/env python
|
|
2
2
|
"""
|
|
3
|
-
Date:
|
|
3
|
+
Date: 2025/3/10 18:00
|
|
4
4
|
Desc: 通用帮助函数
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
import math
|
|
8
|
+
from typing import List, Dict
|
|
8
9
|
|
|
9
10
|
import pandas as pd
|
|
11
|
+
import requests
|
|
12
|
+
|
|
13
|
+
from akshare.utils.tqdm import get_tqdm
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def fetch_paginated_data(url: str, base_params: Dict, timeout: int = 15):
|
|
17
|
+
"""
|
|
18
|
+
东方财富-分页获取数据并合并结果
|
|
19
|
+
https://quote.eastmoney.com/f1.html?newcode=0.000001
|
|
20
|
+
:param url: 股票代码
|
|
21
|
+
:type url: str
|
|
22
|
+
:param base_params: 基础请求参数
|
|
23
|
+
:type base_params: dict
|
|
24
|
+
:param timeout: 请求超时时间
|
|
25
|
+
:type timeout: str
|
|
26
|
+
:return: 合并后的数据
|
|
27
|
+
:rtype: pandas.DataFrame
|
|
28
|
+
"""
|
|
29
|
+
# 复制参数以避免修改原始参数
|
|
30
|
+
params = base_params.copy()
|
|
31
|
+
# 获取第一页数据,用于确定分页信息
|
|
32
|
+
r = requests.get(url, params=params, timeout=timeout)
|
|
33
|
+
data_json = r.json()
|
|
34
|
+
# 计算分页信息
|
|
35
|
+
per_page_num = len(data_json["data"]["diff"])
|
|
36
|
+
total_page = math.ceil(data_json["data"]["total"] / per_page_num)
|
|
37
|
+
# 存储所有页面数据
|
|
38
|
+
temp_list = []
|
|
39
|
+
# 添加第一页数据
|
|
40
|
+
temp_list.append(pd.DataFrame(data_json["data"]["diff"]))
|
|
41
|
+
# 获取进度条
|
|
42
|
+
tqdm = get_tqdm()
|
|
43
|
+
# 获取剩余页面数据
|
|
44
|
+
for page in tqdm(range(2, total_page + 1), leave=False):
|
|
45
|
+
params.update({"pn": page})
|
|
46
|
+
r = requests.get(url, params=params, timeout=timeout)
|
|
47
|
+
data_json = r.json()
|
|
48
|
+
inner_temp_df = pd.DataFrame(data_json["data"]["diff"])
|
|
49
|
+
temp_list.append(inner_temp_df)
|
|
50
|
+
# 合并所有数据
|
|
51
|
+
temp_df = pd.concat(temp_list, ignore_index=True)
|
|
52
|
+
temp_df["f3"] = pd.to_numeric(temp_df["f3"], errors="coerce")
|
|
53
|
+
temp_df.sort_values(by=["f3"], ascending=False, inplace=True, ignore_index=True)
|
|
54
|
+
temp_df.reset_index(inplace=True)
|
|
55
|
+
temp_df["index"] = temp_df["index"].astype(int) + 1
|
|
56
|
+
return temp_df
|
|
10
57
|
|
|
11
58
|
|
|
12
59
|
def set_df_columns(df: pd.DataFrame, cols: List[str]) -> pd.DataFrame:
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"""
|
|
2
|
+
利用多进行执行 js 代码方案
|
|
3
|
+
|
|
4
|
+
1. 未能解决 gevent 调用问题
|
|
5
|
+
2. 导致 js 代码执行缓慢
|
|
6
|
+
3. 该方案废弃,这里仅作参考
|
|
7
|
+
|
|
8
|
+
同时发现 gevent 里面无法调用异步的接口
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
import concurrent.futures
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# 定义在模块级别的函数
|
|
15
|
+
def js_executor_function(js_code_str, method, args):
|
|
16
|
+
"""在新进程中执行 JavaScript 代码的函数"""
|
|
17
|
+
from py_mini_racer import MiniRacer
|
|
18
|
+
|
|
19
|
+
js_code = MiniRacer()
|
|
20
|
+
js_code.eval(js_code_str)
|
|
21
|
+
|
|
22
|
+
if method == "call":
|
|
23
|
+
fn_name = args[0]
|
|
24
|
+
fn_args = args[1:]
|
|
25
|
+
return js_code.call(fn_name, *fn_args)
|
|
26
|
+
elif method == "eval":
|
|
27
|
+
return js_code.eval(args[0])
|
|
28
|
+
else:
|
|
29
|
+
raise ValueError(f"不支持的方法: {method}")
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def execute_js_in_executor(js_code_str, method, *args, timeout=30):
|
|
33
|
+
"""
|
|
34
|
+
使用 ProcessPoolExecutor 在独立进程中执行 JavaScript
|
|
35
|
+
|
|
36
|
+
参数:
|
|
37
|
+
js_code_str: JavaScript 代码字符串
|
|
38
|
+
method: 'call' 或 'eval'
|
|
39
|
+
args: 如果 method 是 'call',第一个参数是函数名,后续是函数参数
|
|
40
|
+
如果 method 是 'eval',只需提供一个参数:要评估的代码
|
|
41
|
+
timeout: 超时时间(秒)
|
|
42
|
+
|
|
43
|
+
返回:
|
|
44
|
+
执行结果
|
|
45
|
+
"""
|
|
46
|
+
with concurrent.futures.ProcessPoolExecutor(max_workers=1) as executor:
|
|
47
|
+
future = executor.submit(js_executor_function, js_code_str, method, args)
|
|
48
|
+
try:
|
|
49
|
+
return future.result(timeout=timeout)
|
|
50
|
+
except concurrent.futures.TimeoutError:
|
|
51
|
+
# 清理资源并抛出超时异常
|
|
52
|
+
executor.shutdown(wait=False)
|
|
53
|
+
raise TimeoutError("JavaScript 执行超时")
|
akshare/utils/token_process.py
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
Date: 2020/2/13 21:22
|
|
5
5
|
Desc: 存储和读取 Token 文件
|
|
6
6
|
"""
|
|
7
|
+
|
|
7
8
|
import os
|
|
8
9
|
|
|
9
10
|
import pandas as pd
|
|
@@ -12,22 +13,22 @@ from akshare.pro import cons
|
|
|
12
13
|
|
|
13
14
|
|
|
14
15
|
def set_token(token):
|
|
15
|
-
df = pd.DataFrame([token], columns=[
|
|
16
|
-
user_home = os.path.expanduser(
|
|
16
|
+
df = pd.DataFrame([token], columns=["token"])
|
|
17
|
+
user_home = os.path.expanduser("~")
|
|
17
18
|
fp = os.path.join(user_home, cons.TOKEN_F_P)
|
|
18
19
|
df.to_csv(fp, index=False)
|
|
19
20
|
|
|
20
21
|
|
|
21
22
|
def get_token():
|
|
22
|
-
user_home = os.path.expanduser(
|
|
23
|
+
user_home = os.path.expanduser("~")
|
|
23
24
|
fp = os.path.join(user_home, cons.TOKEN_F_P)
|
|
24
25
|
if os.path.exists(fp):
|
|
25
26
|
df = pd.read_csv(fp)
|
|
26
|
-
return str(df.iloc[0][
|
|
27
|
+
return str(df.iloc[0]["token"])
|
|
27
28
|
else:
|
|
28
29
|
print(cons.TOKEN_ERR_MSG)
|
|
29
30
|
return
|
|
30
31
|
|
|
31
32
|
|
|
32
|
-
if __name__ ==
|
|
33
|
+
if __name__ == "__main__":
|
|
33
34
|
pass
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: akshare
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.17.99
|
|
4
4
|
Summary: AKShare is an elegant and simple financial data interface library for Python, built for human beings!
|
|
5
5
|
Home-page: https://github.com/akfamily/akshare
|
|
6
6
|
Author: AKFamily
|
|
@@ -12,44 +12,61 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.10
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.11
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
15
17
|
Classifier: License :: OSI Approved :: MIT License
|
|
16
18
|
Classifier: Operating System :: OS Independent
|
|
17
19
|
Requires-Python: >=3.8
|
|
18
20
|
Description-Content-Type: text/markdown
|
|
19
21
|
License-File: LICENSE
|
|
20
|
-
Requires-Dist:
|
|
21
|
-
Requires-Dist:
|
|
22
|
-
Requires-Dist:
|
|
23
|
-
Requires-Dist:
|
|
24
|
-
Requires-Dist:
|
|
25
|
-
Requires-Dist:
|
|
26
|
-
Requires-Dist:
|
|
27
|
-
Requires-Dist:
|
|
28
|
-
Requires-Dist:
|
|
29
|
-
Requires-Dist:
|
|
30
|
-
Requires-Dist:
|
|
31
|
-
Requires-Dist:
|
|
32
|
-
Requires-Dist:
|
|
22
|
+
Requires-Dist: aiohttp>=3.11.13
|
|
23
|
+
Requires-Dist: beautifulsoup4>=4.9.1
|
|
24
|
+
Requires-Dist: lxml>=4.2.1
|
|
25
|
+
Requires-Dist: pandas>=0.25
|
|
26
|
+
Requires-Dist: requests>=2.22.0
|
|
27
|
+
Requires-Dist: curl_cffi>=0.13.0
|
|
28
|
+
Requires-Dist: html5lib>=1.0.1
|
|
29
|
+
Requires-Dist: xlrd>=1.2.0
|
|
30
|
+
Requires-Dist: urllib3>=1.25.8
|
|
31
|
+
Requires-Dist: tqdm>=4.43.0
|
|
32
|
+
Requires-Dist: openpyxl>=3.0.3
|
|
33
|
+
Requires-Dist: jsonpath>=0.82
|
|
34
|
+
Requires-Dist: tabulate>=0.8.6
|
|
35
|
+
Requires-Dist: decorator>=4.4.2
|
|
36
|
+
Requires-Dist: nest_asyncio>=1.6.0
|
|
37
|
+
Requires-Dist: mini-racer>=0.12.4; platform_system != "Linux"
|
|
38
|
+
Requires-Dist: py-mini-racer>=0.6.0; platform_system == "Linux"
|
|
39
|
+
Requires-Dist: akracer>=0.0.13; platform_system == "Linux"
|
|
33
40
|
Provides-Extra: full
|
|
34
|
-
Requires-Dist: akqmt
|
|
41
|
+
Requires-Dist: akqmt; extra == "full"
|
|
35
42
|
Provides-Extra: qmt
|
|
36
|
-
Requires-Dist: akqmt
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
Requires-Dist: akqmt; extra == "qmt"
|
|
44
|
+
Dynamic: author
|
|
45
|
+
Dynamic: author-email
|
|
46
|
+
Dynamic: classifier
|
|
47
|
+
Dynamic: description
|
|
48
|
+
Dynamic: description-content-type
|
|
49
|
+
Dynamic: home-page
|
|
50
|
+
Dynamic: keywords
|
|
51
|
+
Dynamic: license
|
|
52
|
+
Dynamic: license-file
|
|
53
|
+
Dynamic: provides-extra
|
|
54
|
+
Dynamic: requires-dist
|
|
55
|
+
Dynamic: requires-python
|
|
56
|
+
Dynamic: summary
|
|
57
|
+
|
|
58
|
+
**资源分享**:对于想了解更多财经数据与量化投研的小伙伴,推荐一个专注于财经数据和量化研究的知识社区。
|
|
59
|
+
该社区提供相关文档和视频学习资源,汇集了各类财经数据源和量化投研工具的使用经验。
|
|
60
|
+
有兴趣深入学习的朋友可点此[了解更多](https://t.zsxq.com/ZCxUG),也推荐大家关注微信公众号【数据科学实战】。
|
|
61
|
+
|
|
62
|
+
**工具推荐**:期魔方是一款本地化期货量化分析工具,适合数据分析爱好者使用。无需复杂部署,支持数据分析和机器学习功能,研究功能免费开放。
|
|
63
|
+
如需了解更多信息可访问[期魔方](https://qmfquant.com/)。
|
|
47
64
|
|
|
48
65
|

|
|
49
66
|
|
|
50
67
|
[](https://pypi.org/project/akshare/)
|
|
51
68
|
[](https://pypi.org/project/akshare/)
|
|
52
|
-
[](https://pepy.tech/
|
|
69
|
+
[](https://pepy.tech/projects/akshare)
|
|
53
70
|
[](https://akshare.readthedocs.io/?badge=latest)
|
|
54
71
|
[](https://github.com/astral-sh/ruff)
|
|
55
72
|
[](https://github.com/akfamily/akshare)
|
|
@@ -62,7 +79,7 @@ Requires-Dist: akqmt ; extra == 'qmt'
|
|
|
62
79
|
|
|
63
80
|
## Overview
|
|
64
81
|
|
|
65
|
-
[AKShare](https://github.com/akfamily/akshare) requires Python(64 bit) 3.
|
|
82
|
+
[AKShare](https://github.com/akfamily/akshare) requires Python(64 bit) 3.9 or higher and
|
|
66
83
|
aims to simplify the process of fetching financial data.
|
|
67
84
|
|
|
68
85
|
**Write less, get more!**
|
|
@@ -159,21 +176,6 @@ Output:
|
|
|
159
176
|
|
|
160
177
|

|
|
161
178
|
|
|
162
|
-
## Communication
|
|
163
|
-
|
|
164
|
-
Welcome to join the **数据科学实战** knowledge planet to learn more about quantitative investment,
|
|
165
|
-
please visit [数据科学实战](https://akshare.akfamily.xyz/learn.html) for more information:
|
|
166
|
-
|
|
167
|
-
<div>
|
|
168
|
-
<img alt="data science" src="https://jfds-1252952517.cos.ap-chengdu.myqcloud.com/akshare/readme/qrcode/data_scientist.png">
|
|
169
|
-
</div>
|
|
170
|
-
|
|
171
|
-
Pay attention to **数据科学实战** WeChat Official Accounts to get the [AKShare](https://github.com/akfamily/akshare) updated info:
|
|
172
|
-
|
|
173
|
-
<div>
|
|
174
|
-
<img alt="ds" src="https://github.com/akfamily/akshare/blob/main/assets/images/ds.png">
|
|
175
|
-
</div>
|
|
176
|
-
|
|
177
179
|
## Features
|
|
178
180
|
|
|
179
181
|
- **Easy of use**: Just one line code to fetch the data;
|
|
@@ -234,9 +236,9 @@ Please use this **bibtex** if you want to cite this repository in your publicati
|
|
|
234
236
|
|
|
235
237
|
```markdown
|
|
236
238
|
@misc{akshare,
|
|
237
|
-
author = {Albert King},
|
|
239
|
+
author = {Albert King and Yaojie Zhang},
|
|
238
240
|
title = {AKShare},
|
|
239
|
-
year = {
|
|
241
|
+
year = {2022},
|
|
240
242
|
publisher = {GitHub},
|
|
241
243
|
journal = {GitHub repository},
|
|
242
244
|
howpublished = {\url{https://github.com/akfamily/akshare}},
|
|
@@ -249,26 +251,22 @@ Special thanks [FuShare](https://github.com/LowinLi/fushare) for the opportunity
|
|
|
249
251
|
|
|
250
252
|
Special thanks [TuShare](https://github.com/waditu/tushare) for the opportunity of learning from the project;
|
|
251
253
|
|
|
252
|
-
Thanks for the data provided by [
|
|
254
|
+
Thanks for the data provided by [东方财富网站](http://data.eastmoney.com);
|
|
253
255
|
|
|
254
|
-
Thanks for the data provided by [
|
|
256
|
+
Thanks for the data provided by [新浪财经网站](https://finance.sina.com.cn);
|
|
257
|
+
|
|
258
|
+
Thanks for the data provided by [金十数据网站](https://www.jin10.com/);
|
|
259
|
+
|
|
260
|
+
Thanks for the data provided by [生意社网站](http://www.100ppi.com/);
|
|
255
261
|
|
|
256
262
|
Thanks for the data provided by [中国银行间市场交易商协会网站](http://www.nafmii.org.cn/);
|
|
257
263
|
|
|
258
264
|
Thanks for the data provided by [99期货网站](http://www.99qh.com/);
|
|
259
265
|
|
|
260
|
-
Thanks for the data provided by [英为财情网站](https://cn.investing.com/);
|
|
261
|
-
|
|
262
266
|
Thanks for the data provided by [中国外汇交易中心暨全国银行间同业拆借中心网站](http://www.chinamoney.com.cn/chinese/);
|
|
263
267
|
|
|
264
|
-
Thanks for the data provided by [金十数据网站](https://www.jin10.com/);
|
|
265
|
-
|
|
266
268
|
Thanks for the data provided by [和讯财经网站](http://www.hexun.com/);
|
|
267
269
|
|
|
268
|
-
Thanks for the data provided by [新浪财经网站](https://finance.sina.com.cn/);
|
|
269
|
-
|
|
270
|
-
Thanks for the data provided by [Oxford-Man Institute 网站](https://realized.oxford-man.ox.ac.uk/);
|
|
271
|
-
|
|
272
270
|
Thanks for the data provided by [DACHENG-XIU 网站](https://dachxiu.chicagobooth.edu/);
|
|
273
271
|
|
|
274
272
|
Thanks for the data provided by [上海证券交易所网站](http://www.sse.com.cn/assortment/options/price/);
|
|
@@ -291,16 +289,8 @@ Thanks for the data provided by [Timeanddate 网站](https://www.timeanddate.com
|
|
|
291
289
|
|
|
292
290
|
Thanks for the data provided by [河北省空气质量预报信息发布系统网站](http://110.249.223.67/publish/);
|
|
293
291
|
|
|
294
|
-
Thanks for the data provided by [南华期货网站](http://www.nanhua.net/nhzc/varietytrend.html);
|
|
295
|
-
|
|
296
292
|
Thanks for the data provided by [Economic Policy Uncertainty 网站](http://www.nanhua.net/nhzc/varietytrend.html);
|
|
297
293
|
|
|
298
|
-
Thanks for the data provided by [微博指数网站](https://data.weibo.com/index/newindex);
|
|
299
|
-
|
|
300
|
-
Thanks for the data provided by [百度指数网站](http://index.baidu.com/v2/main/index.html);
|
|
301
|
-
|
|
302
|
-
Thanks for the data provided by [谷歌指数网站](https://trends.google.com/trends/?geo=US);
|
|
303
|
-
|
|
304
294
|
Thanks for the data provided by [申万指数网站](http://www.swsindex.com/idx0120.aspx?columnid=8832);
|
|
305
295
|
|
|
306
296
|
Thanks for the data provided by [真气网网站](https://www.zq12369.com/);
|
|
@@ -315,28 +305,12 @@ Thanks for the data provided by [北京市碳排放权电子交易平台网站](
|
|
|
315
305
|
|
|
316
306
|
Thanks for the data provided by [国家金融与发展实验室网站](http://www.nifd.cn/);
|
|
317
307
|
|
|
318
|
-
Thanks for the data provided by [IT桔子网站](https://www.itjuzi.com);
|
|
319
|
-
|
|
320
|
-
Thanks for the data provided by [东方财富网站](http://data.eastmoney.com/jgdy/);
|
|
321
|
-
|
|
322
308
|
Thanks for the data provided by [义乌小商品指数网站](http://www.ywindex.com/Home/Product/index/);
|
|
323
309
|
|
|
324
|
-
Thanks for the data provided by [中国国家发展和改革委员会网站](http://jgjc.ndrc.gov.cn/dmzs.aspx?clmId=741);
|
|
325
|
-
|
|
326
310
|
Thanks for the data provided by [百度迁徙网站](https://qianxi.baidu.com/?from=shoubai#city=0);
|
|
327
311
|
|
|
328
|
-
Thanks for the data provided by [慈善中国网站](http://cishan.chinanpo.gov.cn/platform/login.html);
|
|
329
|
-
|
|
330
312
|
Thanks for the data provided by [思知网站](https://www.ownthink.com/);
|
|
331
313
|
|
|
332
314
|
Thanks for the data provided by [Currencyscoop 网站](https://currencyscoop.com/);
|
|
333
315
|
|
|
334
316
|
Thanks for the data provided by [新加坡交易所网站](https://www.sgx.com/zh-hans/research-education/derivatives);
|
|
335
|
-
|
|
336
|
-
Thanks for the tutorials provided by [微信公众号: Python大咖谈](https://upload-images.jianshu.io/upload_images/3240514-61004f2c71be4a0b.png).
|
|
337
|
-
|
|
338
|
-
## Backer and Sponsor
|
|
339
|
-
|
|
340
|
-
<a href="https://www.jetbrains.com/?from=jindaxiang/akshare" target="_blank">
|
|
341
|
-
<img alt="jetbrains" src="https://github.com/akfamily/akshare/blob/main/assets/images/jetbrains.svg" width="100px" height="100px">
|
|
342
|
-
</a>
|