11

Windows で Phantom JS を使い始めましたが、その機能に関するドキュメントを見つけるのに少し苦労しています (おそらく問題の原因です)。

Phantom JS を使用して、次のことを行いたいと思います。

  1. ローカル マシンのフォルダの場所を指定し、
  2. その場所に移動し、HTML ファイルのリストを特定します。
  3. そのリストが識別されたら、HTML ファイルのリストをループし、それらすべてを PNG に変換します (rasterize.js の例の動作と同様)。

これはおそらく可能だと確信していますが、Phantom JS 関数呼び出しを見つけることができませんでした。

  1. フォルダ内のファイルのリストを取得し、
  2. Phantom JS の gsub と grep の形式。
4

1 に答える 1

19
var page = require('webpage').create(), loadInProgress = false, fs = require('fs');
var htmlFiles = new Array();
console.log(fs.workingDirectory);
var curdir = fs.list(fs.workingDirectory);

// loop through files and folders
for(var i = 0; i< curdir.length; i++)
{
    var fullpath = fs.workingDirectory + fs.separator + curdir[i];
    // check if item is a file
    if(fs.isFile(fullpath))
    {
        // check that file is html
        if(fullpath.indexOf('.html') != -1)
        {
            // show full path of file
            console.log('File path: ' + fullpath);
            htmlFiles.push(fullpath);
        }
    }
}

console.log('Number of Html Files: ' + htmlFiles.length);

// output pages as PNG
var pageindex = 0;

var interval = setInterval(function() {
    if (!loadInProgress && pageindex < htmlFiles.length) {
        console.log("image " + (pageindex + 1));
        page.open(htmlFiles[pageindex]);
    }
    if (pageindex == htmlFiles.length) {
        console.log("image render complete!");
        phantom.exit();
    }
}, 250);

page.onLoadStarted = function() {
    loadInProgress = true;
    console.log('page ' + (pageindex + 1) + ' load started');
};

page.onLoadFinished = function() {
    loadInProgress = false;
    page.render("images/output" + (pageindex + 1) + ".png");
    console.log('page ' + (pageindex + 1) + ' load finished');
    pageindex++;
}

お役に立てれば。FileSystem 呼び出しの詳細については、次のページを参照してください: http://phantomjs.org/api/fs/

また、FileSystem 関数は PhantomJS 1.3 以降でのみ使用できると信じていることを付け加えたいと思います。必ず最新バージョンを実行してください。私は PyPhantomJS for Windows を使用しましたが、これは他のシステムでも問題なく動作すると確信しています。

于 2011-09-26T00:13:51.410 に答える