Greasy Fork

来自缓存

Greasy Fork is available in English.

Google Search 结果导出

OutPut Data from Google Search Result

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Google Search 结果导出
// @namespace    http://www.ixiqin.com/
// @version      0.4
// @description  OutPut Data from Google Search Result
// @author       Bestony
// @match        https://www.google.com/search*
// @require      http://code.jquery.com/jquery-3.2.1.min.js
// @license .    GPLv2
// @grant        none
// ==/UserScript==

/**
 * Action
 */
importCss();
scriptWithJquery();

/**
 * Get Result
 */
var searchResult = $("h3.r");
var contentArray = [];
searchResult.each(function () {
    contentArray.push({
        "title": this.firstElementChild.text.toString().replace(new RegExp(',',"g"),"·"),
        "herf": this.firstElementChild.href.toString(),
    });
});

/**
 * Import CSS For Button
 */
function importCss() {
    var jqueryScriptBlock = document.createElement('style');
    jqueryScriptBlock.type = 'text/css';
    jqueryScriptBlock.innerHTML = "#gototop{position:fixed;bottom:60%;left:10px;border:1px solid gray;padding:3px;width:90px;font-size:12px;cursor:pointer;border-radius: 3px;text-shadow: 1px 1px 3px #676767;}";
    document.getElementsByTagName('head')[0].appendChild(jqueryScriptBlock);
}
/**
 * 页面元素添加
 */
function scriptWithJquery() {
    $(document.body).append("<div id='gototop' title=''>下 载 搜 索 结 果</div>");
    $('#gototop').click(function () { downloadCSV({ filename: "data.csv" }); });
}
/**
 * 将 array 转换为 CSV 格式
 * @param args array
 */
function convertArrayOfObjectsToCSV(args) {
    var result, ctr, keys, columnDelimiter, lineDelimiter, data;

    data = args.data || null;
    if (data === null || !data.length) {
        return null;
    }

    columnDelimiter = args.columnDelimiter || ',';
    lineDelimiter = args.lineDelimiter || '\n';

    keys = Object.keys(data[0]);

    result = '';
    result += keys.join(columnDelimiter);
    result += lineDelimiter;

    data.forEach(function (item) {
        ctr = 0;
        keys.forEach(function (key) {
            if (ctr > 0) result += columnDelimiter;

            result += item[key];
            ctr++;
        });
        result += lineDelimiter;
    });

    return result;
}
/**
 * 下载 CSV 文件
 * @param args filename
 */
function downloadCSV(args) {
    var data, filename, link;
    var csv = convertArrayOfObjectsToCSV({
        data: contentArray
    });
    if (csv === null) return;

    filename = args.filename || 'export.csv';

    if (!csv.match(/^data:text\/csv/i)) {
        csv = 'data:text/csv;charset=utf-8,' + csv;
    }
    data = encodeURI(csv);

    link = document.createElement('a');
    link.setAttribute('href', data);
    link.setAttribute('download', filename);
    link.click();
}