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

时间:2013-12-18 17:40:11

标签: jquery html node.js local cheerio

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

3 个答案:

答案 0 :(得分:58)

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

var fs = require('fs');

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

答案 1 :(得分:2)

可以使用readFile模块中的fs函数来异步读取html文件。文件读取完成后,将向回调函数传递两个参数(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;

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

边注:由于将utf8编码指定为第二个可选参数,因此typeof数据是一个字符串。如果省略编码,则数据将为buffer。尽管如此,load函数仍然可以理解这一点,因为该缓冲区在内部通过以下方式转换为字符串:

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

fs.readFile()

的文档

答案 2 :(得分:1)

扩展damphat的答案以使其适用于相对路径:

import fs from 'fs';
import path from 'path';

const filePath = path.join(__dirname, './path/to/file.html');
const $ = cheerio.load(fs.readFileSync(filePath));