我的硬盘上有一些 html 文件,我想使用 jquery 从中提取数据。这可以使用cheerio吗?我试过给cheerio 本地路径,但它不起作用。我的一个想法是在节点中创建一个 Web 服务器,从 html 文件中读取,然后通过服务器将其通过管道传输到cheerio - 这会不会
问问题
20239 次
3 回答
69
输入是一个html字符串,所以需要自己读取html内容:
var fs = require('fs');
cheerio.load(fs.readFileSync('path/to/file.html'));
于 2013-12-18T17:53:38.220 回答
10
可以使用模块中的函数异步读取 html 文件。当文件读取完成后,回调函数将传递两个参数。readFile
fs
(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());
});
旁注:因为编码 utf8 被指定为可选的第二个参数,所以typeof
数据是一个字符串。如果编码被省略,数据将是一个缓冲区。load 函数仍然理解这一点,因为缓冲区在内部转换为字符串:
if (Buffer.isBuffer(content))
content = content.toString();
于 2018-12-12T20:04:16.967 回答
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));
于 2020-08-06T18:47:44.910 回答