自动点击标签,用户确认后复制页面内容,结构化为 TSV 并保存为 TXT
// ==UserScript==
// @name Alpha 数据保存器(微信Civilpy)
// @namespace http://tampermonkey.net/
// @version 1.1
// @license MIT
// @description 自动点击标签,用户确认后复制页面内容,结构化为 TSV 并保存为 TXT
// @match https://web3.binance.com/zh-CN/markets/alpha?chain=bsc
// @grant none
// ==/UserScript==
(function () {
'use strict';
const labels = ["1 分钟", "5 分钟", "1 小时", "4 小时", "24 小时"];
let result = "";
let currentIndex = 0;
function insertMainButton() {
const container = document.querySelector(".flex.gap-4.ml-4.mr-6");
if (!container || document.getElementById("alpha-capture-btn")) return;
const btn = document.createElement("button");
btn.id = "alpha-capture-btn";
btn.textContent = "📋 开始标签采集";
btn.style.padding = "6px 12px";
btn.style.marginRight = "12px";
btn.style.backgroundColor = "#f0b90b";
btn.style.color = "#000";
btn.style.border = "none";
btn.style.borderRadius = "4px";
btn.style.cursor = "pointer";
btn.onclick = () => {
currentIndex = 0;
result = "";
processNextLabel();
};
container.prepend(btn);
}
function processNextLabel() {
if (currentIndex >= labels.length) {
saveToFile();
return;
}
const label = labels[currentIndex];
const buttons = Array.from(document.querySelectorAll("button"));
const target = buttons.find(btn => btn.textContent.trim() === label);
if (target) {
target.click();
console.log(`点击标签:${label}`);
setTimeout(() => {
showConfirmButton(label);
}, 3000);
} else {
result += `=== ${label} ===\n⚠️ 未找到对应按钮\n\n`;
currentIndex++;
processNextLabel();
}
}
function showConfirmButton(label) {
let confirmBtn = document.getElementById("confirm-copy-btn");
if (confirmBtn) confirmBtn.remove();
confirmBtn = document.createElement("button");
confirmBtn.id = "confirm-copy-btn";
confirmBtn.textContent = `✅ 确认复制 ${label} 数据`;
confirmBtn.style.position = "fixed";
confirmBtn.style.bottom = "20px";
confirmBtn.style.right = "20px";
confirmBtn.style.zIndex = "9999";
confirmBtn.style.padding = "8px 12px";
confirmBtn.style.backgroundColor = "#00cc66";
confirmBtn.style.color = "#fff";
confirmBtn.style.border = "none";
confirmBtn.style.borderRadius = "4px";
confirmBtn.style.cursor = "pointer";
confirmBtn.onclick = () => {
const text = document.body.innerText;
result += `=== ${label} ===\n${text}\n\n`;
confirmBtn.remove();
currentIndex++;
processNextLabel();
};
document.body.appendChild(confirmBtn);
}
function parseToStructuredCSV(rawText) {
const sections = rawText.split(/===\s*(.*?)\s*===/g);
const rows = [];
for (let i = 1; i < sections.length; i += 2) {
const label = sections[i].trim();
const content = sections[i + 1];
const regex = /([A-Z0-9]+)\s+(\d+d)\s+(0x[a-fA-F0-9\.]+)\s+\$([\d\.]+[MK]?)\s+([\d\.]+K?)\s+([\d\.]+K?)\s+\$([\d\.]+[MK]?)\s+\$([\d\.]+)\s+([+-]?\d+\.\d+%)\s+([\d\.K]+)\s+\$([\d\.]+[MK]?)/g;
let match;
while ((match = regex.exec(content)) !== null) {
rows.push({
时间标签: label,
名称: match[1],
上线天数: match[2],
合约地址: match[3],
市值: match[4],
持币地址: match[5],
流动性地址: match[6],
总市值: match[7],
价格: match[8],
涨跌幅: match[9],
交易笔数: match[10],
成交量: match[11]
});
}
}
const headers = Object.keys(rows[0]);
const csv = [
headers.join('\t'),
...rows.map(row => headers.map(h => row[h]).join('\t'))
].join('\n');
return csv;
}
function saveToFile() {
const csvText = parseToStructuredCSV(result);
const blob = new Blob([csvText], { type: "text/plain" });
const link = document.createElement("a");
link.href = URL.createObjectURL(blob);
link.download = "alpha_tokens_cleaned.txt";
link.click();
}
window.addEventListener("load", () => {
setTimeout(insertMainButton, 3000);
});
})();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址