You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript捕获网页文本导出CSV:错误处理与列拆分问题求助

修复Google网页文本导出CSV的UserScript问题

原代码存在两个核心问题:

  • 文本捕获逻辑完全无效:用逗号运算符定义的text只会返回最后一个值,而且根本没有从网页实际抓取内容,就算网页里没有目标词汇也会导出无效数据
  • CSV列拆分错误:导出时把所有内容塞进同一列,无法按Word1、Word2、Word3的标题拆分到对应列

以下是修复后的完整代码:

// ==UserScript==
// @name         Google Text to CSV
// @namespace    http://your-website.com
// @version      1.1
// @description  Capture specific words from Google's webpage and export it to a properly formatted CSV file
// @author       Your Name
// @match        https://www.google.com/*
// @grant        GM_download
// ==/UserScript==

(function() {
    'use strict';

    // 从Google网页捕获指定文本
    function captureTextFromGoogle() {
        // 抓取Google首页的三个目标元素文本
        const word1Element = document.querySelector('img[alt="Google"]');
        const word2Element = document.querySelector('input[aria-label="Search"]');
        const word3Element = document.querySelector('input[value="I\'m Feeling Lucky"]');

        // 检查元素是否存在,不存在则抛出错误
        if (!word1Element) throw new Error("无法找到Word1对应的元素");
        if (!word2Element) throw new Error("无法找到Word2对应的元素");
        if (!word3Element) throw new Error("无法找到Word3对应的元素");

        // 提取文本并返回数组
        return [
            word1Element.alt,
            word2Element.getAttribute('aria-label'),
            word3Element.value
        ];
    }

    // 将捕获的文本导出为格式化CSV
    function exportToCSV(textArray) {
        // 定义CSV表头和内容,按列对应
        const headers = ['Word1', 'Word2', 'Word3'];
        const csvContent = [
            headers.join(','),
            textArray.map(item => `"${item.replace(/"/g, '""')}"`).join(',')
        ].join('\n');

        // 创建Blob并触发下载
        const blob = new Blob([csvContent], { type: 'text/csv' });
        const a = document.createElement('a');
        a.href = URL.createObjectURL(blob);
        a.download = 'captured_text.csv';
        a.style.display = 'none';
        document.body.appendChild(a);
        a.click();
        document.body.removeChild(a);
    }

    // 创建导出按钮
    const captureButton = document.createElement('button');
    captureButton.textContent = 'Export Data to CSV';
    captureButton.style.position = 'fixed';
    captureButton.style.top = '20px';
    captureButton.style.right = '20px';
    captureButton.style.zIndex = '9999';
    captureButton.style.padding = '10px';
    captureButton.style.border = '1px solid #000';
    captureButton.style.backgroundColor = '#0077b6';
    captureButton.style.color = '#fff';
    captureButton.style.cursor = 'pointer';
    document.body.appendChild(captureButton);

    // 按钮点击事件处理
    captureButton.addEventListener('click', () => {
        try {
            const capturedText = captureTextFromGoogle();
            exportToCSV(capturedText);
            alert('导出成功!');
        } catch (error) {
            console.error('导出失败:', error);
            alert(`导出失败:${error.message}`);
        }
    });
})();

修复说明

  1. 实际网页文本捕获:通过document.querySelector定位Google首页的具体元素(logo、搜索框、幸运按钮),确保从网页抓取真实内容
  2. 错误处理增强:捕获元素时逐一检查是否存在,不存在则抛出明确错误;点击按钮时弹出提示告知用户导出结果,避免无反馈的无效操作
  3. 正确CSV列格式:用数组存储捕获的三个文本,导出时将每个文本对应到Word1、Word2、Word3列,同时处理文本中的引号避免CSV格式错误,确保导出的CSV完全符合预期格式

内容的提问来源于stack exchange,提问作者The Code Explorer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 13:42:36