// ==UserScript== // @name Google Search 结果导出 // @namespace http://www.ixiqin.com/ // @version 0.2 // @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 . MIT // @grant none // @downloadURL none // ==/UserScript== /** * Action */ importCss(); scriptWithJquery(); /** * Get Result */ var searchResult = $("h3.r"); var contentArray = []; searchResult.each(function () { contentArray.push({ "title": this.firstElementChild.text.toString(), "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("
下 载 搜 索 结 果
"); $('#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(); }