当前位置:首页>python>Python 获取开盘啦盘口信息

Python 获取开盘啦盘口信息

  • 2026-10-11 07:35:54
Python 获取开盘啦盘口信息

戳上方蓝字“逻辑为金”关注我

# -*- coding: utf-8 -*-

"""

龙湖榜 / 开盘啦盘口接口终端打印版 V1.1

功能:

1. 直接复现你提供的抓包请求;

2. 不保存文件,只打印到终端;

3. 不要求运行时输入机器码;

4. 支持修改股票代码;

5. 输出关键盘口字段 + 完整原始 JSON。

注意:

- 仅用于个人学习、接口分析、数据定位。

- 不要高频请求,不要批量压测。

"""

from__future__importannotations

importjson

importtime

fromtypingimportAny, Dict, List

importrequests

# =========================

# 1. 配置区:主要改这里

# =========================

接口地址="https://apphwhq.longhuvip.com/w1/api/index.php"

股票代码列表: List[str] = [

"002457",

]

请求超时时间=10

# 是否打印完整原始 JSON

打印完整JSON=True

# 多只股票之间的等待秒数,低频即可

请求间隔秒数=1.0

# =========================

# 2. 请求头:来自你提供的抓包

# =========================

请求头= {

"Host": "apphwhq.longhuvip.com",

"Content-Type": "application/x-www-form-urlencoded; charset=utf-8",

"Connection": "keep-alive",

"Accept": "*/*",

"User-Agent": "lhb/5.23.1 (com.kaipanla.www; build:1; iOS 18.7.7) Alamofire/4.9.1",

"Accept-Language": "zh-Hans-CN;q=1.0",

"Accept-Encoding": "gzip;q=1.0, compress;q=0.5",

}

# =========================

# 3. 请求参数

# =========================

def构造请求参数(股票代码: str) -> Dict[str, Any]:

"""

    按照你抓包里的 POST Form 参数构造请求。

    这里不再要求你手动输入机器码,直接按抓包参数请求。

    """

return {

"PhoneOSNew": "2",

"State": "1",

"StockID": 股票代码,

"Token": "0",

"UserID": "0",

"VerSion": "5.23.0.1",

"a": "GetStockPanKou_Narrow",

"apiv": "w44",

"c": "StockL2Data",

    }

# =========================

# 4. 工具函数

# =========================

def安全取值(数据: Dict[str, Any], 键: str, 默认值: Any="-") -> Any:

ifnotisinstance(数据, dict):

return默认值

return数据.get(键, 默认值)

def格式化行情时间(原始时间: Any) -> str:

"""

    接口返回示例:95954000

    解析为:09:59:54.000

    """

if原始时间in (None, "-", ""):

return"-"

文本=str(原始时间).zfill(9)

try:

小时=文本[0:2]

分钟=文本[2:4]

秒=文本[4:6]

毫秒=文本[6:9]

returnf"{小时}:{分钟}:{秒}.{毫秒}"

exceptException:

returnstr(原始时间)

def打印盘口摘要(数据: Dict[str, Any]) -> None:

"""

    打印核心盘口字段。

    """

实时=数据.get("real", {}) or {}

print("="*80)

print("盘口数据摘要")

print("="*80)

print(f"交易日期:{安全取值(数据, 'day')}")

print(f"股票代码:{安全取值(数据, 'code')}")

print(f"股票名称:{安全取值(数据, 'name')}")

print(f"昨收价:{安全取值(数据, 'preclose_px')}")

print(f"状态码:{安全取值(数据, 'status')}")

print(f"错误码:{安全取值(数据, 'errcode')}")

print(f"服务端时间戳:{安全取值(数据, 'ts')}")

print("-"*80)

行情时间=格式化行情时间(安全取值(实时, "time"))

print(f"行情时间:{行情时间}")

print(f"最新价:{安全取值(实时, 'last_px')}")

print(f"涨跌额:{安全取值(实时, 'px_change')}")

print(f"涨跌幅:{安全取值(实时, 'px_change_rate')}%")

print(f"开盘价:{安全取值(实时, 'open_px')}")

print(f"最高价:{安全取值(实时, 'high_px')}")

print(f"最低价:{安全取值(实时, 'low_px')}")

print(f"均价:{安全取值(实时, 'avg_px')}")

print("-"*80)

print(f"涨停价:{安全取值(实时, 'up_px')}")

print(f"跌停价:{安全取值(实时, 'down_px')}")

print(f"振幅:{安全取值(实时, 'amplitude')}%")

print(f"换手率:{安全取值(实时, 'turnover_ratio')}%")

print(f"量比:{安全取值(实时, 'vol_ratio')}")

print(f"委比:{安全取值(实时, 'entrust_rate')}%")

print("-"*80)

print(f"成交量 total_amount:{安全取值(实时, 'total_amount')}")

print(f"成交额 total_turnover:{安全取值(实时, 'total_turnover')}")

print(f"主动买入 amount_in:{安全取值(实时, 'amount_in')}")

print(f"主动卖出 amount_out:{安全取值(实时, 'amount_out')}")

print("-"*80)

print(f"流通市值:{安全取值(实时, 'circulation_value')}")

print(f"总市值:{安全取值(实时, 'market_value')}")

print(f"实际流通市值:{安全取值(实时, 'actualcirculation_value')}")

print(f"市净率:{安全取值(实时, 'dyn_pb_rate')}")

print(f"市盈率:{安全取值(实时, 'pe_rate')}")

print(f"TTM市盈率:{安全取值(实时, 'TTMPeRate')}")

print("="*80)

# =========================

# 5. 请求函数

# =========================

def获取盘口数据(session: requests.Session, 股票代码: str) -> Dict[str, Any]:

"""

    请求单只股票盘口数据。

    """

响应=session.post(

接口地址,

headers=请求头,

data=构造请求参数(股票代码),

timeout=请求超时时间,

    )

print(f"HTTP状态码:{响应.status_code}")

响应.raise_for_status()

try:

return响应.json()

exceptjson.JSONDecodeError:

print("接口返回内容不是 JSON,原始文本如下:")

print(响应.text)

raise

# =========================

# 6. 主程序

# =========================

def主程序() -> None:

print("龙湖榜 / 开盘啦盘口接口终端打印版 V1.1")

print(f"股票数量:{len(股票代码列表)}")

print()

withrequests.Session() assession:

for序号, 股票代码inenumerate(股票代码列表, start=1):

print(f"\n正在请求第 {序号}/{len(股票代码列表)} 只股票:{股票代码}")

try:

数据=获取盘口数据(session, 股票代码)

打印盘口摘要(数据)

if打印完整JSON:

print("\n完整原始 JSON:")

print(json.dumps(数据, ensure_ascii=False, indent=2))

exceptExceptionas错误:

print(f"请求失败:{股票代码}")

print(f"错误信息:{错误}")

if序号<len(股票代码列表):

time.sleep(请求间隔秒数)

if__name__=="__main__":

主程序()

免责声明:本文代码仅为学习交流之用
感谢阅读,如果觉得不错就点个赞和在看吧。

最新文章

随机文章