Merge pull request #34 from hhaishen/main

- 修复深市指数数据获取异常 & 暂时禁用北向资金模块(北向资金数据已停止公布)
- fix #54
This commit is contained in:
mumu
2026-01-16 21:48:00 +08:00
committed by GitHub

View File

@@ -88,12 +88,12 @@ class MarketAnalyzer:
# 主要指数代码
MAIN_INDICES = {
'000001': '上证指数',
'399001': '深证成指',
'399006': '创业板指',
'000688': '科创50',
'000016': '上证50',
'000300': '沪深300',
'sh000001': '上证指数',
'sz399001': '深证成指',
'sz399006': '创业板指',
'sh000688': '科创50',
'sh000016': '上证50',
'sh000300': '沪深300',
}
def __init__(self, search_service: Optional[SearchService] = None, analyzer=None):
@@ -128,7 +128,7 @@ class MarketAnalyzer:
self._get_sector_rankings(overview)
# 4. 获取北向资金(可选)
self._get_north_flow(overview)
# self._get_north_flow(overview)
return overview
@@ -139,8 +139,8 @@ class MarketAnalyzer:
try:
logger.info("[大盘] 获取主要指数实时行情...")
# 使用 akshare 获取指数行情
df = ak.stock_zh_index_spot_em()
# 使用 akshare 获取指数行情(新浪财经接口,包含深市指数)
df = ak.stock_zh_index_spot_sina()
if df is not None and not df.empty:
for code, name in self.MAIN_INDICES.items():
@@ -245,26 +245,26 @@ class MarketAnalyzer:
except Exception as e:
logger.error(f"[大盘] 获取板块涨跌榜失败: {e}")
def _get_north_flow(self, overview: MarketOverview):
"""获取北向资金流入"""
try:
logger.info("[大盘] 获取北向资金...")
# def _get_north_flow(self, overview: MarketOverview):
# """获取北向资金流入"""
# try:
# logger.info("[大盘] 获取北向资金...")
# 获取北向资金数据
df = ak.stock_hsgt_north_net_flow_in_em(symbol="北上")
# # 获取北向资金数据
# df = ak.stock_hsgt_north_net_flow_in_em(symbol="北上")
if df is not None and not df.empty:
# 取最新一条数据
latest = df.iloc[-1]
if '当日净流入' in df.columns:
overview.north_flow = float(latest['当日净流入']) / 1e8 # 转为亿元
elif '净流入' in df.columns:
overview.north_flow = float(latest['净流入']) / 1e8
# if df is not None and not df.empty:
# # 取最新一条数据
# latest = df.iloc[-1]
# if '当日净流入' in df.columns:
# overview.north_flow = float(latest['当日净流入']) / 1e8 # 转为亿元
# elif '净流入' in df.columns:
# overview.north_flow = float(latest['净流入']) / 1e8
logger.info(f"[大盘] 北向资金净流入: {overview.north_flow:.2f}亿")
# logger.info(f"[大盘] 北向资金净流入: {overview.north_flow:.2f}亿")
except Exception as e:
logger.warning(f"[大盘] 获取北向资金失败: {e}")
# except Exception as e:
# logger.warning(f"[大盘] 获取北向资金失败: {e}")
def search_market_news(self) -> List[Dict]:
"""