灵猴市集Linghou Market

同花顺热股榜

同花顺ths-hot-rank

用途 读取同花顺热股榜页面中的热门股票列表,返回排名、名称、涨跌幅、热度和标签。 执行前提 请先打开同花顺热股榜页面,或 eq.10jqka.com.cn 域名下的页面:https://eq.10jqka.com.cn/webpage/ths-hot-list/index.html?showStatusBar=true。脚本读取当前热股榜 DOM;如果在同…

热股榜单股票
版本1.0.0
扫描passed
更新2026-06-28
超时30000ms

匹配范围

*://eq.10jqka.com.cn/*

排除范围

未声明

能力声明

dom.read

代码

源码已展开
1return await (async () => {2  const targetUrl = "https://eq.10jqka.com.cn/webpage/ths-hot-list/index.html?showStatusBar=true";3  const input = typeof params === "object" && params ? params : {};4  const limitValue = Number(input.limit);5  const limit = Math.max(1, Math.min(Number.isFinite(limitValue) ? Math.trunc(limitValue) : 20, 100));6 7  const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));8  const cleanText = (node) => (node?.textContent || "").replace(/\s+/g, " ").trim();9  const sameTarget = () => location.href.startsWith(targetUrl);10 11  if (!sameTarget()) {12    location.assign(targetUrl);13  }14 15  const startedAt = Date.now();16  while (Date.now() - startedAt < 15000) {17    const hasRows = document.querySelector("div.pt-22.pb-24.bgc-white.border div.flex.bgc-white");18    const blockedText = document.body?.innerText || "";19    if (hasRows || /验证|captcha|访问过于频繁|安全/.test(blockedText)) break;20    await sleep(250);21  }22 23  const cards = document.querySelectorAll("div.pt-22.pb-24.bgc-white.border");24  const results = [];25  const seen = new Set();26 27  cards.forEach((card, index) => {28    const row = card.querySelector("div.flex.bgc-white");29    if (!row) return;30 31    const name = cleanText(row.querySelector("span.ellipsis"));32    if (!name || seen.has(name)) return;33    seen.add(name);34 35    const tags = Array.from(card.querySelectorAll("div.tag.PFSC-R"))36      .map((item) => cleanText(item))37      .filter(Boolean);38 39    results.push({40      rank: cleanText(row.querySelector("div.THSMF-M.bold")) || String(index + 1),41      name,42      changePercent: cleanText(row.querySelector("div.range")),43      heat: cleanText(row.querySelector("div.col4 > span")),44      tags,45      url: location.href,46    });47  });48 49  return {50    sourceUrl: targetUrl,51    count: Math.min(results.length, limit),52    items: results.slice(0, limit),53  };54})();