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

155
24

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

спросил(а) 2013-12-18T20:40:00+04:00 6 лет, 2 месяца назад
1
Решение
254

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

var fs = require('fs');

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

ответил(а) 2013-12-18T20:53:00+04:00 6 лет, 2 месяца назад
35

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()

ответил(а) 2018-12-12T23:04:00+03:00 1 год, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема