2017-10-10 6 views
2

したがって、phantomjsを使用して、スクリプトによって常に更新されているデータのWebスクレイピングを実行する場合、たとえばスコアや株価などを考えてみましょう。ループ内でpage.open("http://yourwebsite", function(status) {}を呼び出すためにsetInterval/Timeoutを使用せずに、このデータを収集するために永続的なオープンブラウザ状態をどのように作成しますか?PhantomJSを使って動的に「変更している」データをスクラップする方法は?

phantonjsには実際にヘッドレス状態で実際のブラウザのように機能するapi呼び出しがありますか?または私はちょうどページをリロードし、各リロードから静的なデータを読みますか?

+1

あなたがすべてでリロードする必要はありません。インターバルを使用してDOMを再クエリするのはなぜですか?これは完全に機能するはずです。 PhantomJSは本物のブラウザです。 – Rafael

+0

コールバック関数の内部では、特定の要素に対してsetintervalを設定でき、ページを再度開く必要はありませんか?ありがとう。 – cube

答えて

2

あなたは、せいぜい手動が終了したときにを決定するためにsetInterval()呼び出しにわたって状態を追跡する必要があります、ページを再オープンする必要はありません。

var page = require("webpage").create(); 

page.open("http://yourwebsite", function(status) { 
    console.log("Status: " + status); 

    if(status === "success") { 
     var count = 0; 
     setInterval(function() { 
      if (count++ === 5) { 
       //You will need to figure out when to exit!!!! 
       phantom.exit(); 
      } 
      page.evaluate(function(){ 
       document.getElementById("firstName").value = "John"; 
       document.getElementById("lastName").value = "Doe"; 
      }); 
     }, 5000/*5 SECONDS*/); 
    } else { 
     phantom.exit(1); 
    } 
}); 
関連する問題