2016-05-13 22 views
0

私はPurestorage Career pageをスクラップして、Greenhouseのジョブリストを抽出しようとしています。 PhantomJSを使ってページを読み込もうとすると、時々、完全にレンダリングされたページが表示されます。これには、温室のジョブリストjobが含まれています。ページが読み込まれるたびにPhantomJSがすべてのAJAX呼び出しを実行しない

Purestorage career pageのページのソースを見て、私は彼らがjson urlにGETリクエストを発行してジョブをロードしているように思え、次のコード

<div class="container" data-component-name="embed-greenhouse" data-component-url="/api/jobs/v1/jobs.ws.json"> 

    <div id="alert-container" class="container"> 
    </div> 


    <div class="row"> 
     <div class="col-sm-12 results-col" id="greenhouse"> 
     </div> 
    </div> 
</div> 

を参照してください。しかし、PhantomJSはこの要求をいつもしているわけではありません。

すべてのAJAXコールがPhantomJSによって行われていることを確認するにはどうすればよいですか。この特定のWebサイトの特別なコード構造のために起こっていますか?

編集: 私はPhantomjs 2.1.1を使用しています。私はまた、ページを読み込む前にキャッシュをクリアしようとしましたが、運はありません。

page.clearMemoryCache(); 
+0

APIエンドポイントを直接呼び出すことができるのはなぜPhantomJSを使用するのですか? – Eloims

+0

より一般的な質問です。私はPhantomJSを通して多くのサイトをクロールしますが、この特定のケースはデータを生成しません。 –

答えて

0

ここで問題を発見しました。この特定のケースでは、PhantomJSは、非同期JSONファイルのロードが完了する前であっても、ページロードを「完了」として扱っていました。ページロード後に1秒の遅延を追加すると、スクリプトはページに温室効果データをロードするのに十分な時間を与えます。

0

これは、キャッシュの問題ですが、あなたはPhantomJs 2.1.1がclearCache要求を尊重していないようだという権利です。 PhantomJsCloud.comでこれを回避する方法は、ディスク上のキャッシュを削除し、クリアキャッシュ要求が行われたときにインスタンスを再起動することです。

関連する問題