javascript またはその他のテクノロジで動作していると思われる Web サイトのコンテンツをスクレイピングしようとしています。ページのコンテンツを見つけるために xpath を使用しています。ブラウザで firebug を使用してコンテンツを表示できますが、ソースを保存するか、curl/wget を介してソース コードをダウンロードすると、ページにコンテンツが表示されません。これはどのように可能ですか?
前もって感謝します
javascript またはその他のテクノロジで動作していると思われる Web サイトのコンテンツをスクレイピングしようとしています。ページのコンテンツを見つけるために xpath を使用しています。ブラウザで firebug を使用してコンテンツを表示できますが、ソースを保存するか、curl/wget を介してソース コードをダウンロードすると、ページにコンテンツが表示されません。これはどのように可能ですか?
前もって感謝します
一部のコンテンツは、JS を介して動的に読み込まれます。動的コンテンツをロードするには、 PhantomJSのようなヘッドレス ブラウザで数秒間、JS を実行する必要があります。.html()
次に、jQueryの場合と同様に DOM を実行して、レンダリングされたコンテンツを取得します。
私の知る限り、これはOpera Mini が再エンコードしてデバイスに送信する前にプロキシで行う方法と似ています。
サーバーは通常どおり応答を返します — これが Opera トランスコーディング サーバーによって受信されると、マークアップとスタイルが解析され、JavaScript が実行され、データが Opera Binary Markup Language (OBML) にトランスコードされます。この OBML データは、Opera Mini によってユーザーのデバイスに徐々にロードされます。
ウィキペディアからの Opera Mini のエントリ:
リソースの制約により、JavaScript は一時停止する前に Mini サーバーで数秒間しか実行されません。
Opera Mini 4 のドキュメントによると、ページがモバイル デバイスに送信される前に、その onLoad イベントが発生し、すべてのスクリプトを最大 2 秒間実行することができます。setInterval および setTimeout 関数は無効になっているため、実行前に一定時間待機するように設計されたスクリプトはまったく実行されません。スクリプトが終了するかタイムアウトに達すると、すべてのスクリプトが停止され、ページが圧縮されてモバイル デバイスに送信されます。