2017-01-03 6 views
0

phantom.jsをインストールしたばかりで、今すぐ使用しようとしています。PhantomJSのクッキーは、その後のリクエストで保持して再利用する

ウェブサイトのコンテンツを取得しようとしていますが、続行する前にプライバシーポリシーに同意する必要があります。

私の現在のコードは以下の通りです:

var page = require('webpage').create(); 
lastName = "T"; 
firstName = "N"; 
mmddyyyyS = "12/03/2016"; 
mmddyyyyE = "12/04/2016"; 
page.open("http://example.com/casesearch/processDisclaimer.jis"); 
page.open("http://example.com/casesearch/inquirySearch.jis?lastName="+lastName+"company=N&firstName="+firstName+"&filingStart="+mmddyyyyS+"&filingEnd="+mmddyyyyE, function(status) { 
    if (status === "success") { 
     if (page.injectJs("jquery.min.js")&&page.injectJs("moment.min.js")) { 
      var h1 = page.evaluate(function() { 
       return $("h1:eq(0)").css({fontSize: 10, color: "red"}).text(); 
      }); 
      console.log(h1); 
     } 
    } 
    else{ 
     console.log("error"); 
    } 
}); 
phantom.onError = function(msg, trace) { 
    var msgStack = ['PHANTOM ERROR: ' + msg]; 
    if (trace && trace.length) { 
    msgStack.push('TRACE:'); 
    trace.forEach(function(t) { 
     msgStack.push(' -> ' + (t.file || t.sourceURL) + ': ' + t.line + (t.function ? ' (in function ' + t.function +')' : '')); 
    }); 
    } 
    console.error(msgStack.join('\n')); 
    phantom.exit(1); 
}; 

私はいつもconsole.log("error")から、エラーが発生します。私は、私が彼らの条件を受け入れることを示す最初のリクエストを行っているためだと信じていますが、この提出後に通常ブラウザに表示されるクッキーは、その後の(2番目の)page.openリクエストでは保存されません。私は文書addCookie()page.cookiesを見てきましたが、1ページで達成されたクッキーが2ページ目のリクエストで使用されるように、チェーン要求については何も見ていません。

どうすればよいですか?

ありがとうございます。

答えて

1

どのネットワーク要求もPhantomJSでは非同期であるため、最初の処理が完了する前に2番目のpage.openが開始されるため、エラーが発生します。

page.open("http://example.com/casesearch/processDisclaimer.jis", function(){ 

    // this block is executed after the first page is opened 
    page.open("http://example.com/casesearch/inquirySearch.jis?lastName="+lastName+"company=N&firstName="+firstName+"&filingStart="+mmddyyyyS+"&filingEnd="+mmddyyyyE, function(status) { 

     // after the second page is opened 

    }) 
}); 

はまた、コマンドライン引数を実行したときPhantomJSは、将来の使用のために以前の要求からクッキーを保持できることに注意してください--cookies-file

/path/to/phantomjs --cookies-file=/path/to/cookies.txt /path/to/script.js 
関連する問題