まず第一に、私は開発またはテスト環境で助けを探していません。また、私はphantomjsを初めて使用します。必要なのは、Linuxターミナルでのphantomjsのコマンドライン操作だけです。
本文がJavaScriptコードでレンダリングされているhtmlページがあります。必要なのは、phantomjsを使用してレンダリングされたhtmlコンテンツをダウンロードしたかったことです。
Phantomjsを使用することはわかりません。私はシェルスクリプトの経験が少しあります。だから私はcurl
でこれをやろうとしました。しかし、curlはjavascriptをレンダリングするのに十分ではないため、デフォルトのソースコードのhtmlのみを取得できました。レンダリングされたコンテンツはダウンロードされませんでした。 Ruby mechanizeがこの仕事をするかもしれないと聞きましたが、Rubyについての知識がありません。さらに調査したところ、コマンドラインツールphantomjs
が見つかりました。 phantomjs
?
提供する必要のあるすべての追加情報については、お気軽にお問い合わせください。
残念ながら、PhantomJSコマンドラインだけではそれは不可能です。 PhantomJSで実際に何かを実行するには、Javascriptファイルを使用する必要があります。
これは、使用できるスクリプトの非常に単純なバージョンです。
ほとんどが https://stackoverflow.com/a/12469284/4499924 からコピーされたコード
printSource.js
var system = require('system');
var page = require('webpage').create();
// system.args[0] is the filename, so system.args[1] is the first real argument
var url = system.args[1];
// render the page, and run the callback function
page.open(url, function () {
// page.content is the source
console.log(page.content);
// need to call phantom.exit() to prevent from hanging
phantom.exit();
});
ページソースを標準出力に印刷します。
phantomjs printSource.js http://todomvc.com/examples/emberjs/
ページソースをファイルに保存するには
phantomjs printSource.js http://todomvc.com/examples/emberjs/ > ember.html
var pagehtml = page.evaluate("function() {"+
"return '<html><head>' + document.head.innerHTML + '</head>' + '<body>' + document.body.innerHTML + '</body></html>';" +
"}");
fs.write('output.html',pagehtml,'w');