-
Notifications
You must be signed in to change notification settings - Fork 0
/
getTableData
41 lines (39 loc) · 1.35 KB
/
getTableData
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
function downloadCSV(csvString, fileName) {
var csvData = new Blob([csvString], {
type: 'text/csv;charset=utf-8;'
});
if (navigator.msSaveBlob) {
navigator.msSaveBlob(csvData, fileName + '.csv');
} else {
var link = document.createElement('a');
link.href = window.URL.createObjectURL(csvData);
link.setAttribute('download', fileName + '.csv');
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
};
}
var tables = [];
var tableElements = document.getElementsByTagName("table");
function scrapeColumn(column){
return column.textContent.replace(/[\t\n\r,]/g, ' ').replace(/\s+/g, ' ').trim();
}
function scrapeRow(row){
var headers = row.getElementsByTagName("th");
if(headers.length > 0)
{
var columns = headers;
}else{
var columns = row.getElementsByTagName("td");
}
var columnCollection = Array.prototype.slice.call(columns).map(scrapeColumn);
return columnCollection;
}
function scrapeTable(tableElement, i){
//console.log("tableElement", tableElement)
var rows = tableElement.getElementsByTagName("tr");
var rowCollection = Array.prototype.slice.call(rows).map(scrapeRow);
return rowCollection.join("\r\n");
}
var tableCollection = Array.prototype.slice.call(tableElements).filter(function(element){return element;}).map(scrapeTable);
downloadCSV(tableCollection.join("\r\n\r\n"),"data")