JavaScriptレンダリングとは?ブラウザの状態の説明

JavaScriptレンダリングとは?

Scrapeless Agent Browserは、クラウドブラウザ内でサポートされている公開ページワークフローを実行し、自動化がJavaScriptで作成されたページ状態を検査できるようにします。

TL;DR

  • JavaScriptレンダリングは、ブラウザの状態を変更するページの実行です。 スクリプトは、初期HTMLが到着した後にデータを取得し、DOMを更新することができます。
  • ページには、最終的な瞬間ではなく、いくつかの有用な状態があります。 解析、データ到着、相互作用、レイアウト、および後での更新は、異なる時刻に発生する可能性があります。
  • クライアントサイドレンダリングはアーキテクチャであり、レンダリングはプロセスです。 ハイブリッドページは、サーバーのHTMLと後のJavaScriptの更新を組み合わせることができます。
  • データ収集には特定の完了テストが必要です。 目標レコードまたは明示的な空の状態は、単独のロードイベントよりも強い証拠です。

JavaScriptレンダリングは、ページコードが実行され、ユーザーまたは自動化システムが観察できるものを変更する際にブラウザが行う作業です。初期文書には完全なテキスト、部分的なレイアウト、または小さなアプリケーションシェルが含まれていることがあります。スクリプトはデータを取得し、DOMノードを作成し、イベントハンドラを追加し、相互作用の後にインターフェースを再度更新することがあります。したがって、レンダリングは一つのバイナリスイッチではなく、状態のシーケンスを説明します。

これは検索、テスト、アクセシビリティ、およびウェブデータ収集に重要です。プレーンHTTPクライアントは初期レスポンスを読み取ります。ブラウザはページを実行し、後のDOMおよび視覚的な状態を公開できます。いずれのビューも普遍的に「ページ」ではありません。それぞれが異なる質問に答えます。正しい検査方法は、タスクに必要な情報を含む状態に応じて異なります。

レンダリングされたページの背後にあるブラウザパイプライン

ブラウザはHTMLを受信し、文書ツリーの構築を開始します。スタイル、スクリプト、および他のリソースを発見し、その後スクリプトを読み込みルールに従って実行します。アプリケーションコードはさらにデータを要求し、DOMを修正することができます。ブラウザはスタイルとレイアウトを再計算し、視覚的な結果を描画します。その後のユーザー入力、タイマー、またはネットワーク応答は別の更新をトリガーすることがあります。レンダリングされた状態は、この継続的なプロセスの現在の結果です。

その DOMContentLoadedドキュメント は、最初のHTMLが解析され、遅延スクリプトが実行された後に発火するイベントを説明します。これは、すべての非同期データリクエストが終了したり、すべての後のインターフェース状態が表示されることを約束するものではありません。画面は、一つのイベントでローディングスケルトンを表示し、別の応答の後にのみ実際のレコードを表示することがあります。

ビジュアルレンダリングとDOMの利用可能性は関連していますが異なります。ノードは、隠れている、ビューポートの外にある、またはまだ描画されていない場合でも、DOMに存在することがあります。スクリーンショットにはレイアウトと描画が必要です。テキスト抽出には確認済みのDOMノードのみが必要な場合があります。ネットワークデータのワークフローは、ノードが作成される前に構造化された応答を使用する場合があります。タスクに合わせた観察層を選択してください。

サーバーレンダリング、クライアントレンダリング、およびハイブリッドページ

サーバーレンダリングは、最初のドキュメントレスポンスで意味のあるHTMLを送信します。クライアントサイドレンダリングはコードを送信し、しばしばシェルを送った後、ブラウザ内で実質的なコンテンツを構築します。ハイブリッドフレームワークはサーバーのHTMLを送信し、後にイベントハンドラで水和させたり、新しいデータから更新したりできます。これらのラベルはアーキテクチャを説明しますが、一つのルートがアプローチを混ぜることがあります。製品の詳細はサーバーレンダリングされている一方で、推奨が後でロードされる場合があります。

実践的な診断は、生のレスポンスとブラウザのDOMを比較します。両方でターゲットテキスト値を検索します。それがレスポンスに含まれている場合、シンプルなパーサーで済むことがあります。後にしか現れない場合は、ネットワークリクエストとスクリプト駆動の状態遷移を検査します。 Google JavaScript SEOガイダンス は、JavaScriptコンテンツがクロール用の追加レンダリング作業を生み出す方法を説明し、生のHTMLとレンダリングされたコンテンツを別々に検査する必要性を強調しています。

この区別はテストにも影響を与えます。ドキュメントが読み込まれただけであることを主張するテストは、ルートがまだスピナーを表示している間に合格することがあります。正確なレコードまたは空の状態メッセージを待つテストは、ユーザーが目にする意味に結びついています。ページは一つの領域で完全にインタラクティブである一方、別の領域はまだ読み込まれていないため、グローバルな「レンダリング完了」フラグはしばしば粗すぎます。

データリクエスト、DOM更新、および準備状態

JavaScriptはfetchを呼び出し、JSONを受信し、アプリケーションの状態を更新し、その後レコードをDOMに配置することができます。 Fetch APIドキュメント は、スクリプトに利用可能なネットワークインターフェイスを説明します。そのレスポンスは、適切にアクセスできる場合、そのもの自体で有用なデータとなることがありますが、クライアントサイドのフォーマットや後にマージされた状態は含まれていない可能性があります。レスポンスからターゲットフィールドを追跡し、コンポーネントの状態から可視ノードまでたどってください。

準備状態はターゲットの観点で述べるべきです。リストの場合、それは安定したIDを持つレコードが存在するか、明示的な結果なしの要素が表示されることを意味する場合があります。ダッシュボードの場合、それはステータスが文書化された終端値に達することを意味する場合があります。レイジーバッチを持つページの場合、それは最終バッチの後に継続制御が消えることを意味する場合があります。固定されたスリープは単に検査を遅らせ、短すぎるか不必要に長くなることがあります。

