JavascriptでTableをCSVで保存する
とあるサイトの項目をCSVに保存する。
var downloadAsTextFile = function(fileName, content) { var bom = new Uint8Array([0xEF, 0xBB, 0xBF]); var blob = new Blob([bom, content]); var url = window.URL || window.webkitURL; var blobURL = url.createObjectURL(blob); var a = document.createElement('a'); a.download = fileName; a.href = blobURL; a.click(); }; var downloadAsCSVFile = function(fileName, rows) { var content = ""; for( var i in rows) { var ary = rows[i]; for (var j = 0, m = ary.length; j < m; ++j) { content += '"' + ("" + ary[j]).replace('"', '""') + '"'; if (j !== m) { content += ','; } } content += '\n'; } downloadAsTextFile(fileName, content); }; rows=[]; $("tr.md-l-tr-03 td.vaM > a").each(function(){ rows.push([this.innerHTML, this.href.match(/param6=(\w+)/i)[1]]); }) downloadAsCSVFile("hoge.csv", rows);
クロスサイトスクリプティング対策め〜,ホスト名が違うからページ詳細取得できない。苦肉の策。。。
param=[]; $("tr.md-l-tr-03 td.vaM > a").each(function(){ param.push(this.href.match(/param6=(\w+)/i)[1]); }); param;
var downloadAsTextFile = function(fileName, content) { var bom = new Uint8Array([0xEF, 0xBB, 0xBF]); var blob = new Blob([bom, content]); var url = window.URL || window.webkitURL; var blobURL = url.createObjectURL(blob); var a = document.createElement('a'); a.download = fileName; a.href = blobURL; a.click(); }; var downloadAsCSVFile = function(fileName, rows) { var content = ""; for( var i in rows) { var ary = rows[i]; for (var j = 0, m = ary.length; j < m; ++j) { content += '"' + ("" + ary[j]).replace('"', '""') + '"'; if (j !== m) { content += ','; } } content += '\n'; } downloadAsTextFile(fileName, content); }; var jqXHRList=[]; $(param).each(function(i,e){ jqXHRList.push($.ajax({ type: "GET", contentType: "text/html", url: "https://site0.sbisec.co.jp/marble/fund/detail/achievement.do?Param6=" + e, })); }) $.when.apply($, jqXHRList).done(function() { var rows = [["名称", "信託報酬", "信託財産留保額"]]; for(var i in arguments) { h=$($.parseHTML(arguments[i][0])); t=h.filter("#CONTENTSAREA01"); rows.push([ t.find("div.md-l-utl-mt10 > h3:first").text().trim(), t.find("p:contains('信託報酬')").closest("tr").next("tr").text().trim(), t.find("p:contains('信託財産留保額')").closest("tr").next("tr").text().trim(), ]); } downloadAsCSVFile("hoge.csv", rows); });