CC98查询粉丝的变动

自动获取所有粉丝名字

当前为 2024-12-29 提交的版本,查看 最新版本

// ==UserScript==
// @name         CC98查询粉丝的变动
// @namespace    http://tampermonkey.net/
// @version      4.4
// @description  自动获取所有粉丝名字
// @author       Lay
// @match        https://www.cc98.org/usercenter/myfans
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @license      AGPL -3.0 
// @grant        GM_xmlhttpRequest
// ==/UserScript==
(function () {
    'use strict';

    // 提取总页数
    function getTotalPages() {
        const pageCountElement = document.querySelector('#userCenterPageCount ul');
        let totalPages = 0;

        if (pageCountElement) {
            const pageItems = pageCountElement.querySelectorAll('li');
            totalPages = pageItems.length;
            console.log(`总页数: ${totalPages}`);
        } else {
            console.error('无法找到总页数元素');
        }

        return totalPages;
    }

    // 获取所有分页链接
    function getAllPageLinks() {
        const baseUrl = window.location.origin;
        const currentPath = '/usercenter/myfans'; // 确保路径总是 /usercenter/myfans
        const totalPages = getTotalPages();

        if (totalPages === 0) {
            console.error("未能获取到总页数,请检查 DOM 结构或页面加载情况。");
            return [];
        }

        let links = [];
        for (let i = 1; i <= totalPages; i++) {
            links.push(`${baseUrl}${currentPath}?page=${i}`); // 修改分页链接形式
        }

        console.log("生成的分页链接:", links);
        return links;
    }

    // 提取粉丝信息
    function getFansFromCurrentPage(doc) {
        let fanElements = doc.querySelectorAll('.user-center-myfollowings-user');
        let fans = Array.from(fanElements).map(el => {
            let name = el.querySelector('.user-center-myfollowings-user-id a').textContent.trim();
            let posts = el.querySelector('.user-center-myfollowings-user-posts').textContent.trim();
            let followers = el.querySelector('.user-center-myfollowings-user-fans').textContent.trim();
            return { name, posts, followers };
        });

        console.log("当前页粉丝信息:", fans);
        return fans;
    }

    // 抓取所有粉丝信息
    async function scrapeAllFans() {
        let allFans = [];
        let links = getAllPageLinks();

        for (let i = 0; i < links.length; i++) {
            console.log(`正在抓取第 ${i + 1} 页...`);
            let doc = await fetchPage(links[i]);
            let fans = getFansFromCurrentPage(doc);
            allFans = allFans.concat(fans);
        }

        console.log("所有粉丝信息:", allFans);
        alert(`共抓取到 ${allFans.length} 位粉丝的信息!`);
    }

    // 使用 XMLHttpRequest 抓取页面内容
    async function fetchPage(url) {
        return new Promise((resolve, reject) => {
            GM_xmlhttpRequest({
                method: "GET",
                url: url,
                onload: function (response) {
                    if (response.status === 200) {
                        let parser = new DOMParser();
                        let doc = parser.parseFromString(response.responseText, 'text/html');
                        resolve(doc); // 解析 HTML 返回 DOM 对象
                    } else {
                        reject(`Failed to fetch page: ${url}`);
                    }
                },
                onerror: function () {
                    reject(`Error fetching page: ${url}`);
                }
            });
        });
    }

    // 延迟执行脚本
    setTimeout(function () {
        console.log("脚本已延迟执行");

        // 执行抓取粉丝信息
        scrapeAllFans();

    }, 1000);  // 延迟 1000 毫秒 (1秒)

})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址