akshare 1.12.95__py3-none-any.whl → 1.15.72__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.
Potentially problematic release.
This version of akshare might be problematic. Click here for more details.
- akshare/__init__.py +446 -139
- akshare/air/air_hebei.py +79 -53
- akshare/air/air_zhenqi.py +29 -43
- akshare/air/sunrise_tad.py +32 -17
- akshare/bank/bank_cbirc_2020.py +12 -9
- akshare/bond/bond_cb_ths.py +17 -9
- akshare/bond/bond_china.py +38 -39
- akshare/bond/bond_china_money.py +75 -48
- akshare/bond/bond_convert.py +40 -16
- akshare/bond/bond_info_cm.py +28 -8
- akshare/bond/bond_issue_cninfo.py +73 -30
- akshare/bond/{bond_zh_cov_sina.py → bond_zh_cov.py} +41 -17
- akshare/bond/bond_zh_sina.py +57 -51
- akshare/cal/__init__.py +0 -0
- akshare/cal/rv.py +170 -0
- akshare/cost/cost_living.py +7 -5
- akshare/currency/currency_safe.py +7 -6
- akshare/data/cninfo.js +15 -0
- akshare/datasets.py +10 -21
- akshare/economic/macro_bank.py +95 -653
- akshare/economic/macro_china.py +772 -1024
- akshare/economic/macro_china_hk.py +65 -243
- akshare/economic/macro_china_nbs.py +24 -7
- akshare/economic/macro_constitute.py +17 -12
- akshare/economic/macro_euro.py +13 -6
- akshare/economic/macro_finance_ths.py +133 -0
- akshare/economic/macro_info_ws.py +100 -0
- akshare/economic/macro_japan.py +5 -4
- akshare/economic/macro_other.py +12 -9
- akshare/economic/macro_usa.py +376 -1940
- akshare/economic/marco_cnbs.py +11 -6
- akshare/energy/energy_carbon.py +94 -125
- akshare/event/migration.py +3 -2
- akshare/exceptions.py +43 -0
- akshare/file_fold/calendar.json +245 -2
- akshare/fortune/fortune_500.py +15 -48
- akshare/fund/fund_amac.py +157 -75
- akshare/fund/fund_em.py +191 -184
- akshare/fund/fund_etf_em.py +20 -19
- akshare/fund/fund_etf_sina.py +71 -23
- akshare/fund/fund_etf_ths.py +93 -0
- akshare/fund/fund_fee_em.py +98 -0
- akshare/fund/fund_lof_em.py +10 -8
- akshare/fund/fund_portfolio_em.py +60 -50
- akshare/fund/fund_rank_em.py +91 -82
- akshare/fund/fund_report_cninfo.py +63 -48
- akshare/fund/fund_scale_sina.py +20 -10
- akshare/fund/fund_xq.py +139 -109
- akshare/futures/cons.py +8 -31
- akshare/futures/cot.py +185 -137
- akshare/futures/futures_basis.py +97 -32
- akshare/futures/futures_comm_ctp.py +37 -0
- akshare/futures/futures_comm_qihuo.py +74 -45
- akshare/futures/futures_daily_bar.py +121 -184
- akshare/futures/futures_hf_em.py +66 -61
- akshare/futures/futures_hq_sina.py +79 -61
- akshare/futures/futures_index_ccidx.py +6 -3
- akshare/futures/futures_inventory_99.py +61 -272
- akshare/futures/futures_news_shmet.py +4 -2
- akshare/futures/futures_roll_yield.py +12 -25
- akshare/futures/futures_spot_stock_em.py +19 -13
- akshare/futures/futures_stock_js.py +14 -12
- akshare/futures/futures_to_spot.py +38 -33
- akshare/futures/futures_warehouse_receipt.py +75 -71
- akshare/futures/futures_zh_sina.py +73 -50
- akshare/futures/symbol_var.py +18 -13
- akshare/futures_derivative/futures_contract_info_czce.py +60 -52
- akshare/futures_derivative/futures_contract_info_ine.py +43 -34
- akshare/futures_derivative/futures_contract_info_shfe.py +46 -35
- akshare/futures_derivative/futures_cot_sina.py +26 -19
- akshare/futures_derivative/futures_spot_sys.py +21 -8
- akshare/fx/currency_investing.py +19 -285
- akshare/index/index_cflp.py +29 -26
- akshare/index/index_cni.py +86 -88
- akshare/index/index_cons.py +26 -10
- akshare/index/index_cx.py +248 -47
- akshare/index/index_drewry.py +17 -16
- akshare/index/index_hog.py +27 -26
- akshare/index/index_option_qvix.py +329 -0
- akshare/index/index_research_fund_sw.py +134 -0
- akshare/index/{index_sw_research.py → index_research_sw.py} +122 -58
- akshare/index/index_spot.py +9 -5
- akshare/index/index_stock_hk.py +35 -16
- akshare/index/index_stock_us_sina.py +1 -1
- akshare/index/index_stock_zh.py +180 -89
- akshare/index/index_stock_zh_csindex.py +15 -369
- akshare/index/index_sw.py +62 -34
- akshare/index/index_yw.py +46 -23
- akshare/index/index_zh_a_scope.py +48 -0
- akshare/index/index_zh_em.py +17 -14
- akshare/interest_rate/interbank_rate_em.py +14 -9
- akshare/movie/artist_yien.py +32 -5
- akshare/movie/movie_yien.py +92 -18
- akshare/movie/video_yien.py +28 -5
- akshare/news/news_baidu.py +78 -44
- akshare/news/news_cctv.py +38 -38
- akshare/news/news_stock.py +6 -3
- akshare/nlp/nlp_interface.py +7 -8
- akshare/option/cons.py +11 -11
- akshare/option/option_comm_qihuo.py +86 -0
- akshare/option/option_commodity.py +178 -51
- akshare/option/option_daily_stats_sse_szse.py +146 -0
- akshare/option/option_em.py +147 -138
- akshare/option/option_finance_sina.py +160 -137
- akshare/option/option_lhb_em.py +62 -56
- akshare/option/option_risk_indicator_sse.py +17 -14
- akshare/other/other_car_cpca.py +934 -0
- akshare/other/{other_car.py → other_car_gasgoo.py} +15 -54
- akshare/qdii/__init__.py +0 -0
- akshare/qdii/qdii_jsl.py +233 -0
- akshare/request.py +117 -0
- akshare/spot/spot_hog_soozhu.py +232 -0
- akshare/spot/spot_price_qh.py +121 -0
- akshare/spot/spot_sge.py +63 -10
- akshare/stock/stock_allotment_cninfo.py +10 -9
- akshare/stock/stock_ask_bid_em.py +27 -3
- akshare/stock/stock_board_concept_em.py +23 -14
- akshare/stock/stock_board_industry_em.py +40 -34
- 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 +12 -6
- akshare/stock/stock_dzjy_em.py +347 -260
- akshare/stock/stock_fund_em.py +332 -84
- akshare/stock/stock_hk_famous.py +108 -0
- akshare/stock/stock_hk_sina.py +8 -7
- akshare/stock/stock_hold_control_cninfo.py +100 -15
- akshare/stock/stock_hold_control_em.py +4 -3
- akshare/stock/stock_hold_num_cninfo.py +18 -12
- akshare/stock/stock_hot_rank_em.py +2 -1
- akshare/stock/stock_hot_search_baidu.py +5 -2
- akshare/stock/stock_industry_cninfo.py +24 -18
- akshare/stock/stock_industry_pe_cninfo.py +45 -31
- akshare/stock/stock_industry_sw.py +9 -10
- akshare/stock/stock_info.py +25 -15
- akshare/stock/stock_info_em.py +5 -2
- akshare/stock/stock_intraday_em.py +5 -2
- akshare/stock/stock_intraday_sina.py +22 -18
- 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_rank_forecast.py +8 -6
- akshare/stock/stock_share_changes_cninfo.py +18 -14
- akshare/stock/stock_share_hold.py +24 -19
- akshare/stock/stock_summary.py +54 -26
- akshare/stock/stock_us_famous.py +15 -6
- akshare/stock/stock_us_pink.py +7 -5
- akshare/stock/stock_us_sina.py +15 -12
- akshare/stock/stock_xq.py +38 -12
- akshare/stock/stock_zh_a_sina.py +53 -78
- akshare/stock/stock_zh_b_sina.py +32 -55
- akshare/stock/stock_zh_kcb_report.py +11 -9
- akshare/stock/stock_zh_kcb_sina.py +67 -64
- 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 +12 -9
- akshare/stock_feature/stock_a_pe_and_pb.py +27 -6
- akshare/stock_feature/stock_account_em.py +58 -40
- akshare/stock_feature/stock_analyst_em.py +36 -27
- akshare/stock_feature/stock_board_industry_ths.py +136 -400
- akshare/stock_feature/stock_comment_em.py +118 -85
- akshare/stock_feature/stock_concept_futu.py +183 -0
- akshare/stock_feature/stock_cyq_em.py +58 -54
- akshare/stock_feature/stock_disclosure_cninfo.py +147 -102
- akshare/stock_feature/stock_esg_sina.py +216 -11
- akshare/stock_feature/stock_fhps_em.py +60 -25
- akshare/stock_feature/stock_fhps_ths.py +25 -6
- akshare/stock_feature/stock_fund_flow.py +38 -25
- akshare/stock_feature/stock_gdfx_em.py +180 -95
- akshare/stock_feature/stock_gdhs.py +73 -49
- akshare/stock_feature/stock_gpzy_em.py +78 -46
- akshare/stock_feature/stock_hist_em.py +164 -111
- akshare/stock_feature/stock_hk_valuation_baidu.py +20 -8
- akshare/stock_feature/stock_hsgt_em.py +184 -452
- akshare/stock_feature/stock_info.py +52 -29
- akshare/stock_feature/stock_inner_trade_xq.py +39 -31
- akshare/stock_feature/stock_irm_cninfo.py +32 -9
- akshare/stock_feature/stock_jgdy_em.py +41 -38
- akshare/stock_feature/stock_lh_yybpm.py +36 -37
- akshare/stock_feature/stock_lhb_em.py +135 -71
- akshare/stock_feature/stock_lhb_sina.py +93 -46
- akshare/stock_feature/stock_margin_em.py +102 -0
- akshare/stock_feature/{stock_sse_margin.py → stock_margin_sse.py} +21 -15
- akshare/stock_feature/{stock_szse_margin.py → stock_margin_szse.py} +23 -19
- akshare/stock_feature/stock_market_legu.py +13 -8
- akshare/stock_feature/stock_pankou_em.py +72 -34
- akshare/stock_feature/stock_report_em.py +244 -54
- akshare/stock_feature/stock_research_report_em.py +48 -19
- akshare/stock_feature/stock_sns_sseinfo.py +15 -12
- akshare/stock_feature/stock_sy_em.py +86 -33
- akshare/stock_feature/stock_technology_ths.py +152 -120
- akshare/stock_feature/stock_tfp_em.py +35 -13
- akshare/stock_feature/stock_three_report_em.py +119 -77
- akshare/stock_feature/stock_ttm_lyr.py +4 -7
- akshare/stock_feature/stock_value_em.py +83 -0
- akshare/stock_feature/stock_wencai.py +21 -9
- akshare/stock_feature/stock_yjyg_em.py +63 -28
- akshare/stock_feature/stock_zf_pg.py +61 -38
- akshare/stock_feature/stock_zh_valuation_baidu.py +3 -2
- akshare/stock_feature/stock_ztb_em.py +62 -40
- akshare/stock_fundamental/stock_finance.py +150 -58
- akshare/stock_fundamental/stock_finance_ths.py +116 -31
- akshare/stock_fundamental/stock_mda_ym.py +5 -3
- akshare/stock_fundamental/stock_notice.py +29 -15
- akshare/stock_fundamental/stock_profit_forecast_em.py +31 -13
- akshare/stock_fundamental/stock_profit_forecast_ths.py +19 -10
- akshare/stock_fundamental/stock_register_em.py +448 -0
- akshare/stock_fundamental/stock_restricted_em.py +79 -32
- akshare/stock_fundamental/stock_zygc.py +10 -8
- akshare/stock_fundamental/stock_zyjs_ths.py +5 -3
- akshare/tool/trade_date_hist.py +4 -3
- akshare/utils/cons.py +10 -0
- akshare/utils/context.py +43 -0
- akshare/utils/demjson.py +2 -2
- akshare/utils/func.py +26 -0
- akshare/utils/tqdm.py +13 -3
- {akshare-1.12.95.dist-info → akshare-1.15.72.dist-info}/METADATA +52 -69
- akshare-1.15.72.dist-info/RECORD +385 -0
- {akshare-1.12.95.dist-info → akshare-1.15.72.dist-info}/WHEEL +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/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 -71
- akshare/index/index_investing.py +0 -232
- akshare/sport/sport_olympic_winter.py +0 -39
- akshare/stock_feature/stock_board_concept_ths.py +0 -422
- akshare/stock_fundamental/stock_register.py +0 -292
- akshare-1.12.95.dist-info/RECORD +0 -374
- {akshare-1.12.95.dist-info → akshare-1.15.72.dist-info}/LICENSE +0 -0
- {akshare-1.12.95.dist-info → akshare-1.15.72.dist-info}/top_level.txt +0 -0
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date:
|
|
4
|
+
Date: 2024/10/14 22:00
|
|
5
5
|
Desc: 巨潮资讯-个股-公司概况
|
|
6
|
-
|
|
6
|
+
https://webapi.cninfo.com.cn/#/company
|
|
7
7
|
"""
|
|
8
|
+
|
|
8
9
|
import pandas as pd
|
|
10
|
+
import py_mini_racer
|
|
9
11
|
import requests
|
|
10
|
-
from py_mini_racer import py_mini_racer
|
|
11
12
|
|
|
12
13
|
from akshare.datasets import get_ths_js
|
|
13
14
|
|
|
@@ -21,7 +22,7 @@ def _get_file_content_ths(file: str = "cninfo.js") -> str:
|
|
|
21
22
|
:rtype: str
|
|
22
23
|
"""
|
|
23
24
|
setting_file_path = get_ths_js(file)
|
|
24
|
-
with open(setting_file_path) as f:
|
|
25
|
+
with open(setting_file_path, encoding="utf-8") as f:
|
|
25
26
|
file_data = f.read()
|
|
26
27
|
return file_data
|
|
27
28
|
|
|
@@ -29,14 +30,14 @@ def _get_file_content_ths(file: str = "cninfo.js") -> str:
|
|
|
29
30
|
def stock_profile_cninfo(symbol: str = "600030") -> pd.DataFrame:
|
|
30
31
|
"""
|
|
31
32
|
巨潮资讯-个股-公司概况
|
|
32
|
-
|
|
33
|
+
https://webapi.cninfo.com.cn/#/company
|
|
33
34
|
:param symbol: 股票代码
|
|
34
35
|
:type symbol: str
|
|
35
36
|
:return: 公司概况
|
|
36
37
|
:rtype: pandas.DataFrame
|
|
37
38
|
:raise: Exception,如果服务器返回的数据无法被解析
|
|
38
39
|
"""
|
|
39
|
-
url = "
|
|
40
|
+
url = "https://webapi.cninfo.com.cn/api/sysapi/p_sysapi1133"
|
|
40
41
|
params = {
|
|
41
42
|
"scode": symbol,
|
|
42
43
|
}
|
|
@@ -52,10 +53,10 @@ def stock_profile_cninfo(symbol: str = "600030") -> pd.DataFrame:
|
|
|
52
53
|
"Content-Length": "0",
|
|
53
54
|
"Host": "webapi.cninfo.com.cn",
|
|
54
55
|
"Accept-Enckey": mcode,
|
|
55
|
-
"Origin": "
|
|
56
|
+
"Origin": "https://webapi.cninfo.com.cn",
|
|
56
57
|
"Pragma": "no-cache",
|
|
57
58
|
"Proxy-Connection": "keep-alive",
|
|
58
|
-
"Referer": "
|
|
59
|
+
"Referer": "https://webapi.cninfo.com.cn/",
|
|
59
60
|
"X-Requested-With": "XMLHttpRequest",
|
|
60
61
|
}
|
|
61
62
|
r = requests.post(url, params=params, headers=headers)
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date:
|
|
4
|
+
Date: 2024/8/28 15:30
|
|
5
5
|
Desc: 巨潮资讯-数据中心-评级预测-投资评级
|
|
6
|
-
|
|
6
|
+
https://webapi.cninfo.com.cn/#/thematicStatistics?name=%E6%8A%95%E8%B5%84%E8%AF%84%E7%BA%A7
|
|
7
7
|
"""
|
|
8
|
+
|
|
8
9
|
import pandas as pd
|
|
9
10
|
import requests
|
|
10
|
-
|
|
11
|
+
import py_mini_racer
|
|
11
12
|
|
|
12
13
|
from akshare.datasets import get_ths_js
|
|
13
14
|
|
|
@@ -21,7 +22,7 @@ def _get_file_content_cninfo(file: str = "cninfo.js") -> str:
|
|
|
21
22
|
:rtype: str
|
|
22
23
|
"""
|
|
23
24
|
setting_file_path = get_ths_js(file)
|
|
24
|
-
with open(setting_file_path) as f:
|
|
25
|
+
with open(setting_file_path, encoding="utf-8") as f:
|
|
25
26
|
file_data = f.read()
|
|
26
27
|
return file_data
|
|
27
28
|
|
|
@@ -29,7 +30,7 @@ def _get_file_content_cninfo(file: str = "cninfo.js") -> str:
|
|
|
29
30
|
def stock_rank_forecast_cninfo(date: str = "20230817") -> pd.DataFrame:
|
|
30
31
|
"""
|
|
31
32
|
巨潮资讯-数据中心-评级预测-投资评级
|
|
32
|
-
|
|
33
|
+
https://webapi.cninfo.com.cn/#/thematicStatistics?name=%E6%8A%95%E8%B5%84%E8%AF%84%E7%BA%A7
|
|
33
34
|
:param date: 查询日期
|
|
34
35
|
:type date: str
|
|
35
36
|
:return: 投资评级
|
|
@@ -53,7 +54,8 @@ def stock_rank_forecast_cninfo(date: str = "20230817") -> pd.DataFrame:
|
|
|
53
54
|
"Pragma": "no-cache",
|
|
54
55
|
"Proxy-Connection": "keep-alive",
|
|
55
56
|
"Referer": "http://webapi.cninfo.com.cn/",
|
|
56
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
57
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
58
|
+
"Chrome/93.0.4577.63 Safari/537.36",
|
|
57
59
|
"X-Requested-With": "XMLHttpRequest",
|
|
58
60
|
}
|
|
59
61
|
r = requests.post(url, params=params, headers=headers)
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
# -*- coding:utf-8 -*-
|
|
2
2
|
# !/usr/bin/env python
|
|
3
3
|
"""
|
|
4
|
-
Date:
|
|
4
|
+
Date: 2024/10/21 22:20
|
|
5
5
|
Desc: 巨潮资讯-股本股东-公司股本变动
|
|
6
|
-
|
|
6
|
+
https://webapi.cninfo.com.cn/api/stock/p_stock2215
|
|
7
7
|
"""
|
|
8
|
+
|
|
9
|
+
import numpy as np
|
|
8
10
|
import pandas as pd
|
|
11
|
+
import py_mini_racer
|
|
9
12
|
import requests
|
|
10
|
-
from py_mini_racer import py_mini_racer
|
|
11
13
|
|
|
12
14
|
from akshare.datasets import get_ths_js
|
|
13
15
|
|
|
@@ -21,7 +23,7 @@ def _get_file_content_cninfo(file: str = "cninfo.js") -> str:
|
|
|
21
23
|
:rtype: str
|
|
22
24
|
"""
|
|
23
25
|
setting_file_path = get_ths_js(file)
|
|
24
|
-
with open(setting_file_path) as f:
|
|
26
|
+
with open(setting_file_path, encoding="utf-8") as f:
|
|
25
27
|
file_data = f.read()
|
|
26
28
|
return file_data
|
|
27
29
|
|
|
@@ -29,11 +31,11 @@ def _get_file_content_cninfo(file: str = "cninfo.js") -> str:
|
|
|
29
31
|
def stock_share_change_cninfo(
|
|
30
32
|
symbol: str = "002594",
|
|
31
33
|
start_date: str = "20091227",
|
|
32
|
-
end_date: str = "
|
|
34
|
+
end_date: str = "20241021",
|
|
33
35
|
) -> pd.DataFrame:
|
|
34
36
|
"""
|
|
35
37
|
巨潮资讯-股本股东-公司股本变动
|
|
36
|
-
|
|
38
|
+
https://webapi.cninfo.com.cn/#/apiDoc
|
|
37
39
|
查询 p_stock2215 接口
|
|
38
40
|
:param symbol: 股票代码
|
|
39
41
|
:type symbol: str
|
|
@@ -44,7 +46,7 @@ def stock_share_change_cninfo(
|
|
|
44
46
|
:return: 公司股本变动
|
|
45
47
|
:rtype: pandas.DataFrame
|
|
46
48
|
"""
|
|
47
|
-
url = "
|
|
49
|
+
url = "https://webapi.cninfo.com.cn/api/stock/p_stock2215"
|
|
48
50
|
params = {
|
|
49
51
|
"scode": symbol,
|
|
50
52
|
"sdate": "-".join([start_date[:4], start_date[4:6], start_date[6:]]),
|
|
@@ -62,11 +64,12 @@ def stock_share_change_cninfo(
|
|
|
62
64
|
"Cache-Control": "no-cache",
|
|
63
65
|
"Content-Length": "0",
|
|
64
66
|
"Host": "webapi.cninfo.com.cn",
|
|
65
|
-
"Origin": "
|
|
67
|
+
"Origin": "https://webapi.cninfo.com.cn",
|
|
66
68
|
"Pragma": "no-cache",
|
|
67
69
|
"Proxy-Connection": "keep-alive",
|
|
68
|
-
"Referer": "
|
|
69
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
70
|
+
"Referer": "https://webapi.cninfo.com.cn/",
|
|
71
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
72
|
+
"Chrome/93.0.4577.63 Safari/537.36",
|
|
70
73
|
"X-Requested-With": "XMLHttpRequest",
|
|
71
74
|
}
|
|
72
75
|
r = requests.post(url, params=params, headers=headers)
|
|
@@ -122,9 +125,10 @@ def stock_share_change_cninfo(
|
|
|
122
125
|
}
|
|
123
126
|
ignore_cols = ["最新记录标识", "其他"]
|
|
124
127
|
temp_df.rename(columns=cols_map, inplace=True)
|
|
125
|
-
|
|
126
|
-
temp_df
|
|
127
|
-
temp_df["
|
|
128
|
+
pd.set_option("future.no_silent_downcasting", True)
|
|
129
|
+
temp_df.fillna(np.nan, inplace=True)
|
|
130
|
+
temp_df["公告日期"] = pd.to_datetime(temp_df["公告日期"], errors="coerce").dt.date
|
|
131
|
+
temp_df["变动日期"] = pd.to_datetime(temp_df["变动日期"], errors="coerce").dt.date
|
|
128
132
|
data_df = temp_df[[c for c in temp_df.columns if c not in ignore_cols]]
|
|
129
133
|
return data_df
|
|
130
134
|
|
|
@@ -133,6 +137,6 @@ if __name__ == "__main__":
|
|
|
133
137
|
stock_share_change_cninfo_df = stock_share_change_cninfo(
|
|
134
138
|
symbol="002594",
|
|
135
139
|
start_date="20091227",
|
|
136
|
-
end_date="
|
|
140
|
+
end_date="20241021",
|
|
137
141
|
)
|
|
138
142
|
print(stock_share_change_cninfo_df)
|
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date:
|
|
4
|
+
Date: 2024/11/8 17:00
|
|
5
5
|
Desc: 董监高及相关人员持股变动
|
|
6
|
-
|
|
7
6
|
北京证券交易所-信息披露-监管信息-董监高及相关人员持股变动
|
|
8
7
|
https://www.bse.cn/disclosure/djg_sharehold_change.html
|
|
9
|
-
|
|
10
8
|
深圳证券交易所-信息披露-监管信息公开-董监高人员股份变动
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
https://www.szse.cn/disclosure/supervision/change/index.html
|
|
13
10
|
上海证券交易所-披露-监管信息公开-公司监管-董董监高人员股份变动
|
|
14
|
-
|
|
11
|
+
https://www.sse.com.cn/disclosure/credibility/supervision/change/
|
|
15
12
|
"""
|
|
13
|
+
|
|
16
14
|
import json
|
|
17
15
|
|
|
18
16
|
import pandas as pd
|
|
@@ -23,13 +21,13 @@ from tqdm import tqdm
|
|
|
23
21
|
def stock_share_hold_change_sse(symbol: str = "600000") -> pd.DataFrame:
|
|
24
22
|
"""
|
|
25
23
|
上海证券交易所-披露-监管信息公开-公司监管-董董监高人员股份变动
|
|
26
|
-
|
|
24
|
+
https://www.sse.com.cn/disclosure/credibility/supervision/change/
|
|
27
25
|
:param symbol: choice of {"全部", "具体股票代码"}
|
|
28
26
|
:type symbol: str
|
|
29
27
|
:return: 董监高人员股份变动
|
|
30
28
|
:rtype: pandas.DataFrame
|
|
31
29
|
"""
|
|
32
|
-
url = "
|
|
30
|
+
url = "https://query.sse.com.cn/commonQuery.do"
|
|
33
31
|
params = {
|
|
34
32
|
"isPagination": "true",
|
|
35
33
|
"pageHelp.pageSize": "100",
|
|
@@ -48,8 +46,9 @@ def stock_share_hold_change_sse(symbol: str = "600000") -> pd.DataFrame:
|
|
|
48
46
|
params if symbol == "全部" else params.update({"COMPANY_CODE": symbol})
|
|
49
47
|
headers = {
|
|
50
48
|
"Host": "query.sse.com.cn",
|
|
51
|
-
"Referer": "
|
|
52
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
49
|
+
"Referer": "https://www.sse.com.cn/",
|
|
50
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
51
|
+
"Chrome/93.0.4577.63 Safari/537.36",
|
|
53
52
|
}
|
|
54
53
|
r = requests.get(url, headers=headers, params=params)
|
|
55
54
|
data_json = r.json()
|
|
@@ -106,9 +105,13 @@ def stock_share_hold_change_sse(symbol: str = "600000") -> pd.DataFrame:
|
|
|
106
105
|
big_df["变动日期"] = pd.to_datetime(big_df["变动日期"], errors="coerce").dt.date
|
|
107
106
|
big_df["填报日期"] = pd.to_datetime(big_df["填报日期"], errors="coerce").dt.date
|
|
108
107
|
|
|
109
|
-
big_df["本次变动前持股数"] = pd.to_numeric(
|
|
108
|
+
big_df["本次变动前持股数"] = pd.to_numeric(
|
|
109
|
+
big_df["本次变动前持股数"], errors="coerce"
|
|
110
|
+
)
|
|
110
111
|
big_df["变动数"] = pd.to_numeric(big_df["变动数"], errors="coerce")
|
|
111
|
-
big_df["本次变动平均价格"] = pd.to_numeric(
|
|
112
|
+
big_df["本次变动平均价格"] = pd.to_numeric(
|
|
113
|
+
big_df["本次变动平均价格"], errors="coerce"
|
|
114
|
+
)
|
|
112
115
|
big_df["变动后持股数"] = pd.to_numeric(big_df["变动后持股数"], errors="coerce")
|
|
113
116
|
return big_df
|
|
114
117
|
|
|
@@ -116,12 +119,17 @@ def stock_share_hold_change_sse(symbol: str = "600000") -> pd.DataFrame:
|
|
|
116
119
|
def stock_share_hold_change_szse(symbol: str = "全部") -> pd.DataFrame:
|
|
117
120
|
"""
|
|
118
121
|
深圳证券交易所-信息披露-监管信息公开-董监高人员股份变动
|
|
119
|
-
|
|
122
|
+
https://www.szse.cn/disclosure/supervision/change/index.html
|
|
120
123
|
:param symbol: choice of {"全部", "具体股票代码"}
|
|
121
124
|
:type symbol: str
|
|
122
125
|
:return: 董监高人员股份变动
|
|
123
126
|
:rtype: pandas.DataFrame
|
|
124
127
|
"""
|
|
128
|
+
url = "https://www.szse.cn/api/report/ShowReport/data"
|
|
129
|
+
headers = {
|
|
130
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
131
|
+
"Chrome/93.0.4577.63 Safari/537.36",
|
|
132
|
+
}
|
|
125
133
|
params = {
|
|
126
134
|
"SHOWTYPE": "JSON",
|
|
127
135
|
"CATALOGID": "1801_cxda",
|
|
@@ -130,15 +138,11 @@ def stock_share_hold_change_szse(symbol: str = "全部") -> pd.DataFrame:
|
|
|
130
138
|
"random": "0.7874198771222201",
|
|
131
139
|
}
|
|
132
140
|
params if symbol == "全部" else params.update({"txtDMorJC": symbol})
|
|
133
|
-
url = "http://www.szse.cn/api/report/ShowReport/data"
|
|
134
|
-
headers = {
|
|
135
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36",
|
|
136
|
-
}
|
|
137
141
|
r = requests.get(url, headers=headers, params=params)
|
|
138
142
|
data_json = r.json()
|
|
139
143
|
total_page = data_json[0]["metadata"]["pagecount"]
|
|
140
144
|
big_df = pd.DataFrame()
|
|
141
|
-
for page in tqdm(range(1, total_page+1), leave=False):
|
|
145
|
+
for page in tqdm(range(1, total_page + 1), leave=False):
|
|
142
146
|
params.update(
|
|
143
147
|
{
|
|
144
148
|
"PAGENO": page,
|
|
@@ -212,7 +216,8 @@ def stock_share_hold_change_bse(symbol: str = "430489") -> pd.DataFrame:
|
|
|
212
216
|
}
|
|
213
217
|
url = "https://www.bse.cn/djgCgbdController/getDjgCgbdList.do"
|
|
214
218
|
headers = {
|
|
215
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
219
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
220
|
+
"Chrome/93.0.4577.63 Safari/537.36",
|
|
216
221
|
}
|
|
217
222
|
r = requests.get(url, headers=headers, params=params)
|
|
218
223
|
data_text = r.text
|
akshare/stock/stock_summary.py
CHANGED
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date:
|
|
4
|
+
Date: 2024/9/1 16:00
|
|
5
5
|
Desc: 股票数据-总貌-市场总貌
|
|
6
6
|
股票数据-总貌-成交概括
|
|
7
7
|
https://www.szse.cn/market/overview/index.html
|
|
8
8
|
https://www.sse.com.cn/market/stockdata/statistic/
|
|
9
9
|
"""
|
|
10
|
+
|
|
10
11
|
import warnings
|
|
11
|
-
from io import BytesIO
|
|
12
|
+
from io import BytesIO, StringIO
|
|
12
13
|
|
|
13
14
|
import pandas as pd
|
|
14
15
|
import requests
|
|
15
16
|
from bs4 import BeautifulSoup
|
|
16
17
|
|
|
17
18
|
|
|
18
|
-
def stock_szse_summary(date: str = "
|
|
19
|
+
def stock_szse_summary(date: str = "20240830") -> pd.DataFrame:
|
|
19
20
|
"""
|
|
20
21
|
深证证券交易所-总貌-证券类别统计
|
|
21
22
|
https://www.szse.cn/market/overview/index.html
|
|
@@ -37,10 +38,10 @@ def stock_szse_summary(date: str = "20200619") -> pd.DataFrame:
|
|
|
37
38
|
warnings.simplefilter("always")
|
|
38
39
|
temp_df = pd.read_excel(BytesIO(r.content), engine="openpyxl")
|
|
39
40
|
temp_df["证券类别"] = temp_df["证券类别"].str.strip()
|
|
40
|
-
temp_df.iloc[:, 2:] = temp_df.iloc[:, 2:].
|
|
41
|
+
temp_df.iloc[:, 2:] = temp_df.iloc[:, 2:].map(lambda x: x.replace(",", ""))
|
|
41
42
|
temp_df.columns = ["证券类别", "数量", "成交金额", "总市值", "流通市值"]
|
|
42
|
-
temp_df["数量"] = pd.to_numeric(temp_df["数量"])
|
|
43
|
-
temp_df["成交金额"] = pd.to_numeric(temp_df["成交金额"])
|
|
43
|
+
temp_df["数量"] = pd.to_numeric(temp_df["数量"], errors="coerce")
|
|
44
|
+
temp_df["成交金额"] = pd.to_numeric(temp_df["成交金额"], errors="coerce")
|
|
44
45
|
temp_df["总市值"] = pd.to_numeric(temp_df["总市值"], errors="coerce")
|
|
45
46
|
temp_df["流通市值"] = pd.to_numeric(temp_df["流通市值"], errors="coerce")
|
|
46
47
|
return temp_df
|
|
@@ -67,7 +68,15 @@ def stock_szse_area_summary(date: str = "202203") -> pd.DataFrame:
|
|
|
67
68
|
with warnings.catch_warnings(record=True):
|
|
68
69
|
warnings.simplefilter("always")
|
|
69
70
|
temp_df = pd.read_excel(BytesIO(r.content), engine="openpyxl")
|
|
70
|
-
temp_df.columns = [
|
|
71
|
+
temp_df.columns = [
|
|
72
|
+
"序号",
|
|
73
|
+
"地区",
|
|
74
|
+
"总交易额",
|
|
75
|
+
"占市场",
|
|
76
|
+
"股票交易额",
|
|
77
|
+
"基金交易额",
|
|
78
|
+
"债券交易额",
|
|
79
|
+
]
|
|
71
80
|
temp_df["总交易额"] = temp_df["总交易额"].str.replace(",", "")
|
|
72
81
|
temp_df["总交易额"] = pd.to_numeric(temp_df["总交易额"])
|
|
73
82
|
temp_df["占市场"] = pd.to_numeric(temp_df["占市场"])
|
|
@@ -80,7 +89,9 @@ def stock_szse_area_summary(date: str = "202203") -> pd.DataFrame:
|
|
|
80
89
|
return temp_df
|
|
81
90
|
|
|
82
91
|
|
|
83
|
-
def stock_szse_sector_summary(
|
|
92
|
+
def stock_szse_sector_summary(
|
|
93
|
+
symbol: str = "当月", date: str = "202303"
|
|
94
|
+
) -> pd.DataFrame:
|
|
84
95
|
"""
|
|
85
96
|
深圳证券交易所-统计资料-股票行业成交数据
|
|
86
97
|
https://docs.static.szse.cn/www/market/periodical/month/W020220511355248518608.html
|
|
@@ -94,8 +105,8 @@ def stock_szse_sector_summary(symbol: str = "当月", date: str = "202303") -> p
|
|
|
94
105
|
url = "https://www.szse.cn/market/periodical/month/index.html"
|
|
95
106
|
r = requests.get(url)
|
|
96
107
|
r.encoding = "utf8"
|
|
97
|
-
soup = BeautifulSoup(r.text, "lxml")
|
|
98
|
-
tags_list = soup.find_all("div", attrs={"class": "g-container"})[1].find_all(
|
|
108
|
+
soup = BeautifulSoup(r.text, features="lxml")
|
|
109
|
+
tags_list = soup.find_all(name="div", attrs={"class": "g-container"})[1].find_all(
|
|
99
110
|
"script"
|
|
100
111
|
)
|
|
101
112
|
tags_dict = [
|
|
@@ -118,11 +129,14 @@ def stock_szse_sector_summary(symbol: str = "当月", date: str = "202303") -> p
|
|
|
118
129
|
url = f"http://www.szse.cn/market/periodical/month/{date_url_dict[date_format]}"
|
|
119
130
|
r = requests.get(url)
|
|
120
131
|
r.encoding = "utf8"
|
|
121
|
-
soup = BeautifulSoup(r.text, "lxml")
|
|
122
|
-
url = [
|
|
132
|
+
soup = BeautifulSoup(r.text, features="lxml")
|
|
133
|
+
url = [
|
|
134
|
+
item for item in soup.find_all("a") if item.get_text() == "股票行业成交数据"
|
|
135
|
+
][0]["href"]
|
|
123
136
|
|
|
124
137
|
if symbol == "当月":
|
|
125
|
-
|
|
138
|
+
r = requests.get(url)
|
|
139
|
+
temp_df = pd.read_html(StringIO(r.text), encoding="gbk")[0]
|
|
126
140
|
temp_df.columns = [
|
|
127
141
|
"项目名称",
|
|
128
142
|
"项目名称-英文",
|
|
@@ -149,12 +163,20 @@ def stock_szse_sector_summary(symbol: str = "当月", date: str = "202303") -> p
|
|
|
149
163
|
]
|
|
150
164
|
|
|
151
165
|
temp_df["交易天数"] = pd.to_numeric(temp_df["交易天数"], errors="coerce")
|
|
152
|
-
temp_df["成交金额-人民币元"] = pd.to_numeric(
|
|
153
|
-
|
|
166
|
+
temp_df["成交金额-人民币元"] = pd.to_numeric(
|
|
167
|
+
temp_df["成交金额-人民币元"], errors="coerce"
|
|
168
|
+
)
|
|
169
|
+
temp_df["成交金额-占总计"] = pd.to_numeric(
|
|
170
|
+
temp_df["成交金额-占总计"], errors="coerce"
|
|
171
|
+
)
|
|
154
172
|
temp_df["成交股数-股数"] = pd.to_numeric(temp_df["成交股数-股数"], errors="coerce")
|
|
155
|
-
temp_df["成交股数-占总计"] = pd.to_numeric(
|
|
173
|
+
temp_df["成交股数-占总计"] = pd.to_numeric(
|
|
174
|
+
temp_df["成交股数-占总计"], errors="coerce"
|
|
175
|
+
)
|
|
156
176
|
temp_df["成交笔数-笔"] = pd.to_numeric(temp_df["成交笔数-笔"], errors="coerce")
|
|
157
|
-
temp_df["成交笔数-占总计"] = pd.to_numeric(
|
|
177
|
+
temp_df["成交笔数-占总计"] = pd.to_numeric(
|
|
178
|
+
temp_df["成交笔数-占总计"], errors="coerce"
|
|
179
|
+
)
|
|
158
180
|
return temp_df
|
|
159
181
|
|
|
160
182
|
|
|
@@ -174,7 +196,8 @@ def stock_sse_summary() -> pd.DataFrame:
|
|
|
174
196
|
}
|
|
175
197
|
headers = {
|
|
176
198
|
"Referer": "http://www.sse.com.cn/",
|
|
177
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
199
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
200
|
+
"Chrome/89.0.4389.90 Safari/537.36",
|
|
178
201
|
}
|
|
179
202
|
r = requests.get(url, params=params, headers=headers)
|
|
180
203
|
data_json = r.json()
|
|
@@ -279,9 +302,9 @@ def stock_sse_deal_daily(date: str = "20180117") -> pd.DataFrame:
|
|
|
279
302
|
temp_df.sort_values("单日情况", ascending=True, inplace=True)
|
|
280
303
|
temp_df.reset_index(drop=True, inplace=True)
|
|
281
304
|
# 构建空
|
|
282
|
-
temp_df[
|
|
283
|
-
temp_df[
|
|
284
|
-
temp_df[
|
|
305
|
+
temp_df["股票"] = "-"
|
|
306
|
+
temp_df["科创板"] = "-"
|
|
307
|
+
temp_df["股票回购"] = "-"
|
|
285
308
|
temp_df["股票"] = pd.to_numeric(temp_df["股票"], errors="coerce")
|
|
286
309
|
temp_df["主板A"] = pd.to_numeric(temp_df["主板A"], errors="coerce")
|
|
287
310
|
temp_df["主板B"] = pd.to_numeric(temp_df["主板B"], errors="coerce")
|
|
@@ -308,7 +331,8 @@ def stock_sse_deal_daily(date: str = "20180117") -> pd.DataFrame:
|
|
|
308
331
|
}
|
|
309
332
|
headers = {
|
|
310
333
|
"Referer": "http://www.sse.com.cn/",
|
|
311
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
334
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
335
|
+
"Chrome/89.0.4389.90 Safari/537.36",
|
|
312
336
|
}
|
|
313
337
|
r = requests.get(url, params=params, headers=headers)
|
|
314
338
|
data_json = r.json()
|
|
@@ -462,7 +486,8 @@ def stock_sse_deal_daily(date: str = "20180117") -> pd.DataFrame:
|
|
|
462
486
|
}
|
|
463
487
|
headers = {
|
|
464
488
|
"Referer": "http://www.sse.com.cn/",
|
|
465
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
489
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
490
|
+
"Chrome/89.0.4389.90 Safari/537.36",
|
|
466
491
|
}
|
|
467
492
|
r = requests.get(url, params=params, headers=headers)
|
|
468
493
|
data_json = r.json()
|
|
@@ -531,7 +556,8 @@ def stock_sse_deal_daily(date: str = "20180117") -> pd.DataFrame:
|
|
|
531
556
|
}
|
|
532
557
|
headers = {
|
|
533
558
|
"Referer": "http://www.sse.com.cn/",
|
|
534
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
559
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
560
|
+
"Chrome/89.0.4389.90 Safari/537.36",
|
|
535
561
|
}
|
|
536
562
|
r = requests.get(url, params=params, headers=headers)
|
|
537
563
|
data_json = r.json()
|
|
@@ -603,13 +629,15 @@ def stock_sse_deal_daily(date: str = "20180117") -> pd.DataFrame:
|
|
|
603
629
|
|
|
604
630
|
|
|
605
631
|
if __name__ == "__main__":
|
|
606
|
-
stock_szse_summary_df = stock_szse_summary(date="
|
|
632
|
+
stock_szse_summary_df = stock_szse_summary(date="20240901")
|
|
607
633
|
print(stock_szse_summary_df)
|
|
608
634
|
|
|
609
635
|
stock_szse_area_summary_df = stock_szse_area_summary(date="202203")
|
|
610
636
|
print(stock_szse_area_summary_df)
|
|
611
637
|
|
|
612
|
-
stock_szse_sector_summary_df = stock_szse_sector_summary(
|
|
638
|
+
stock_szse_sector_summary_df = stock_szse_sector_summary(
|
|
639
|
+
symbol="当月", date="202303"
|
|
640
|
+
)
|
|
613
641
|
print(stock_szse_sector_summary_df)
|
|
614
642
|
|
|
615
643
|
stock_sse_summary_df = stock_sse_summary()
|
akshare/stock/stock_us_famous.py
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date:
|
|
4
|
+
Date: 2024/7/24 13:30
|
|
5
5
|
Desc: 东方财富网-行情中心-美股市场-知名美股
|
|
6
|
-
|
|
6
|
+
https://quote.eastmoney.com/center/gridlist.html#us_wellknown
|
|
7
7
|
"""
|
|
8
|
+
|
|
8
9
|
import pandas as pd
|
|
9
10
|
import requests
|
|
10
11
|
|
|
@@ -12,7 +13,7 @@ import requests
|
|
|
12
13
|
def stock_us_famous_spot_em(symbol: str = "科技类") -> pd.DataFrame:
|
|
13
14
|
"""
|
|
14
15
|
东方财富网-行情中心-美股市场-知名美股
|
|
15
|
-
|
|
16
|
+
https://quote.eastmoney.com/center/gridlist.html#us_wellknown
|
|
16
17
|
:symbol: choice of {'科技类', '金融类', '医药食品类', '媒体类', '汽车能源类', '制造零售类'}
|
|
17
18
|
:type: str
|
|
18
19
|
:return: 知名美股实时行情
|
|
@@ -26,7 +27,7 @@ def stock_us_famous_spot_em(symbol: str = "科技类") -> pd.DataFrame:
|
|
|
26
27
|
"汽车能源类": "0219",
|
|
27
28
|
"制造零售类": "0221",
|
|
28
29
|
}
|
|
29
|
-
url = "
|
|
30
|
+
url = "https://69.push2.eastmoney.com/api/qt/clist/get"
|
|
30
31
|
params = {
|
|
31
32
|
"pn": "1",
|
|
32
33
|
"pz": "2000",
|
|
@@ -37,7 +38,8 @@ def stock_us_famous_spot_em(symbol: str = "科技类") -> pd.DataFrame:
|
|
|
37
38
|
"invt": "2",
|
|
38
39
|
"fid": "f3",
|
|
39
40
|
"fs": f"b:MK{market_map[symbol]}",
|
|
40
|
-
"fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,
|
|
41
|
+
"fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,"
|
|
42
|
+
"f25,f26,f22,f33,f11,f62,f128,f136,f115,f152",
|
|
41
43
|
"_": "1631271634231",
|
|
42
44
|
}
|
|
43
45
|
r = requests.get(url, params=params)
|
|
@@ -111,6 +113,13 @@ def stock_us_famous_spot_em(symbol: str = "科技类") -> pd.DataFrame:
|
|
|
111
113
|
|
|
112
114
|
|
|
113
115
|
if __name__ == "__main__":
|
|
114
|
-
for item in {
|
|
116
|
+
for item in {
|
|
117
|
+
"科技类",
|
|
118
|
+
"金融类",
|
|
119
|
+
"医药食品类",
|
|
120
|
+
"媒体类",
|
|
121
|
+
"汽车能源类",
|
|
122
|
+
"制造零售类",
|
|
123
|
+
}:
|
|
115
124
|
stock_us_famous_spot_em_df = stock_us_famous_spot_em(symbol=item)
|
|
116
125
|
print(stock_us_famous_spot_em_df)
|
akshare/stock/stock_us_pink.py
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date:
|
|
4
|
+
Date: 2024/4/11 17:00
|
|
5
5
|
Desc: 东方财富网-行情中心-美股市场-粉单市场
|
|
6
|
-
|
|
6
|
+
https://quote.eastmoney.com/center/gridlist.html#us_pinksheet
|
|
7
7
|
"""
|
|
8
|
+
|
|
8
9
|
import pandas as pd
|
|
9
10
|
import requests
|
|
10
11
|
|
|
@@ -12,11 +13,11 @@ import requests
|
|
|
12
13
|
def stock_us_pink_spot_em() -> pd.DataFrame:
|
|
13
14
|
"""
|
|
14
15
|
东方财富网-行情中心-美股市场-粉单市场
|
|
15
|
-
|
|
16
|
+
https://quote.eastmoney.com/center/gridlist.html#us_pinksheet
|
|
16
17
|
:return: 粉单市场实时行情
|
|
17
18
|
:rtype: pandas.DataFrame
|
|
18
19
|
"""
|
|
19
|
-
url = "
|
|
20
|
+
url = "https://23.push2.eastmoney.com/api/qt/clist/get"
|
|
20
21
|
params = {
|
|
21
22
|
"pn": "1",
|
|
22
23
|
"pz": "2000",
|
|
@@ -27,7 +28,8 @@ def stock_us_pink_spot_em() -> pd.DataFrame:
|
|
|
27
28
|
"invt": "2",
|
|
28
29
|
"fid": "f3",
|
|
29
30
|
"fs": "m:153",
|
|
30
|
-
"fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,
|
|
31
|
+
"fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,"
|
|
32
|
+
"f26,f22,f33,f11,f62,f128,f136,f115,f152",
|
|
31
33
|
"_": "1631271634231",
|
|
32
34
|
}
|
|
33
35
|
r = requests.get(url, params=params)
|