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