2

phantomjsを使用してリソースを要求し、応答の本文にアクセスできるようにする方法はありますか?

4

4 に答える 4

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.plainTextHTMLタグなしで取得するために使用します。)

<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();
  });
于 2013-10-15T06:21:02.937 に答える
1

これは、現在PhantomJSの大きな問題の1つです。オープン(執筆時点)チケットはhttp://code.google.com/p/phantomjs/issues/detail?id=158にあり、現時点では信頼できるソリューションはありません。これは、リクエストデータとレスポンスデータの収集に適用されるため、送信された投稿データを収集してから、CasperJSダウンロードのようなスキームで再送信することはできません。

于 2012-08-24T07:52:16.710 に答える
1

を使用しslimmerjsます。すべての「phantomjs」コードは「slimmerjs」でも機能します。

詳細はこちらbody現在、slimmerjsでのみ使用可能な最後のプロパティに注意してください。

注:page.captureContent = [/.*/]応答に「body」が表示されるように設定してください。これについての詳細:ここ

于 2014-06-26T08:46:04.740 に答える
0

SlimerJSはFireFoxの新しいバージョンでは動作しないため、私には適していません。

この回答は、2019年後半にXHRから応答本文を取得する方法を説明しています

于 2019-09-30T12:55:53.177 に答える