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