Могу ли я загрузить локальный html файл с пакетом cheerio в node.js?

У меня есть несколько html файлов на моем жестком диске, для которых я хотел бы использовать jquery для извлечения данных. Можно ли это сделать с помощью cheerio? Я пробовал давать cheerio локальный путь, но он не работает. Одна из моих идей заключалась в том, чтобы создать веб-сервер в node, прочитать из html файла, а затем передать его на cheerio через сервер - будет ли это

Ответы

Ответ 1

Ввод представляет собой строку html, поэтому вы должны сами прочитать содержимое html:

var fs = require('fs');

cheerio.load(fs.readFileSync('path/to/file.html'));

Ответ 2

HTML файл может быть прочитан асинхронно с readFile функции readFile из модуля fs. Когда чтение файла завершено, функции обратного вызова передаются два аргумента (err, data).

Полученные data содержат html-контент и могут быть просто переданы в функцию load cheerio.

var cheerio = require('cheerio');
var fs = require('fs'); 

fs.readFile('path/to/file.html', 'utf8', function(err, data) {

    if (err) throw err;

    var $ = cheerio.load(data);
    console.log($.html());
});

Примечание. Поскольку кодировка utf8 указана в качестве необязательного второго аргумента, typeof данных представляет собой строку. Если кодировка опущена, данные будут буфером. Функция загрузки понимает это, тем не менее, потому что буфер внутренне преобразован в строку с:

if (Buffer.isBuffer(content))
  content = content.toString();

Документация по fs.readFile()