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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (115)

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

提问于
用户回答回答于

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

var fs = require('fs');

cheerio.load(fs.readFileSync('path/to/file.html'));
用户回答回答于

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

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

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

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

    if (err) throw err;

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

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

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

扫码关注云+社区

领取腾讯云代金券