10

私が取り組んでいる新しいプロジェクトには、(PHP と cURL を使用して) Web ページをフェッチし、そこから HTML と JavaScript を解析し、結果のデータを処理することが含まれます。

基本的に、サイトが javascript を使用して AJAX でデータを取得するときに、レンガの壁にぶつかりました。この場合、ブラウザーで JavaScript を実行しない限り、取得したページに初期データは表示されません。

このための PHP ライブラリはありますか? (そうではないと思いますが、間違っている可能性があります。)

私は実際にはこれをサーバーベースのソリューションとして構築したいと考えています。そうしないと、このためのアプリケーションを構築する必要があり、mozilla および/または IE ランタイム ライブラリを使用する必要があり、目的が果たせません。

4

8 に答える 8

17

必要になるだろう:

  • 1つのJavaScriptインタープリター
  • 1つのDOMレベル2コアとHTMLの実装
  • 500gの非標準だが一般的に使用されるDOM拡張機能
  • DOMレベル2スタイルのピンチ(CSSインタープリターとレイアウトエンジンも意味する場合があります)
  • ヨーグルトポット、丸型はさみ、粘着性のあるプラスチック

コンポーネントを組み立てたら(サンドボックス化を支援するために大人になることを忘れないでください)、あなたが持っているものは本質的にWebブラウザと見分けがつかないことがわかります。

JAVAは、サーバー上のシェルビルドの一部ではありません。V8 / SquirrelFishは、PHPに変換する必要があるC++コードです。

JSエンジンをPHPに移植するのは大変な作業であり、結果として得られるパフォーマンスは恐ろしいものになるでしょう。非常に多くのページがjQueryのような恐ろしく複雑なライブラリを使用してすべてを実行しているため、JavaScriptのほぼ解決策を実際に回避することさえできず、詳細なJSサポートが必要になります。

これを純粋にPHPで実行できるとは思いません。Java / Rhino/HTMLUnitまたはMozillaのような適切なWebブラウザを接続する必要があります。ホスティング環境でそのようなものをコンパイルしてデプロイするために必要な柔軟性が得られない場合は、シェル(できればVPS)を使用したより優れたホスティング設定に移行する必要があります。

既知のページのAJAXアクセスを特殊なケースにすることで、この不快感を他の方法で回避できる場合は、それを実行します。

于 2009-11-20T14:03:00.163 に答える
4

サーバー上で Rhino などの JavaScript エンジンを実行できます。

いくつかの代替手段を次に示します。

  • Rhino (Java ベース)
  • V8 (Chrome、C++ で使用)
  • スクイレルフィッシュ (C++)

これらは JS を実行できますが、あなたが行うことが最善の方法であるかどうかはわかりません。ただし、プログラムの目的が指定されていないため、その点に関しては何の提案もできません。

于 2009-11-20T06:38:37.783 に答える
4

実際のライブ Web ページを実行する場合は、Rhino よりも一歩先を行く必要があります。これらのページの JavaScript は、ブラウザー環境にネイティブなオブジェクトを使用できることを期待するからです。Rhino のようなサーバー側の JavaScript エンジンには、これらのオブジェクトがありません。

John Resig (jQuery の作成者) は、数年前にEnv.jsというプロジェクトを開始しました。それはあなたが探しているものかもしれませんが、多種多様な Web ページから一貫した結果を得るのに苦労するのではないかと思います. これについての彼の最初のブログ投稿は次のとおりです。

http://ejohn.org/blog/bringing-the-browser-to-the-server/

その投稿のコメントには、いくつかの同様のプロジェクトの名前が付けられています。

于 2009-11-20T07:02:28.267 に答える
3

以前にここで尋ねられた:ヘッドレスインターネットブラウザ?

Mozillaでは、この質問をたくさん受けます。良い答えはありません。必要なのは、ブラウザが実行する必要のあるほとんどすべて(少なくともネットワーキング、JavaScript、HTML解析、およびDOMに関して)を実装するソフトウェアライブラリですが、表示はありません。

私が知っている最も近いものはHTMLUnit(Java)です。

于 2009-11-20T07:22:39.987 に答える
1

Javaについては言わなかったと思いますが、参考までにQTJaambiに興味があるかもしれません。それらには、ヘッドレスモードで実行できるWebkitの実装があります。

于 2009-11-20T14:07:04.050 に答える
1

これらの回答はすべて、php JavaScriptエミュレーションの可能性がないことを前提としているようですが、ほぼ完全に準拠したオープンソースのphpJavaScriptエミュレーターがここにあります。

http://www.sitepoint.com/blogs/2006/01/19/j4p5-javascript-for-php5/

Env.jsと組み合わせると、完全なサーバー側のjs実行ソリューションにかなり近づくことができます。

于 2010-08-16T20:23:36.337 に答える
0

rhinoを見ることができます。Java を使用しますが、PHP ポートについては聞いたことがありません。

実際の JavaScript を実行する義務がありますか?

于 2009-11-20T06:36:51.563 に答える
0

DOM やウィンドウ オブジェクトなどのブラウザ スクリプト エンジンの環境も作成する必要があるため、JS エンジンを使用するだけでは困難です。Windows サーバー上で実行している場合、IE COM オブジェクトを使用して Web ページをロードおよび実行し、プログラムで DOM にアクセスしてコンテンツを引き出すのは非常に簡単です。サーバーが Linux および/または Mozilla であることについては、残念ながら経験がありません。

しかし、本当に何をしようとしていますか?

于 2009-11-20T06:48:20.747 に答える