吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 482|回复: 3
收起左侧

[Python 原创] 使用 python代码下载蓝海密剑账户各年份数据

[复制链接]
healwilson 发表于 2024-12-25 13:03
目标网址:https://www.lhmj.org/

使用ai工具辅助编写,具体代码如下:

[Python] 纯文本查看 复制代码
import requests
import pandas as pd
from datetime import datetime
import urllib3
import tkinter as tk
from tkinter import simpledialog
import os
import time

# 禁用SSL警告
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

# 创建一个弹窗获取用户输入的uid
def get_uid():
    # 创建Tkinter根窗口
    root = tk.Tk()
    root.geometry("340x170")  # 设置弹窗窗口大小
    root.withdraw()  # 隐藏主窗口
    uid = simpledialog.askstring("输入UID", "请输入UID:", parent=root)
    return uid

# 获取用户输入的uid
uid = get_uid()

# 定义获取数据的函数
def get_data(url, sheet_name, writer):
    response = requests.get(url, verify=False)

    if response.status_code == 200:
        try:
            data = response.json()  # 尝试解析为JSON

            # 检查返回的code是否为0
            if data.get("code") == 0:
                print(f"跳过工作表 '{sheet_name}',因为返回的 code 为 0")
                return

            # 确保数据格式为字典
            if isinstance(data, dict) and "data" in data:
                if not data["data"]:  # 检查data是否为空
                    print(f"{sheet_name} 无数据,跳过")
                    return

                if "dateList" in data["data"]:
                    datelist = data["data"]["dateList"]
                    netValueList = data["data"]["netValueList"]
                    positionStatusList = data["data"]["positionStatusList"]

                    df = pd.DataFrame({
                        "时间": datelist,
                        "净值": netValueList,
                        "仓位": positionStatusList
                    })

                    # 写入工作表
                    df.to_excel(writer, sheet_name=sheet_name, index=False)
                    print(f"{sheet_name} 数据已成功导出到工作表 '{sheet_name}'")
                else:
                    print(f"{sheet_name} 无数据,跳过")
            else:
                print(f"数据格式不正确或为空,不能导出到工作表 '{sheet_name}'")

        except ValueError:
            print(f"请求返回的内容不是有效的 JSON 格式,跳过工作表 '{sheet_name}'")
        except Exception as ex:
            print(f"处理请求时发生错误: {ex}")

    else:
        print(f"请求失败,状态码: {response.status_code}")

# 设置请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0'
}

# 发送请求获取用户详细信息(以便命名文件)
url0 = f"https://www.lhmj.org/api/public/user/detail.do?id={uid}&userType=1"
response0 = requests.get(url0, verify=False)

# 获取当前脚本所在的文件夹路径
current_folder = os.path.dirname(os.path.abspath(__file__))

# 初始化文件名变量
filename = ""

if response0.status_code == 200:
    data0 = response0.json()
    user_name = data0["data"]["userName"]  # 获取 username
    current_time = datetime.now().strftime("%Y%m%d")  # 格式化为 YYYYMMDD
    filename = os.path.join(current_folder, f"{user_name}_{current_time}.xlsx")  # 更新文件名

    # 创建一个Excel写入器
    with pd.ExcelWriter(filename) as writer:
        # 循环请求从2009年到2023年的数据
        for year in range(1, 16):  # 从1到15对应2009年到2023年
            url = f"https://www.lhmj.org/api/public/prev/detail.do?id={uid}&userType=1&series={year}"
            sheet_name = str(2009 + (year - 1))  # 计算对应的年份(2009, 2010, ..., 2023)
            get_data(url, sheet_name, writer)

        # 添加2024年数据请求
        url_2024 = f"https://www.lhmj.org/api/public/user/detail.do?id={uid}&userType=1"  # 2024年数据链接
        response_2024 = requests.get(url_2024, verify=False)

        # 处理2024年的数据
        if response_2024.status_code == 200:
            data_2024 = response_2024.json()  # 提取JSON数据

            # 检查数据是否为空
            if "data" in data_2024 and data_2024["data"]:
                cws = data_2024["data"]["cws"]
                dwjzs = data_2024["data"]["dwjzs"]
                times = data_2024["data"]["times"]

                # 创建一个DataFrame,并加入header
                df_2024 = pd.DataFrame({
                    "时间": times,    # Header: 时间
                    "净值": dwjzs,    # Header: DWJZ值
                    "仓位": cws       # Header: CWS值
                })

                # 将2024年的数据写入Excel的"2024"工作表
                df_2024.to_excel(writer, sheet_name="2024", index=False)
                print("2024 数据已成功导出到工作表 '2024'")
            else:
                print("2024年无数据,跳过")
        else:
            print("请求失败,状态码:", response_2024.status_code)

else:
    print("请求失败,状态码:", response0.status_code)

if filename:
    print(f"所有数据已成功导出到文件: {filename}")
    time.sleep(5)  # 等待5秒后关闭窗口


使用方法,将网址中对应的UID填入弹窗即可。
image.png

新手学习,如果有更好的方法欢迎各位大神多交流指正。

免费评分

参与人数 3吾爱币 +9 热心值 +3 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
hfol85 + 1 + 1 热心回复!
helian147 + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

tche 发表于 2024-12-25 17:54
感谢楼主分享
cyfwapj 发表于 2024-12-25 21:44
hbu126 发表于 2024-12-25 22:11
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-7 19:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表