3

私の phantomJS スクリプトでは、Phantom を使用して HTML コンテンツをスクレイピングする前に、Phantom でいくつかの変数を設定するためにいくつかの HTTP リクエストを作成したいと考えています。

PhantomJS から HTTP リクエストを行う正しい方法は何ですか? PageObject を使用して、Web ページであるかのように処理する必要がありますか? または、これに使用できる XHR 機能はありますか? 最初に Json データを取得したいと思います。

4

1 に答える 1

3

考慮すべきいくつかの異なるオプションがあります。これを実現する最も簡単な方法は、WebPage モジュールを使用し、ロードするデータを含むページの URL を開き、他の Web ページ オブジェクトを使用して他のページをスクレイピングすることです。

var webpage = require('webpage');
var page = webpage.create()
page.open('<some url>', function(status) {
  var option1 = page.evaluate(function() { ... });
  var option2 = page.evaluate(function() { ... });

  another = webpage.create();
  another.open('<another url>', function(status) {
    another.evaluate(function(opt1, opt2) {

      // you have access to opt1 and opt2 here

    }, option1, option2);
  });
  page.close();
});

次に、「別の」ページで option1 および option2 変数にアクセスできます。

もう 1 つのオプションは、上記の Joe のようにコマンド ライン引数を使用することです。変数のコマンド ライン引数を受け入れる PhantomJS コードを記述し、Web 要求を作成して解析し、適切なコマンド ライン引数を使用して PhantomJS プロセスを生成する Node.js/Python/Ruby スクリプトを記述することもできます。

どちらも機能しますが、コードを 1 つのファイルに保持したい場合は、最初の方法を使用します。

于 2013-09-26T22:55:16.603 に答える