Can I load a local html file with the cheerio package in node.js?
The input is an html string, so you need to read the html content yourself:
var fs = require('fs');
cheerio.load(fs.readFileSync('path/to/file.html'));
A html file can be read asynchronously with the readFile
function from the fs
module. When the reading of the file finished the callback function is passed two arguments (err, data)
.
The received data
contains the html content and can be simply passed to the cheerio load
function.
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());
});
Sidenote: Because the encoding utf8 is specified as an optional second argument, the typeof
data is a string. If the encoding is ommitted data will be a buffer. The load function understands this nonetheless, because the buffer is internally converted to a string with:
if (Buffer.isBuffer(content))
content = content.toString();
Documentation of fs.readFile()