akshare 1.16.75__py3-none-any.whl → 1.16.77__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 +4 -1
- akshare/spot/spot_sge.py +10 -1
- akshare/stock_feature/stock_lhb_em.py +118 -1
- {akshare-1.16.75.dist-info → akshare-1.16.77.dist-info}/METADATA +1 -1
- {akshare-1.16.75.dist-info → akshare-1.16.77.dist-info}/RECORD +8 -8
- {akshare-1.16.75.dist-info → akshare-1.16.77.dist-info}/WHEEL +0 -0
- {akshare-1.16.75.dist-info → akshare-1.16.77.dist-info}/licenses/LICENSE +0 -0
- {akshare-1.16.75.dist-info → akshare-1.16.77.dist-info}/top_level.txt +0 -0
akshare/__init__.py
CHANGED
@@ -3084,9 +3084,11 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
|
|
3084
3084
|
1.16.73 fix: fix stock_board_industry_hist_em interface
|
3085
3085
|
1.16.74 fix: fix stock_individual_spot_xq interface
|
3086
3086
|
1.16.75 fix: fix get_qhkc_index interface
|
3087
|
+
1.16.76 fix: fix spot_quotations_sge interface
|
3088
|
+
1.16.77 add: add stock_lhb_yyb_detail_em interface
|
3087
3089
|
"""
|
3088
3090
|
|
3089
|
-
__version__ = "1.16.
|
3091
|
+
__version__ = "1.16.77"
|
3090
3092
|
__author__ = "AKFamily"
|
3091
3093
|
|
3092
3094
|
import sys
|
@@ -3732,6 +3734,7 @@ from akshare.stock_feature.stock_lhb_em import (
|
|
3732
3734
|
stock_lhb_yybph_em,
|
3733
3735
|
stock_lhb_jgstatistic_em,
|
3734
3736
|
stock_lhb_traderstatistic_em,
|
3737
|
+
stock_lhb_yyb_detail_em,
|
3735
3738
|
)
|
3736
3739
|
|
3737
3740
|
"""
|
akshare/spot/spot_sge.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- coding:utf-8 -*-
|
2
2
|
# !/usr/bin/env python
|
3
3
|
"""
|
4
|
-
Date:
|
4
|
+
Date: 2025/4/11 22:00
|
5
5
|
Desc: 上海黄金交易所-数据资讯-行情走势
|
6
6
|
https://www.sge.com.cn/sjzx/mrhq
|
7
7
|
上海黄金交易所-数据资讯-上海金基准价-历史数据
|
@@ -94,6 +94,15 @@ def spot_quotations_sge(symbol: str = "Au99.99") -> pd.DataFrame:
|
|
94
94
|
}
|
95
95
|
)
|
96
96
|
temp_df["现价"] = pd.to_numeric(temp_df["现价"], errors="coerce")
|
97
|
+
# 将更新时间中的时间部分提取出来
|
98
|
+
update_time = temp_df["更新时间"].iloc[0].split()[1]
|
99
|
+
# 将时间列转换为时间格式以便排序
|
100
|
+
temp_df["时间"] = pd.to_datetime(temp_df["时间"], format="%H:%M").dt.time
|
101
|
+
# 过滤掉大于等于更新时间的数据
|
102
|
+
temp_df = temp_df[temp_df["时间"].astype(str) < update_time]
|
103
|
+
# 按时间排序
|
104
|
+
temp_df = temp_df.sort_values(by=["时间"])
|
105
|
+
temp_df.reset_index(inplace=True, drop=True)
|
97
106
|
return temp_df
|
98
107
|
|
99
108
|
|
@@ -480,7 +480,7 @@ def stock_lhb_hyyyb_em(
|
|
480
480
|
"卖出总金额",
|
481
481
|
"总买卖净额",
|
482
482
|
"-",
|
483
|
-
"
|
483
|
+
"营业部代码",
|
484
484
|
"买入股票",
|
485
485
|
"-",
|
486
486
|
"-",
|
@@ -496,6 +496,7 @@ def stock_lhb_hyyyb_em(
|
|
496
496
|
"卖出总金额",
|
497
497
|
"总买卖净额",
|
498
498
|
"买入股票",
|
499
|
+
"营业部代码",
|
499
500
|
]
|
500
501
|
]
|
501
502
|
|
@@ -900,6 +901,119 @@ def stock_lhb_stock_detail_em(
|
|
900
901
|
return temp_df
|
901
902
|
|
902
903
|
|
904
|
+
def stock_lhb_yyb_detail_em(symbol: str = "10188715") -> pd.DataFrame:
|
905
|
+
"""
|
906
|
+
东方财富网-数据中心-龙虎榜单-营业部历史交易明细-营业部交易明细
|
907
|
+
https://data.eastmoney.com/stock/lhb/yyb/10188715.html
|
908
|
+
:param symbol: 营业部代码, 如 "10188715", 通过 ak.stock_lhb_hyyyb_em() 接口获取
|
909
|
+
:type symbol: str
|
910
|
+
:return: 营业部交易明细数据
|
911
|
+
:rtype: pandas.DataFrame
|
912
|
+
"""
|
913
|
+
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
914
|
+
params = {
|
915
|
+
"sortColumns": "TRADE_DATE,SECURITY_CODE",
|
916
|
+
"sortTypes": "-1,1",
|
917
|
+
"pageSize": '100',
|
918
|
+
"pageNumber": "1",
|
919
|
+
"reportName": "RPT_OPERATEDEPT_TRADE_DETAILSNEW",
|
920
|
+
"columns": "ALL",
|
921
|
+
"source": "WEB",
|
922
|
+
"client": "WEB",
|
923
|
+
"filter": f'(OPERATEDEPT_CODE="{symbol}")',
|
924
|
+
}
|
925
|
+
r = requests.get(url, params=params)
|
926
|
+
data_json = r.json()
|
927
|
+
total_page = data_json["result"]["pages"]
|
928
|
+
big_df = pd.DataFrame()
|
929
|
+
tqdm = get_tqdm()
|
930
|
+
for page in tqdm(range(1, total_page + 1), leave=False):
|
931
|
+
params.update({"pageNumber": page})
|
932
|
+
r = requests.get(url, params=params)
|
933
|
+
data_json = r.json()
|
934
|
+
temp_df = pd.DataFrame(data_json["result"]["data"])
|
935
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
936
|
+
|
937
|
+
# 检查DataFrame是否为空
|
938
|
+
if big_df.empty:
|
939
|
+
return pd.DataFrame()
|
940
|
+
|
941
|
+
# 确保列名与实际返回的JSON数据结构一致
|
942
|
+
column_map = {
|
943
|
+
"OPERATEDEPT_CODE": "营业部代码",
|
944
|
+
"OPERATEDEPT_NAME": "营业部名称",
|
945
|
+
"TRADE_DATE": "交易日期",
|
946
|
+
"D1_CLOSE_ADJCHRATE": "1日后涨跌幅",
|
947
|
+
"D2_CLOSE_ADJCHRATE": "2日后涨跌幅",
|
948
|
+
"D3_CLOSE_ADJCHRATE": "3日后涨跌幅",
|
949
|
+
"D5_CLOSE_ADJCHRATE": "5日后涨跌幅",
|
950
|
+
"D10_CLOSE_ADJCHRATE": "10日后涨跌幅",
|
951
|
+
"SECURITY_CODE": "股票代码",
|
952
|
+
"SECURITY_NAME_ABBR": "股票名称",
|
953
|
+
"ACT_BUY": "买入金额",
|
954
|
+
"ACT_SELL": "卖出金额",
|
955
|
+
"NET_AMT": "净额",
|
956
|
+
"EXPLANATION": "上榜原因",
|
957
|
+
"D20_CLOSE_ADJCHRATE": "20日后涨跌幅",
|
958
|
+
"D30_CLOSE_ADJCHRATE": "30日后涨跌幅",
|
959
|
+
"SECUCODE": "证券代码",
|
960
|
+
"OPERATEDEPT_CODE_OLD": "营业部旧代码",
|
961
|
+
"ORG_NAME_ABBR": "营业部简称",
|
962
|
+
"CHANGE_RATE": "涨跌幅"
|
963
|
+
}
|
964
|
+
|
965
|
+
# 重命名列
|
966
|
+
big_df.rename(columns=column_map, inplace=True)
|
967
|
+
|
968
|
+
# 添加序号列
|
969
|
+
big_df.reset_index(inplace=True)
|
970
|
+
big_df["序号"] = big_df.index + 1
|
971
|
+
|
972
|
+
# 选择需要的列并排序
|
973
|
+
result_columns = [
|
974
|
+
"序号",
|
975
|
+
"营业部代码",
|
976
|
+
"营业部名称",
|
977
|
+
"营业部简称",
|
978
|
+
"交易日期",
|
979
|
+
"股票代码",
|
980
|
+
"股票名称",
|
981
|
+
"涨跌幅",
|
982
|
+
"买入金额",
|
983
|
+
"卖出金额",
|
984
|
+
"净额",
|
985
|
+
"上榜原因",
|
986
|
+
"1日后涨跌幅",
|
987
|
+
"2日后涨跌幅",
|
988
|
+
"3日后涨跌幅",
|
989
|
+
"5日后涨跌幅",
|
990
|
+
"10日后涨跌幅",
|
991
|
+
"20日后涨跌幅",
|
992
|
+
"30日后涨跌幅",
|
993
|
+
]
|
994
|
+
|
995
|
+
# 确保所有列都存在
|
996
|
+
for col in result_columns:
|
997
|
+
if col not in big_df.columns and col != "序号":
|
998
|
+
big_df[col] = None
|
999
|
+
|
1000
|
+
big_df = big_df[result_columns]
|
1001
|
+
|
1002
|
+
# 处理日期格式
|
1003
|
+
big_df["交易日期"] = pd.to_datetime(big_df["交易日期"], errors="coerce").dt.date
|
1004
|
+
|
1005
|
+
# 处理数值列
|
1006
|
+
numeric_cols = [
|
1007
|
+
"涨跌幅", "买入金额", "卖出金额", "净额",
|
1008
|
+
"1日后涨跌幅", "2日后涨跌幅", "3日后涨跌幅",
|
1009
|
+
"5日后涨跌幅", "10日后涨跌幅", "20日后涨跌幅", "30日后涨跌幅"
|
1010
|
+
]
|
1011
|
+
for col in numeric_cols:
|
1012
|
+
big_df[col] = pd.to_numeric(big_df[col], errors="coerce")
|
1013
|
+
|
1014
|
+
return big_df
|
1015
|
+
|
1016
|
+
|
903
1017
|
if __name__ == "__main__":
|
904
1018
|
stock_lhb_detail_em_df = stock_lhb_detail_em(
|
905
1019
|
start_date="20250201", end_date="20250228"
|
@@ -949,3 +1063,6 @@ if __name__ == "__main__":
|
|
949
1063
|
symbol="600077", date="20070416", flag="买入"
|
950
1064
|
)
|
951
1065
|
print(stock_lhb_stock_detail_em_df)
|
1066
|
+
|
1067
|
+
stock_lhb_yyb_detail_em_df = stock_lhb_yyb_detail_em(symbol="10188715")
|
1068
|
+
print(stock_lhb_yyb_detail_em_df)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
akshare/__init__.py,sha256=
|
1
|
+
akshare/__init__.py,sha256=RXBBHX6CKjlarg4vC5g_-eS46sWZRJH_d5rX16X9cZ4,193271
|
2
2
|
akshare/datasets.py,sha256=rKuRNZrqi6IMsZ9nyvO3Rx02js0tH3zMLjz8HQNAoPQ,963
|
3
3
|
akshare/exceptions.py,sha256=WEJjIhSmJ_xXNW6grwV4nufE_cfmmyuhmueVGiN1VAg,878
|
4
4
|
akshare/request.py,sha256=HtFFf9MhfEibR-ETWe-1Tts6ELU4VKSqA-ghaXjegQM,4252
|
@@ -232,7 +232,7 @@ akshare/sport/sport_olympic.py,sha256=InkuHz4So8r-0101rUzdro58zsgtr5SLuSxWjiObRG
|
|
232
232
|
akshare/spot/__init__.py,sha256=BvXm1zCReGMWbcANKydbK9uvYzNU-cbReuUYbdDqunI,82
|
233
233
|
akshare/spot/spot_hog_soozhu.py,sha256=IEt7zrDs0ptAKgMA7QRIk45jcMLcA_LGq6Y3lKLFTi0,9397
|
234
234
|
akshare/spot/spot_price_qh.py,sha256=rRv09vR8K0U_x6x8AiLgGluxytIXkLatFNVkFbIh8eQ,3756
|
235
|
-
akshare/spot/spot_sge.py,sha256=
|
235
|
+
akshare/spot/spot_sge.py,sha256=fXy6I9GchX2rfdPDD2wSN8K-hcDdS3ABzLDLdH-9t4Y,8696
|
236
236
|
akshare/stock/__init__.py,sha256=jSa9260d6aNZajaW68chI2mpPkDSXLOgi3eXrqo4MQ8,82
|
237
237
|
akshare/stock/cons.py,sha256=pAMixwmjYARzCVWIxN7RjhjnJMpvLR2OD6mZ-zI7jlM,42990
|
238
238
|
akshare/stock/stock_allotment_cninfo.py,sha256=OVjVdWp2XVRNbJvVgtgVVoBmPBJgBB4RyIIgA_9QHM8,6066
|
@@ -335,7 +335,7 @@ akshare/stock_feature/stock_inner_trade_xq.py,sha256=XNeQheeWcjdhuvfO2NWt_m191HX
|
|
335
335
|
akshare/stock_feature/stock_irm_cninfo.py,sha256=xD028gllzaHYj6xU9pRKvSLI_gIkVhCTnFH0dSPv1gY,6112
|
336
336
|
akshare/stock_feature/stock_jgdy_em.py,sha256=B39Il7p1a_hx0FXL4zo_Xsxi10Z8W7_EZv8f9nNnwXg,6080
|
337
337
|
akshare/stock_feature/stock_lh_yybpm.py,sha256=7VlqA-UGbfiQ4ez7Ah9znIfUcVI-7Fxxz_V03JO8LTY,3614
|
338
|
-
akshare/stock_feature/stock_lhb_em.py,sha256=
|
338
|
+
akshare/stock_feature/stock_lhb_em.py,sha256=0zQVJAI6Q2-fByX45-DpC_2KF3sU9lVvcC-ds0IM0_k,38237
|
339
339
|
akshare/stock_feature/stock_lhb_sina.py,sha256=W5F5aPlxAmHzzxcf1AAiJuMVtTK9PlYMo_XamCZ5N1o,9232
|
340
340
|
akshare/stock_feature/stock_margin_em.py,sha256=DRuZ3nwtpYq55Yq3WF8jFlj4xEou3bf9krcc_JbJOPM,3327
|
341
341
|
akshare/stock_feature/stock_margin_sse.py,sha256=0Lq9dS21cJVMNMM-L1aEnsnO3V-0BSOr7kwEl9s9YEU,6804
|
@@ -394,10 +394,10 @@ akshare/utils/func.py,sha256=4cwmXFztU86yJNONJ40KJLvsIEQHBbct4iMm3zT2v30,2315
|
|
394
394
|
akshare/utils/multi_decrypt.py,sha256=aWoL2iEPeuXHJg8-n7OtMKixLnIhfzepACgxfrfmQB4,1657
|
395
395
|
akshare/utils/token_process.py,sha256=nGtgnZGRprXJkhLXH8mcUH4TgIFwzsTOb0EaEPa0Euo,667
|
396
396
|
akshare/utils/tqdm.py,sha256=MuPNwcswkOGjwWQOMWXi9ZvQ_RmW4obCWRj2i7HM7FE,847
|
397
|
-
akshare-1.16.
|
397
|
+
akshare-1.16.77.dist-info/licenses/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
|
398
398
|
tests/__init__.py,sha256=gNzhlO0UPjFq6Ieb38kaVIODXv4cTDByrdohAZnDYt4,82
|
399
399
|
tests/test_func.py,sha256=j1MGYbZI2if2j_LY1S4FLsf4qfq4NwVqD5wmRlv5Log,832
|
400
|
-
akshare-1.16.
|
401
|
-
akshare-1.16.
|
402
|
-
akshare-1.16.
|
403
|
-
akshare-1.16.
|
400
|
+
akshare-1.16.77.dist-info/METADATA,sha256=Vxm0tm1qOq0EJhThxsTicBe2_b3ZbLRLcl9PPyqYjn0,12591
|
401
|
+
akshare-1.16.77.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
402
|
+
akshare-1.16.77.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
|
403
|
+
akshare-1.16.77.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|