ハードドライブにいくつかのhtmlファイルがあり、jqueryを使用してデータを抽出します。これはcheerioを使用して実行できますか? cheerioにローカルパスを指定してみましたが、機能しません。私が持っていた1つのアイデアは、ノードにWebサーバーを作成し、htmlファイルから読み取り、サーバーを介してそれをcheerioにパイプすることでした-これは
入力はhtml文字列なので、自分でhtmlコンテンツを読み取る必要があります。
var fs = require('fs');
cheerio.load(fs.readFileSync('path/to/file.html'));
readFile
モジュールのfs
関数を使用して、htmlファイルを非同期に読み取ることができます。ファイルの読み取りが完了すると、コールバック関数に2つの引数(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がオプションの2番目の引数として指定されているため、typeof
データは文字列です。エンコードが省略されている場合、データは buffer になります。それでもロード関数はこれを理解します。これは、バッファーが内部で文字列に変換されるためです。
if (Buffer.isBuffer(content))
content = content.toString();
fs.readFile()のドキュメント