Экспорт данных таблицы со страницы HTML в файл CSV с помощью консоли браузера (Chrome) - PullRequest
0 голосов
/ 04 мая 2018

Мне нужно извлечь некоторые данные с веб-страницы и сохранить их в CSV-файле для открытия в Excel. Я пытаюсь сделать это из консоли браузера, но получаю неопределенную ошибку.

До сих пор я пытался использовать этот код для экспорта таблицы:

function exportTableToCSV(filename) {
    var csv = [];
    var rows = document.querySelectorAll("table tr");

    for (var i = 0; i < rows.length; i++) {
        var row = [], cols = rows[i].querySelectorAll("td, th");

        for (var j = 0; j < cols.length; j++) 
            row.push(cols[j].innerText);

        csv.push(row.join(","));        
    }

    // Download CSV file
    downloadCSV(csv.join("\n"), filename);
}

Когда я определяю эту функцию и запускаю ее, я получаю сообщение «ошибка downloadCSV не определена». Есть ли какие-то ограничения встроенной консоли браузера в Chrome, кроме очевидных?

Этот код также необходимо запускать в цикле, поскольку существует несколько страниц с таблицами, но было бы неплохо, чтобы все это находилось в одном файле CSV. Для начала нужно просто извлечь все, что можно найти в таблице. Я погрузлюсь и извлеку нужные мне поля позже, когда я получу эту работу.

Edit:

function downloadCSV(csv, filename) {
  var csvFile;
  var downloadLink;

  csvFile = new Blob([csv], {
    type: "text/csv"
  });

  downloadLink = document.createElement("a");
  downloadLink.download = filename;
  downloadLink.href = window.URL.createObjectURL(csvFile);

  downloadLink.style.display = "none";

  document.body.appendChild(downloadLink);

  downloadLink.click();
}

1 Ответ

0 голосов
/ 04 мая 2018

Вместо создания CSV-файла для каждой таблицы можно сохранить все данные со страниц в некотором хранилище, например, в локальном хранилище:

$(document).ready(function() {
    $(window).unload(saveSettings);
    loadlist();
});

function loadlist() {
    savedlist = localStorage.list;
}

function savelist() {
    localStorage.list = savedlist + currentlist;
}

Вместо немедленной загрузки CSV, соберите все свои данные в хранилище, используя приведенные выше примеры (вам нужно будет настроить их в соответствии с вашими потребностями). Затем, когда у вас есть все данные, поместите их в один CSV и затем загрузите это. После этого удалите данные из хранилища:

function deletelist() {
    localStorage.removeItem(list);
}

Локальное хранилище сохраняется на ваших страницах из одного домена до тех пор, пока вы не очистите его или пользователь не удалит данные своего браузера вручную.

...