Puppeteerとは何ですか?ブラウザーの自動化を明確に説明

Puppeteerとは何ですか?ChromeとFirefoxの自動化の説明

Scrapeless Scraping Browserは、Puppeteerクライアントがブラウザー自動化と動的ウェブデータワークフローに使用できる管理されたクラウドブラウザーセッションを提供します。

要約

  • PuppeteerはJavaScriptのブラウザー自動化ライブラリです。 その高レベルAPIは、ナビゲーション、入力、スクリーンショット、PDF、ネットワーク観察、およびページ評価のためにChromeとFirefoxを制御します。
  • Puppeteerは1つ以上のブラウザープロトコルを使用します。 Chromeは通常、Chrome DevToolsプロトコルを使用し、Firefoxの自動化は現在のPuppeteerドキュメントではデフォルトでWebDriver BiDiを使用します。
  • このパッケージはブラウザーを管理または接続できます。 ワークフローは、互換性のあるローカルブラウザーを起動したり、ブラウザーを個別にインストールしたり、サポートされているリモートエンドポイントに接続したりできます。
  • Puppeteerはすべてを一つにまとめるのではなく、特化しています。 それはブラウザー制御を提供しますが、テスト発見、主張、フィクスチャ、およびレポートを他のライブラリやアプリケーションコードに委ねます。
  • ブラウザーは使用可能なデータを保証しません。 スクリプトは、状態を認識した待機、安定したセレクター、出力検証、制限されたトラフィック、およびターゲットへのアクセスに明示的な許可がまだ必要です。

PuppeteerはJavaScriptにブラウザーの直接制御を与えます。

Puppeteerは、サポートされているブラウザーを高レベルのAPIを通じて制御するためのオープンソースのJavaScriptライブラリです。ブラウザー、コンテキスト、ページ、フレーム、入力、ネットワーク、トレーシング、スクリーンショット、PDF、および評価操作を公開します。スクリプトは、Puppeteerが管理するブラウザーを起動することも、互換性のある既存のブラウザープロセスに接続することもできます。APIはJavaScriptファーストであり、ブラウザーの概念と密接に関連しているため、Node.jsサービス、コマンドラインツール、クローラー、視覚キャプチャシステム、およびカスタムテストハーネスに適しています。

公式のPuppeteer導入 PuppeteerをChromeとFirefoxの自動化のためのJavaScriptライブラリとして紹介します。古い説明はしばしばPuppeteerをヘッドレスChromiumに還元しますが、それは現在では不完全です。ヘッドレスChromeは中心的なユースケースですが、現在のブラウザーのサポートとプロトコルの作業にはFirefoxが含まれています。チームはブラウザーを選択したり移行を設計したりする際に、歴史的な定義を繰り返すのではなく、現在の互換性表を使用するべきです。

ブラウザー、コンテキスト、ページ、およびプロトコルは一緒に機能します。

ブラウザーオブジェクトはプロセスまたはリモート接続を所有します。BrowserContextは独立したセッションのためにクッキーとストレージを分離します。ページはタブを表し、ナビゲーション、DOMクエリ、ロケーター、イベント、スクリーンショット、およびスクリプト実行を提供します。高レベルAPIの下では、プロトコルがコマンドとイベントを伝送します。Chrome自動化は一般にCDPを使用し、WebDriver BiDiはPuppeteerがFirefox用に使用し、サポートされた機能のためにChromeで使用できるクロスブラウザーのイベント駆動型パスを提供します。

公式のPuppeteer WebDriver BiDiガイド PuppeteerのWebDriver BiDiサポートを説明し、サポートされていない操作がUnsupportedOperationエラーを生成する可能性があることを指摘します。その境界はプロトコル選択で重要です:CDPは深いChrome特有の表面を公開し、BiDiは標準化されたクロスブラウザー制御を目指していますが、まだ開発中です。ネットワークの傍受、ダウンロード、エミュレーション、トレーシング、拡張機能、またはブラウザー管理の正確な機能を、プロジェクトで必要なプロトコルとブラウザーでテストしてください。

  • ブラウザー。 ブラウザーのプロセスを起動または接続し、全体のライフサイクルを管理します。
  • BrowserContext。 ブラウザー内に孤立したクッキー、キャッシュ、およびストレージ境界を作成します。
  • ページ。 タブを表し、ナビゲーション、入力、評価、ネットワーク、およびキャプチャ操作を公開します。
  • CDPセッション。 高レベルAPIが不十分な場合に、Chrome DevToolsプロトコルのドメインへの低レベルのアクセスを提供します。
  • WebDriver BiDi接続。 サポートされるクロスブラウザー操作のためのイベント駆動型標準パスを提供します。

Puppeteerは起動、インストール、または接続できます。

