# summerrain **Repository Path**: assessm/summerrain ## Basic Information - **Project Name**: summerrain - **Description**: 小狗头ETF账户持仓情况 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-13 - **Last Updated**: 2026-07-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 腾讯行情API获取方式 ## 请求地址 ``` https://qt.gtimg.cn/q=股票代码列表 ``` 多个股票用逗号分隔: ``` https://qt.gtimg.cn/q=sz300825,sh600584,sz000875 ``` ## 股票代码规则 | 前缀 | 市场 | 示例 | |-----|------|------| | sh | 上海主板/科创板 | sh600584, sh688035 | | sz | 深圳主板/创业板 | sz000875, sz300825 | ## 返回数据格式 腾讯返回的是一段 JavaScript 代码,执行后会将数据挂载到 `window.v_股票代码` 变量: ```javascript v_sz300825="1~阿尔特~10.93~10.71~10.82~10.80~10.85~10.83~10.78~10.71~10.71~115600~115621~10.80~10.83~10.83~~10.93~10.71~2026-01-22 15:00:00~01~10.93~10.71~~G~01~~~-~~-~~~-~~-~~-~~-~"; ``` ## 字段解析 以 `~` 分隔: | 索引 | 字段 | 说明 | |-----|------|------| | 0 | 未知标志 | 通常为1 | | 1 | 股票名称 | "阿尔特" | | 2 | 昨收价 | 昨日收盘价 | | 3 | **现价** | 当前价格 | | 4 | 买入价 | 买一价 | | 5 | 卖出价 | 卖一价 | | 30 | 日期时间 | 数据时间 | ## 前端获取示例 由于跨域限制,使用 JSONP 方式: ```javascript // 1. 动态创建 script 标签 const script = document.createElement('script'); script.src = `https://qt.gtimg.cn/q=${codes}&_t=${Date.now()}`; document.head.appendChild(script); // 2. 腾讯返回的 JS 会执行:window.v_sz300825 = "..." // 3. 通过 window 对象获取数据 const value = window['v_sz300825']; const price = value.split('~')[3]; // 现价 ``` ## 实际代码片段 ```javascript async function fetchStockData() { const codes = ['sz300825', 'sh600584'].join(','); const url = `https://qt.gtimg.cn/q=${codes}&_t=${Date.now()}`; return new Promise((resolve, reject) => { const script = document.createElement('script'); script.src = url; script.onload = () => { setTimeout(() => { const result = {}; codes.split(',').forEach(code => { const value = window[`v_${code}`]; if (value) { const fields = value.split('~'); result[code] = { name: fields[1], preClose: parseFloat(fields[2]), price: parseFloat(fields[3]) }; } }); document.head.removeChild(script); resolve(result); }, 100); }; script.onerror = () => { document.head.removeChild(script); reject(new Error('加载失败')); }; document.head.appendChild(script); }); } ```