Dynamic Page Code Scraper with Button

带有启动按钮的 JavaScript 动态页面代码爬取脚本

Versione datata 15/02/2025. Vedi la nuova versione l'ultima versione.

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

// ==UserScript==
// @name         Dynamic Page Code Scraper with Button
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  带有启动按钮的 JavaScript 动态页面代码爬取脚本
// @author       z2004y
// @match        *://*/*
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    const button = document.createElement('button');
    button.textContent = '开始爬取页面代码';
    button.style.cssText = 'position: fixed; top: 10px; right: 10px; z-index: 9999;';
    document.body.appendChild(button);

    button.addEventListener('click', () => {
        // 移除按钮
        button.remove();

        try {
            // 克隆整个文档
            const clonedDocument = document.documentElement.cloneNode(true);

            // 移除所有用户脚本相关的元素
            const userScripts = clonedDocument.querySelectorAll('[data-tampermonkey-script]');
            userScripts.forEach(script => script.remove());

            // 获取清理后的页面 HTML 代码
            const pageHTML = clonedDocument.outerHTML;

            console.log("页面完整 HTML 代码:", pageHTML);

            // 获取页面标题作为文件名
            const pageTitle = clonedDocument.querySelector('head > title').textContent || 'page_code';
            const fileName = `${pageTitle}.html`;

            // 创建 Blob 对象
            const blob = new Blob([pageHTML], { type: 'text/html' });
            const url = URL.createObjectURL(blob);

            // 创建下载链接元素
            const a = document.createElement('a');
            a.href = url;
            a.download = fileName;

            // 模拟点击下载链接
            a.click();

            // 释放临时 URL
            URL.revokeObjectURL(url);
        } catch (error) {
            console.error('在获取或保存页面代码时出现错误:', error);
        }

        // 恢复按钮
        document.body.appendChild(button);
    });
})();