当前位置:首页>python>Python 获取开盘啦涨停大回撤个股

Python 获取开盘啦涨停大回撤个股

  • 2026-10-11 07:38:08
Python 获取开盘啦涨停大回撤个股

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

#!/usr/bin/env python3

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

"""

长虎爬虫模块

功能:

1. 抓取 https://apphwhq.longhuvip.com/w1/api/index.php 接口数据,

2. 自动处理 gzip 解码及 JSON 解析,

3. 在终端中以表格形式打印数据。

"""

importrequests

# 尝试引入 tabulate 库,用于美化终端表格打印;若未安装则自动采用手动格式化打印

try:

fromtabulateimporttabulate

exceptImportError:

tabulate=None

classLonghuCrawler:

"""

    长虎爬虫类,用于抓取并解析接口数据

    """

def__init__(self, base_url="https://apphwhq.longhuvip.com"):

self.base_url=base_url

self.headers= {

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

"Accept": "*/*",

"Connection": "keep-alive",

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

"User-Agent": "lhb/5.18.1 (com.kaipanla.www; build:0; iOS 16.3.1) Alamofire/4.9.1"

        }

deffetch_sharp_withdrawal_list(self, params=None):

"""

        获取 SharpWithdrawalList 数据

        :param params: 请求参数字典,如为空则使用默认参数

        :return: JSON 数据,若请求异常返回 None

        """

# 默认参数设置

ifparamsisNone:

params= {

"Index": "0",

"Order": "0",

"PhoneOSNew": "2",

"Type": "5",

"VerSion": "5.18.0.1",

"a": "SharpWithdrawalList",

"apiv": "w39",

"c": "HomeDingPan",

"st": "7"

            }

url=self.base_url+"/w1/api/index.php"

try:

response=requests.get(url, headers=self.headers, params=params, timeout=10)

response.raise_for_status()  # 检查请求状态

# 自动处理 gzip 解码,并转换为 JSON

data=response.json()

returndata

exceptExceptionase:

print("请求过程中发生异常:", e)

returnNone

defprint_table_with_tabulate(data):

"""

    使用 tabulate 库在终端打印表格

    :param data: 接口返回的 JSON 数据

    """

if"info"notindata:

print("没有表格数据")

return

# 根据实际字段含义自定义表头

headers= ["代码", "名称", "标识", "描述", "价格", "最大回撤", "涨幅"]

rows=data["info"]

print(tabulate(rows, headers=headers, tablefmt="grid"))

defprint_table_manual(data):

"""

    手动格式化打印表格(若 tabulate 库不可用时)

    :param data: 接口返回的 JSON 数据

    """

if"info"notindata:

print("没有表格数据")

return

headers= ["代码", "名称", "标识", "描述", "参数1", "参数2", "参数3"]

rows=data["info"]

# 计算每列的最大宽度

col_widths= [len(header) forheaderinheaders]

forrowinrows:

fori, cellinenumerate(row):

col_widths[i] =max(col_widths[i], len(str(cell)))

# 打印表头

header_line=" | ".join(header.ljust(col_widths[i]) fori, headerinenumerate(headers))

separator_line="-+-".join("-"*col_widths[i] foriinrange(len(headers)))

print(header_line)

print(separator_line)

# 打印每一行数据

forrowinrows:

print(" | ".join(str(cell).ljust(col_widths[i]) fori, cellinenumerate(row)))

defmain():

"""

    主函数:创建爬虫实例,抓取数据,并以表格形式打印至终端

    """

crawler=LonghuCrawler()

data=crawler.fetch_sharp_withdrawal_list()

ifdata:

print("抓取数据成功:")

iftabulate:

print_table_with_tabulate(data)

else:

print_table_manual(data)

else:

print("抓取数据失败。")

if__name__=="__main__":

main()

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

最新文章

随机文章