完全なPuppeteerパッケージは通常、互換性のあるブラウザーのダウンロードを管理し、ローカルプロジェクトの開始を容易にしますが、インストールサイズが増加します。Puppeteer Coreはその管理されたブラウザーを省略し、ブラウザーの実行可能ファイルまたはリモートサービスが別に提供される場合に便利です。リモート接続はNode.js制御プロセスをローカルに保ちながら、ブラウザーの実行が別のホストで行われることを意味します。各アプローチは、ブラウザーのバージョン、実行可能なパス、サンドボックス設定、オペレーティングシステムの依存関係、およびクリーンアップの所有者を変更します。

公式のPuppeteerサポートブラウザーテーブル PuppeteerのリリースとサポートされているChromeおよびFirefoxのバージョン間のマッピングを公開します。そのマッピングは運用上のものであり、トリビアではありません。パッケージを固定してブラウザーを静かに変更するとサポートされていない組み合わせを生む可能性があり、パッケージをアップグレードするとダウンロードされたブラウザーが変更されることがあります。コンテナとCIイメージは、両側を記録する必要があります。リモートサービスは、プロダクションで観察された動作を再現するのに十分な環境情報を公開するべきです。

Puppeteerの選択は所有権と移植性に影響します。

同じページAPIは異なるインストールおよびプロトコルモデルの上に存在できますが、それらのモデルは同一のメンテナンスや機能の境界を持っていません。

選択運用効果
Puppeteerパッケージブラウザー管理の動作を含み、プロジェクトがPuppeteerに互換性のあるローカルブラウザーを所有させたい場合に便利です。
Puppeteer Coreブラウザーのインストールとライフサイクルをプロジェクトまたはリモートプロバイダーに委ね、ライブラリパッケージの仮定を減らします。
ローカル起動アプリケーションはオペレーティングシステムの依存関係、ブラウザープロセス、サンドボックスの設定、リソース、およびクリーンアップを所有します。
リモート接続サービスはブラウザーのホスティングを所有し、アプリケーションはPuppeteerのロジックを保持し、リモート機能のサポートを確認する必要があります。
CDPChrome特有の詳細な検査と制御を提供し、Puppeteerのデフォルトのパスです。
WebDriver BiDiサポートされている機能のためのクロスブラウザコマンドとイベントを提供し、PuppeteerのFirefox用デフォルトのパスです。

集中したAPIから恩恵を受けるPuppeteerのユースケース

Puppeteerは、指定されたテストアーキテクチャを採用せずにJavaScriptアプリケーション内でブラウザプリミティブを必要とするプロジェクトに適しています。

動的ページ抽出

Puppeteerはクライアントアプリケーションをレンダリングし、許可されたインタラクションを行い、DOMや観測されたレスポンスから構造化された公開情報を抽出できます。

スクリーンショットとPDFサービス

Node.jsサービスは制御されたページを読み込み、ビューポートとメディア設定を適用し、視覚的または印刷可能なアーティファクトを生成できます。

カスタムテストハーネス

既存のJavaScriptランナーを持つチームは、自分たちのフィクスチャ、アサーション、レポート、スケジューリングを維持しつつ、ブラウザ制御を追加できます。

ブラウザ診断

CDPアクセス、トレース、コンソールイベント、パフォーマンスデータ、およびネットワーク検査は、デバッグおよび合成監視をサポートできます。

Puppeteerはプロジェクトにテストアーキテクチャとキャパシティを残します

Puppeteerは1つのランナー、アサーションライブラリ、フィクスチャモデル、またはレポート形式を指定しません。これはアプリケーションに自動化を埋め込むのに役立ちますが、テストチームはそれらのレイヤーを組み立てて維持する必要があります。ブラウザプロセスはまた、物理的リソースを消費し、1つのNode.jsプロセスはコードが複雑に見える前にあまりにも多くのページを作成できます。ブラウザとコンテキストのプーリングを慎重に定義し、リソースを決定論的に閉じ、ストレージを共有すべきでないアカウントや市場を隔離します。

Chrome DevToolsプロトコルの文書 Chromeを計測、検査、デバッグ、プロファイルするために使用されるインターフェースとしてChrome DevToolsプロトコルを文書化します。CDPの深さは貴重ですが、Chrome特有のコマンドは移植性を低下させます。低レベルのプロトコル呼び出しは小さなアダプターの背後に置き、なぜそれらが必要なのかを文書化し、同じワークフローがWebDriver BiDiや別のブラウザを介して実行されるときに明確な振る舞いを提供します。

Puppeteerプロジェクトの準備チェックリスト

