1

次のようにURLのコンテンツを取得しようとしていますfile_get_contents():

file_get_contents('http://www.website.com');

これは問題なく動作しますが、次のようなページのコンテンツも取得する必要があります。http://www.website.com#somevalueただし、上記と同じアプローチを使用すると、ハッシュなしと同じコンテンツが返されます。更新されたコンテンツを入手することは可能ですか? これを処理するために、バックボーンまたは別のタイプのルーティングを使用していると思います。

4

3 に答える 3

1

Javascript を使用して動的コンテンツを生成しているようです。残念ながら、file_get_contentsその JS コードを実行することはできません。これが、更新されたコンテンツを取得できない理由を説明しています。

動的ページをスクレイピングする最善の方法は、ブラウザーを使用してページをレンダリングし、要素をスクレイピングすることです。動的 Web サイトのスクレイピングについて検討する必要がある StackOverflow に関する質問がいくつかあります。

于 2012-11-10T23:16:19.530 に答える
0

http://www.website.com#somevalue v/s http://www.website.com

どちらも同じ page-resource を要求します->http://www.website.com ハッシュによるさらなるナビゲーションはJavaScriptを使用して行われます。

したがって、 を使用してこれらのコンテンツを直接取得する方法はありませんfile_get_contents。応答 html を取得しているためですが、その中で参照されているクライアント スクリプトは実行していません。


J4P5は、PHP 5 で書かれた JavaScript インタープリターで、サーバーで JS を実行するのに役立ちます。

于 2012-11-10T23:16:03.150 に答える
0

URL フラグメント (「ハッシュ」) はサーバーに送信されず、クライアント側のみです。ページが Javascript によるハッシュに基づいてクライアント側で動的に変更される場合、サイトをダウンロードし、それを DOM に解析し、埋め込まれた Javascript を実行してから、DOM をスクレイピングする必要があります。

つまり、サーバー上で完全なブラウザーをエミュレートする必要があります。
これはまったく些細なことではありません。

「ヘッドレスブラウザ」というキーワードに基づいて、状況で何が可能かを調査することをお勧めします。

于 2012-11-10T23:16:27.823 に答える