我可以在node.js中加载带有cheerio包的本地html文件吗?

Jpa*_*ish 22 html jquery local node.js cheerio

我的硬盘上有一些html文件,我想用jquery来从中提取数据.这可以用cheerio吗?我试过给当地的路径提供cheerio,但它不起作用.我有一个想法是在节点中创建一个Web服务器,从html文件中读取,然后通过服务器将其传送给cheerio-这样吗

dam*_*hat 60

输入是一个html字符串,因此您需要自己阅读html内容:

var fs = require('fs');

cheerio.load(fs.readFileSync('path/to/file.html'));
Run Code Online (Sandbox Code Playgroud)

  • 这应该在文档中添加 (6认同)
  • 我如何从项目目录中的相对路径进行这项工作?这对我不起作用。 (2认同)

Tob*_*eck 10

可以使用模块中的函数异步读取 html 文件。当文件读取完成时,回调函数被传递两个参数。readFilefs(err, data)

接收到的data包含 html 内容,可以简单地传递给cheerioload函数。

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());
});
Run Code Online (Sandbox Code Playgroud)

旁注:因为编码 utf8 被指定为可选的第二个参数,所以typeof数据是一个字符串。如果编码被省略,数据将是一个缓冲区。加载函数仍然理解这一点,因为缓冲区在内部被转换为一个字符串:

if (Buffer.isBuffer(content))
  content = content.toString();
Run Code Online (Sandbox Code Playgroud)

fs.readFile() 的文档