phantomjsを使用してリソースを要求し、応答の本文にアクセスできるようにする方法はありますか?
4 に答える
更新:「画像、CSS、フォントなど、他のすべてのリソースを取得して何かを実行する」という他の考えられる意味について、最近、SlimerJSでこれを行う方法をブログに書きました。1.9.1の時点でPhantomJSでそれを行う唯一の方法は、パッチを適用して再コンパイルすることだと思います。
「応答本文」の意味を誤解しているのかもしれませんし、この質問よりも最近PhantomJSに追加されたのかもしれませんが、これと同じくらい簡単です。
var page = require('webpage').create();
var url = 'http://google.com/';
page.open(url,function(){
console.log(page.content);
phantom.exit();
});
(ちなみに、page.plainText
HTMLタグなしで取得するために使用します。)
<body>
タグの内容だけが必要な場合<head>
は、応答の任意の部分を取得するために使用できる代替方法はありません。
var page = require('webpage').create();
var url = 'http://google.com/';
page.open(url,function(){
var html = page.evaluate(function(){
return document.getElementsByTagName('body')[0].innerHTML;
});
console.log(html);
phantom.exit();
});
これは、現在PhantomJSの大きな問題の1つです。オープン(執筆時点)チケットはhttp://code.google.com/p/phantomjs/issues/detail?id=158にあり、現時点では信頼できるソリューションはありません。これは、リクエストデータとレスポンスデータの収集に適用されるため、送信された投稿データを収集してから、CasperJSダウンロードのようなスキームで再送信することはできません。
SlimerJSはFireFoxの新しいバージョンでは動作しないため、私には適していません。
この回答は、2019年後半にXHRから応答本文を取得する方法を説明しています