重要な決定はブラウザの所有権、プロトコル、コンテキストの範囲、証拠、およびPuppeteerが意図的に開けておくフレームワークレイヤーです。

  1. 要件からブラウザを選択する。 Chromeだけが十分か、Firefoxの動作が重要かを確認します。現在のサポートされているブラウザの表を使用し、マトリックスにコミットする前に正確な組み合わせを実行します。
  2. パッケージの所有権を選択する。 Puppeteerが互換性のあるブラウザを管理すべきときは完全なパッケージを使用し、コンテナ、システムパッケージ、またはリモートサービスがブラウザを所有するときはPuppeteer Coreを使用します。
  3. プロトコルの依存関係を特定する。 すべての直接CDP呼び出しとWebDriver BiDiで期待されるすべての機能をリストします。ブラウザ特有の動作は一般的なヘルパーの内部に隠すのではなく、可視化します。
  4. コンテキスト範囲を意図的に設定する。 独立したクッキーとストレージのために別々のコンテキストを使用します。共有コンテキストは、ワークフローが1つのアイデンティティまたは状態を継続することを目的としている場合にのみ適切です。
  5. 意味のある条件を待つ。 進捗をセレクター、レスポンス、URLの変更、関数の結果、または他の観測可能な状態に結びつけます。固定の遅延は主な同期の負担を担うべきではありません。
  6. テストスタックを構築する。 プロジェクトがテストスイートである場合、Puppeteerを取り囲むランナー、アサーションライブラリ、フィクスチャ、レポート、およびアーティファクトポリシーの名前を付けます。
  7. ブラウザの能力を測定する。 プロセスのメモリ、アクティブページ、起動コスト、セッションの持続時間、ネットワークボリューム、およびターゲットホストの同時実行を追跡し、ワーカーを増加させる前に確認します。
  8. 出力内容を検証する。 最終的なURL、期待されるフィールド、ページの言語、レコード数、およびページのタイプを確認します。成功したナビゲーションは、同意画面や不完全なアプリケーションシェルに到達する可能性もあります。

Scrapeless Scraping Browserと共にPuppeteerを使用する

Scrapeless Scraping Browserは、Puppeteerクライアントがサポートされているリモートエンドポイントを介して接続するブラウザセッションをホストできます。アプリケーションは、Scrapelessがクラウドブラウザプロセス、セッション設定、構成されたネットワークパスを所有しながら、Puppeteerのページ操作を保持します。

現在のエンドポイント、サポートされているクライアントパッケージ、セッションコントロール、およびリモート機能の表面を確認し、製品ワークフローを進める前に確認してください。現在の Scrapeless Scraping Browser製品概要, Scrapeless Scraping Browserのはじめに文書, と Scrapelessの価格 を選択モデルの前に確認してください。

結論:Puppeteerは集中したブラウザ制御ライブラリです

Puppeteerは、JavaScriptアプリケーションがChromeとFirefoxを直接、高レベルで制御する方法を提供します。互換性のあるブラウザを起動し、リモートセッションに接続し、CDPを介して作業し、サポートされているクロスブラウザ操作のためにWebDriver BiDiを使用できます。焦点を当てたAPIは、ブラウザの動作をカスタムシステムに埋め込むのを簡単にします。

その焦点は、重要な決定をプロジェクトに委ねます。ブラウザのバージョンを制御し、プロトコルの仮定を明示し、コンテキストの状態を隔離し、条件に基づく待機を選択し、返されたページを検証し、テストが仕事であるときにテストスタックを組み立てます。

クラウドでPuppeteerを実行する準備はできていますか?

Scrapelessアカウントを作成し、より大きな自動化サービスに移行する前に、管理されたブラウザセッションに対して1つの制約されたPuppeteerワークフローをテストしてください。

無料で始める →

FAQ

PuppeteerはFirefoxをサポートしていますか?

はい。現在のPuppeteerのドキュメントではChromeとFirefoxのサポートを示しています。FirefoxはデフォルトでWebDriver BiDiを使用し、Chromeは通常CDPを使用します。機能カバレッジはブラウザやプロトコルによって異なる場合があるため、同一の動作を仮定するのではなく、必要な操作をすべてテストしてください。

PuppeteerはヘッドレスChrome専用ですか?

いいえ。Puppeteerはサポートされているブラウザをヘッドレスまたはヘッドモードで実行でき、現在はChromeとFirefoxをカバーしています。歴史的な「ヘッドレスChromeライブラリ」の説明は、現在のブラウザとWebDriver BiDiのサポートを見落としています。

PuppeteerとPuppeteer Coreの違いは何ですか?

完全なPuppeteerパッケージにはブラウザ管理の動作が含まれており、通常は互換性のある管理されたブラウザで動作します。Puppeteer Coreはそのブラウザの所有権がないライブラリで、実行可能ファイル、コンテナイメージ、またはリモートブラウザサービスを別途提供するプロジェクトに適しています。

Puppeteerはウェブスクレイピングに使用できますか?

はい。PuppeteerはJavaScriptページをレンダリングし、公に許可されたコントロールと対話し、DOMを検査し、応答を観察できます。ブラウザの実行が利用可能なデータを変更する場合にのみ使用してください。初期の応答が十分な場合、直接HTTP収集はより簡単です。

Puppeteerにはテストランナーが含まれていますか?

完全なテストアーキテクチャとして、単一のランナーは必要なく、バンドルされていません。チームは通常、PuppeteerをJavaScriptのテストランナー、アサーションライブラリ、フィクスチャ、およびレポートツールと組み合わせたり、スケジューリングと結果の処理を行うカスタムアプリケーションに埋め込んだりします。

参考文献