その MutationObserverインターフェイス は、元のドキュメントイベントの後にDOMの変更を観察できることを示しています。自動化フレームワークはしばしば高レベルのロケータ待機を提供しますが、根本的な問題は残ります:ページ状態は繰り返し変化する可能性があります。必要な状態を検証し、後の無関係な更新が結果を混乱させないように迅速にキャプチャまたは抽出してください。

ウェブスクレイピングのためにレンダリングが変わること

HTMLパーサーは、受け取ったマークアップのみを読み取ることができます。初期HTMLがターゲットデータを欠いている場合、より難しい選択をすることでブラウザ生成ノードを再作成することはできません。レンダリングサービスはページコードを実行し、後でHTMLスナップショットを返すことができ、一方ブラウザセッションは必要なアクションを実行し、状態を検査できます。許可された構造化されたエンドポイントは、ターゲット値を直接公開する場合の第三の道となることがあります。それぞれのパスには異なるコストと検証要件があります。

ザ エージェントブラウザの紹介 は、公共ページの自動化のためのクラウドブラウザの表面を説明しています。ブラウザの実行や対話がタスクの中心である場合に使用してください。レンダリングされたHTMLレスポンスだけが必要なURLに対しては、Web Unlocker JS Renderガイドがより直接的かもしれません。どちらの製品も、正しいルートを特定し、ターゲットコンテンツを待ち、出力を検証する必要性を変更することはありません。

レンダラーは、技術的に完全なページビューを生成できますが、それが依然として誤ったビジネスページである可能性があります。コンセント画面、地域の通知、アクセステートはすべて正常にレンダリングできます。データを保存する前に最終URL、見出し、期待されるレコードキー、空の状態の意味を確認してください。レコードがいくつかのバッチとして読み込まれる場合、バッチ間でユニークなキーを比較して繰り返しや部分的な結果を検出します。

レンダリング、アクセシビリティ、検索可視性

ブラウザレンダリングされたインターフェースは、支援技術を使用する人々を含むユーザーに対して意味のあるテキストとコントロールを露出し続けるべきです。データがスクリプト変数の内部にのみ存在し、決してアクセス可能なコンテンツにならない場合、スクリーンショットやDOMクエリは、スクリーンリーダーのビューとは異なるストーリーを語ることができます。意味的HTMLと明確な読み込みまたはエラーステートは、ページのテストおよび解釈を容易にします。

検索システムは、異なる方法とスケジュールでJavaScriptを処理できます。発見可能なコンテンツを求めるページ所有者は、レンダリングされた出力を検査し、現在の検索エンジンのガイダンスに従うべきで、すべてのクローラーがユーザーのブラウザとまったく同じようにスクリプトを実行するとは想定すべきではありません。コレクターにとっては、類似の教訓は実際の取得環境をテストすることです。デベロッパーツールのスクリーンショットは、サーバー側のHTTPクライアントが同じテキストを見ることができることを証明しません。

ザ エージェントブラウザ製品ページ は、管理されたブラウザパスを説明しており、関連する JavaScriptレンダリングの記事 は、より広範な説明を提供します。これらの概念を使用して、ルート特定の状態契約を書いてください: 初期コンテンツ、データを追加するイベントや操作、準備マーカー、および消費者に必要な正確なフィールド。

結論

JavaScriptレンダリングは、ブラウザの継続的な実行とページのプレゼンテーションです。初期HTML、非同期データ、DOMの更新、視覚的ペイントは異なるステージです。信頼できるワークフローは、どのステージがターゲット情報を所有し、その状態を直接検証するかを特定し、1つのロードイベントが全ページの完了を意味するとは想定しません。

レンダリングされた公共ページで作業する

観察されたページ状態を選択し、実行が必要な場合は文書化されたScrapelessブラウザパスを使用してください。

今日サインアップして、 $5の無料クレジットを受け取る — クレジットカードは不要です.

あなたの$5クレジットを受け取る →

FAQ

JavaScriptをレンダリングするとはどういう意味ですか?

それは、ページスクリプトをブラウザ対応環境で実行することを意味しますので、データを要求し、アプリケーションの状態を変更し、ドキュメントまたは視覚インターフェースを更新することができます。正確な観察結果は、いつどこで検査されたかによって異なります。

JavaScriptレンダリングはクライアントサイドレンダリングと同じですか?

いいえ。クライアントサイドレンダリングは、ブラウザがインターフェースの大部分を構築するアーキテクチャです。JavaScriptレンダリングは、そのアーキテクチャを作成し、多くのハイブリッドページを機能させる実行プロセスです。

通常のHTTPクライアントはJavaScriptをレンダリングできますか?

通常のHTTPクライアントはリソースを取得しますが、完全なブラウザDOMと実行環境を提供しません。初期HTMLを読み込んだり、適切な構造化エンドポイントを呼び出したりすることはできますが、ブラウザが作成した状態にはブラウザ対応のコンポーネントが必要です。

なぜDOMContentLoadedはスクレイピングには不十分なのですか?

DOMContentLoadedは初期ドキュメント解析と特定のスクリプトに関連していますが、非同期データやその後のDOM更新はその後も続けることができます。抽出タスクに必要な特定のレコードまたは明示的な空の状態を待ってください。

レンダリングは完全なデータを保証しますか?

いいえ。ページはシェル、同意通知、または最初の遅延バッチのみをレンダリングすることができます。レンダリングされたスナップショットを完全なものとして扱う前に、ルート識別、必要なフィールド、ユニークキー、および継続状態を検証してください。

参考文献