2013-01-31 7 views
6

私はPHPでcURLでページを取得しています。すべてうまく動作しますが、ページが読み込まれた後、JavaScriptを使用して計算されるページの一部が取り出されます。 JavaScriptの計算が完了する前に、cURLはすでにページのソースをPHPスクリプトに戻してしまい、最終結果が間違っています。サイト上での計算はAJAXによって行われますので、簡単に計算を再現することはできません。また、私はターゲットページのコードにアクセスできないので、自分の(cURL)フェッチのニーズに合わせてそのターゲットページを調整することはできません。ページの動的更新が完了するまでcURLを待機させる方法はありますか?

すべての動的トラフィ​​ックが終了するまで、cURLに待機するように指示する方法はありますか。長いハングアップの原因となる可能性のある別のドメインにデータを送信し続けているJavaScriptがあるため、扱いにくいかもしれません。しかし、少なくとも正しい結果が得られれば、少なくとも私はテストすることができます。

Safariの私の開発者ツールバーは、ページが約1.57秒で完了したことを示しています。たぶん私は2秒も待つために静的にcURLを伝えることができますか?

私は可能性がカールが任意のJavaScriptを実行するか、ドキュメント内で参照される任意のファイルをダウンロードしません

答えて

4

:)あるのだろうか。だから、cURLはあなたの問題の解決策ではありません。

サーバー側でブラウザを使用して、ページを読み込むように指示し、X秒待ってからHTMLを要求します。

以下をご覧ください:node.jsを使用する必要があります(私はPHPの解決策を知らないので)http://phantomjs.org/

+0

幸運なことに、ちょっとしたコードです。 JavaScriptでコードを書き直し、jQueryとPhantomJSでデータをフェッチします。ありがとう:) –

+0

PhantomJSを自分のjQueryを実行するローカルのHTMLページに明示的に含める方法はありますか? –

+0

いいえ、phantom.jsは内部的に実際のWebkitブラウザを使用しますが、クライアントでは実行できません。 –

2

検索しているページや含める計算についてはほとんど分かりませんが、これらのajaxリクエストを処理するURLに直接cURLすることもできます。 Firebugのようなものを使用してターゲットページでAjax呼び出しを検査し、渡されたURLとパラメータを調べることができます。完全なWebページが必要な場合は、WebページとAjax URLの両方をcURLして、PHPコード内の2つを結合することができますが、それは乱雑になり始めます。

+0

これは、別のプログラムを使用する代わりに実行する方法です。 –

関連する問題