30

ハードドライブに、jquery を使用してデータを抽出したい html ファイルがいくつかあります。これはチェリオを使用して行うことは可能ですか? チェリオにローカル パスを指定しようとしましたが、うまくいきません。私が持っていた1つのアイデアは、ノードでWebサーバーを作成し、htmlファイルから読み取り、サーバーを介してcheerioにパイプすることです-これは

4

3 に答える 3

10

html ファイルは、モジュールからの関数で非同期に読み取ることができます。ファイルの読み込みが完了すると、コールバック関数に 2 つの引数が渡されます。readFilefs(err, data)

受信した には html コンテンツが含まれており、cheerio関数dataに簡単に渡すことができます。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()のドキュメント

于 2018-12-12T20:04:16.967 に答える