除了https://www.define.fi/new如何知道新的代币(智能合约)?

问题描述 投票:0回答:1

我想比 Defined.fi/new 更快地获取新代币的名称列表

我只知道 Defined.fi/new。 但不仅仅是更快,我必须使用哪个网站或抓取工具? 对于新的代币列表,我想通过抓取工具或程序获取名称。 你能帮我吗?

javascript python html node.js smartcontracts
1个回答
0
投票

我认为你可以使用node.js轻松获得新的令牌列表。这是我的工作。

const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');

// Use stealth plugin to avoid detection
puppeteer.use(StealthPlugin());

(async () => {
    const url = 'https://www.defined.fi/new';

    const chromePath = 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe';
    const userDataDir = 'C:\\Users\\<YourUsername>\\AppData\\Local\\Google\\Chrome\\User Data\\Default';

    // Launch Puppeteer with your existing Chrome profile
    const browser = await puppeteer.launch({
        headless: true, 
        executablePath: chromePath, 
        args: [
            `--user-data-dir=${userDataDir}`, 
            '--start-maximized', 
            '--disable-blink-features=AutomationControlled',
        ],
    });

    const page = await browser.newPage();
    
    await page.goto(url, { waitUntil: 'networkidle0', timeout: 0 }); // No timeout        

    try {
        async function monitorElements(page, elementSelector) {
            let intervalID;

            try {
                intervalID = setInterval(async () => {
                    try {
                        const elements = await page.$$(elementSelector);
                        if (elements.length >= 2) {
                            await elements[1].hover();
                        }
                    } catch (error) {                            
                    }
                }, 3001);
            } catch (error) {
            }
                
            process.on("SIGINT", () => {
                clearInterval(intervalID);                    
                process.exit(0);
            });
        }    
        
        await page.exposeFunction("processTooltip", (tooltipText) => {
            const matches = [...tooltipText.matchAll(/([a-zA-Z ]+)([\d.,]+[KMGTBQ]?)/g)];
            const formattedTooltip = matches.map(([_, key, value]) => `${key.trim()}: ${value.trim()}`);                

            matches.forEach(([_, key, value]) => {
                const numericValue = parseFloat(
                    value.replace(/,/g, "").replace("M", "e6").replace("B", "e9")
                ); 
            });
        });

        // Monitor tooltips dynamically using MutationObserver
        await page.evaluate(() => {
            const observer = new MutationObserver((mutations) => {
                mutations.forEach((mutation) => {
                    mutation.addedNodes.forEach((node) => {
                        if (node.nodeType === 1 && node.matches('div[role="tooltip"]')) {
                            setTimeout(() => {
                                window.processTooltip(node.textContent.trim());
                            }, 500); 
                        }
                    });
                });
            });

            observer.observe(document.body, { childList: true, subtree: true });
            console.log("Observer initialized. Waiting for tooltips...");
        });

        const elementSelector = '.cell-inner .MuiTypography-root[data-sentry-element="EllipsisText"]';
        await monitorElements(page, elementSelector);
    } catch (error) {
        console.error('Error occurred:', error);
    } finally {
        // Uncomment this to close the browser after testing
        // await browser.close();
    }
})();
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.