Ответ 1
Ввод представляет собой строку html, поэтому вы должны сами прочитать содержимое html:
var fs = require('fs');
cheerio.load(fs.readFileSync('path/to/file.html'));
У меня есть несколько html файлов на моем жестком диске, для которых я хотел бы использовать jquery для извлечения данных. Можно ли это сделать с помощью cheerio? Я пробовал давать cheerio локальный путь, но он не работает. Одна из моих идей заключалась в том, чтобы создать веб-сервер в node, прочитать из html файла, а затем передать его на cheerio через сервер - будет ли это
Ввод представляет собой строку html, поэтому вы должны сами прочитать содержимое html:
var fs = require('fs');
cheerio.load(fs.readFileSync('path/to/file.html'));
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()