Puppeteer 対 Selenium:主な違い

本究極のガイドでは、両ライブラリの起源、主要な特徴および機能、最も重要な事項を網羅しています。貴社の事業に最適な選択肢の選び方
1 min read
Puppeteer vs Selenium: Main Differences

PuppeteerおよびSeleniumは、オープンソースのブラウザ自動化ソリューションです。本記事では、以下の事項について詳述します。

Puppeteer 対 Selenium:その由来。

Google Puppeteerは、Node.jsのライブラリおよびブラウザテストのフレームワークです。このテクノロジーは、高度なアプリケーションプログラミングインターフェースを提供するために設計されており、DevTools Protocol上でHeadless Chromeを制御します。Seleniumは、多くのブラウザおよび言語をサポートしているのに対し、Puppeteerは、Chrome、Chromium、Javascriptに特化しています。PuppeteerはChrome用のリモートコントロールライブラリですが、Seleniumは完全なブラウザアプリケーションテストソリューションです。

Puppeteerは、Googleのチームによって書かれたもので、当チームは、Chromeブラウザの内部に無制限にアクセスできます。Puppeteer v1.0.0は、2018年1月11日に公開され、それ以降、リリースは89回行われています。最新リリースであるPuppeteer 13.6.0は、2022年4月20日に公開されました。Puppeteerのコミュニティには、414人のコントリビューターと20万人以上のユーザーがいます。

Puppeteerは、スクリーンショットテスト、パフォーマンステスト、ウェブスクレイピング、自動化に利用されています。Seleniumとは異なり、Puppeteerには、テストスクリプトを書くため、およびテストスイートを管理するための専用の統合開発環境(IDE)はありません。ユーザーは、好みのIDEを使ってJavascriptのコードを書き、Puppeteerのライブラリを活用するだけです。Puppeteerは、データスクレイピングにも利用できます。Puppeteerとプロキシの統合は、様々な方法で実現できます。

Seleniumは、オープンソースのツールの集合体で、ブラウザアプリケーションテストをサポートしています。Seleniumは、Thoughtworksという会社が始めたもので、2004年に発売されました。ブラウザのアプリケーションテストを主な対象としています。主に次の3つの要素で構成されています。Selenium WebDriver、Selenium IDE、Selenium Grid。Seleniumは、次のような複数のブラウザのアプリケーションテストをサポートしています。Chrome、Firefox、Safari、Internet Explorer、Edge、Opera。Seleniumのスクリプトは、JavaScript、Java、Ruby、C#、Pythonをサポートしています。

Seleniumの名称は、2004年に開発されたSeleniumの最初の製品「Selenium Core」の開発者であるJason Hugginsのジョークに由来しています。当時、ソフトウェアテストの市場は、Mercury Interactiveが独占していました。Jasonは、共同作成者に宛てた電子メールの中で 「水銀中毒はSelenium Supplement(セレニウムのサプリメント)を飲めば治る」というジョークを述べました。そして、この名前が定着しました。

Seleniumは、オープンソースのソリューションです。2004年に発表され、その後も着実に進化を遂げています。その後、73回リリースされました。2021年11月22日に、Selenium 4.1.0がリリースされました。コミュニティには、632人以上のコントリビューターと14万人以上のユーザーがいます。

Seleniumは、ウェブアプリケーションテスト、ウェブパフォーマンステスト、データスクレイピングに使用されています。複数のブラウザやプラットフォームでテストする必要があるアプリケーションに特に有益です。Seleniumは、主に次の3つの要素があります。

Selenium WebDriverは、ユーザーがブラウザ間で互換性のある命令を書けるインターフェイスです。テストスクリプトは、複数の言語で書けます。

Selenium IDEは、統合開発環境です。ChromeまたはFirefoxのアドオンとして利用できます。機能テストの記録、編集、デバッグができます。記録および再生機能により、テストの開発および実行が大幅に加速できます。

Selenium Gridは、お客様から送信されたコマンドをリモートブラウザのインスタンスにルーティングすることで、リモートマシン上でWebDriverスクリプトを実行できるようにします。Selenium Gridは、複数のマシンで並行してテストを実行でき、異なるブラウザのバージョンおよびブラウザの設定を一元管理できます。

Puppeteer 対 Selenium:主な特徴と機能

Puppeteerは、Chromeを自動化するための完全なソリューションです。Puppeteerを使用する一番の利点は、DevTools Protocolにアクセスできることと、Chromeを制御する機能があることです。Puppeteerは、Nodeのライブラリであるため、npmやYarnを使用して簡単にインストールできます。Seleniumは、すべてのモジュール、特定のブラウザ、使用言語を考慮するために、より複雑なインストールが必要です。Puppeteerは、超高速で動作しますが、Seleniumは、ブラウザにスクリプトコマンドを送信するためにWebDriverを必要とします。

Puppeteerは、ランタイムやロードパフォーマンスの記録、スクリーンショットのキャプチャ、さらにはモバイルデバイスでのパフォーマンスをシミュレートするためのCPUパフォーマンスのスロットルなど、重要なパフォーマンス管理機能を提供します。Seleniumには、そのようなパフォーマンス管理機能がありません。

Seleniumは、異なるOS(Windows、Linux、Mac OS)上の複数のブラウザ(Chrome、Firefox、Safariなど)で動作するアプリケーションのテストに特化したソリューションです。多くのウェブアプリケーションは、ユーザーが使用すべきブラウザを指定することができません。そのため、開発者は複数のブラウザでアプリをテストする必要があります。

Selenium IDEは、Seleniumのテストスクリプトおよびテストスイートを入力するために使用されます。テストスクリプトの記録をサポートし、テスターの生産性を劇的に向上させます。一方、PuppeteerのNode.jsのパッケージアプローチとは異なり、Selenium IDEおよびSeleneseは、開発者が学ぶ必要のある別のツールと言語の一式です。

Selenium Gridは、複数のマシン/ブラウザでのSeleniumのテスト実行を管理します。これにより、1つのテストを複数のブラウザやプラットフォームで実行できるようになります。テストスイートの並列実行により、アプリケーションのテストに必要な経過時間を短縮できます。

Puppeteer 対 Selenium:使いやすさ

Puppeteerは、経験豊富なJavaScript開発者でも簡単に使用できます。Puppeteerは、http、querystring、npm、utilなどの他のNode.jsパッケージと同様の動作をするNode.jsパッケージです。開発者は、そのクラス、メソッド、イベントを使用するアプローチに慣れることができます。しかし、このアプローチは、コードを多く必要とします。Puppeteerには、品質保証の生産性を大幅に向上させるSeleniumのテスト自動化機能がありません。

Puppeteerは、Chromeブラウザの制御に焦点を当てています。テスト専用ソリューションではありません。SeleniumのようなIDEや、並列分散テストを管理するツールは提供していません。Puppeteerの記録機能は、パフォーマンス管理に焦点を当てています。SeleniumのIDEレコーダーは、テストスクリプトおよびテストスイートの記録に特化しています。このような自動化により、生産性は大きく向上します。

Seleniumは、多くのブラウザ、言語、プラットフォームをサポートしているため、Puppeteerよりも複雑なソリューションとなっています。Selenium WebDriverおよびSelenium Gridのインストールと設定は、npmやYarnを使用するPuppeteerに比べ、簡単なものではありません。

Seleneseは、Seleniumのテストスクリプトの定義に使用される言語です。開発者にとって高レベルの言語であり、Seleniumテストを書き、実行するために習得する必要があります。Selenseは、JavaScript、Java、Ruby、C#、Pythonでコマンドを実行できる「最小公倍数的」アプローチを採用しています。Puppeteerは、JavaScriptを使用していますが、Chrome DevToolsのプロトコルのあらゆる側面にアクセスできます。Seleneseには、学習曲線があります。

どちらが貴社に最適か?

ウェブアプリケーションのテストは非常に重要です。品質保証(QA)は、一般的なリリースサイクルにおいて、30%から40%の時間を消費します。QA自動化ツールは、開発ツールの有効性と生産性を劇的に向上させることができます。

Puppeteerは、DevTools Protocol上でHeadless Chromeを制御するためのハイレベルなアプリケーションプログラミングインターフェースを提供するNode.jsパッケージです。Seleniumは、多種多様なブラウザ、言語、動作環境に対するテストの開発と実行をサポートする完全なツール群です。

SeleniumおよびPuppeteerは、どちらも拡張して機能を追加できます。SeleniumおよびPuppeteerは、データスクレイピングをサポートできます。プロキシプロバイダをSeleniumと統合することで、データスクレイピングを阻止するためにウェブサイトが実装している地理的な制限やその他の制限を克服できます。ブラウザフィンガープリントを無効にするソリューションを提供するGitHubのプロジェクトもいくつかあります。

キーポイント

SeleniumとPuppeteerのどちらを選ぶかは、ニーズ次第です。ブラウザアプリケーション、特にマルチブラウザでのテストが主な目的であれば、Seleniumの方が良い選択となります。クロスプラットフォームのテストに特化して作られています。ChromeおよびJavaScriptに焦点を当てているのであれば、Puppeteerの方が適しています。

あなたは下記にもご興味がおありかもしれません

Web Scraping with Java Guide_large
各種ご利用方法

Javaを使用したウェブスクレイピングガイド

このチュートリアルでは、Gradleプロジェクトをセットアップし、HtmlUnitの依存関係をインストールする方法を学びます。その過程で、HtmlUnitについて学び、その高度な機能のいくつかを詳しく見ていきます。
3 min read
What is a data parser featured image
ウェブデータ

データ解析とは?定義、利点、および課題

この記事では、データ解析について知っておくべきことをすべて説明します。データ解析とは何か、なぜそれが重要なのか、どのようにアプローチするのが最善かを解説します。
1 min read
What is a web crawler featured image
ウェブデータ

ウェブクローラーとは?

ウェブクローラーは、インターネットのインフラとして重要な部分を担っています。この記事では、以下の事項を説明します。 ウェブクローラーの定義 ウェブクローラーとは、インターネットをスキャンして、見つけたデータをダウンロードするソフトウェアロボットです。大半のウェブクローラーは、Google、Bing、Baidu、DuckDuckGoなどの検索エンジンによって運用されています。検索エンジンは、収集したデータに検索アルゴリズムを適用して、検索エンジンインデックスを作成します。このインデックスにより、検索エンジンはユーザーの検索クエリに基づいて、関連するリンクを提供できます。 過去の特定の時点のウェブサイトのスナップショットを提供するWay Back Machineのように、検索エンジンとは別の目的で使用されるウェブクローラーもあります。   ウェブクローラーの仕組み GoogleのGooglebotのようなウェブクローラーは、毎日、クローリングしたいウェブサイトのリストを作成して作業を開始します。これはクロールバジェットと呼ばれます。バジェットには、ページのインデックス作成に対する需要が反映されます。クロールバジェットに影響する2つの主な要因は、人気と陳腐化です。インターネット上で人気のあるURLは、インデックス内で最新の状態を保つために、より頻繁にクローリングされる傾向があります。また、ウェブクローラーはURLのインデックスが陳腐化するのを防ごうとします。 ウェブクローラーがサイトに接続すると、まずrobots.txtファイルをダウンロードして読み込みます。robots.txtファイルは、ロボットがウェブをクローリングし、コンテンツにアクセスしてインデックスを作成し、そのコンテンツをユーザーに提供する方法を規制するウェブ標準群であるロボット排除プロトコル(REP)の一部です。ウェブサイトの所有者は、サイト上でアクセスできるユーザーエージェントとアクセスできないユーザーエージェントを定義できます。また、robots.txtには、クローラーがウェブサイトに対して行うリクエストのペースを抑制するためのcrawl-delayディレクティブを定義することもできます。また、robots.txtには、サイトに関連するサイトマップも記載されているため、クローラーはすべてのページとその最終更新日時も確認できます。前回のクローラー訪問以降に変更がないページは、今回スキップされます。   ウェブクローラーは、クローリング対象のページに最終的に到達すると、そのページをブラウザーでレンダリングし、すべてのHTML、サードパーティーのコード、JavaScript、CSSを読み込みます。この情報は検索エンジンのデータベースに保存され、後でページのインデックス作成とランク付けに使用されます。また、ページ上のすべてのリンクもダウンロードします。検索エンジンのインデックスにまだ登録されていないリンクは、後でクロールするためのリストに追加されます。 robots.txtファイルに記載されているディレクティブへの準拠は任意です。ほとんどの主要な検索エンジンはrobots.txtディレクティブに従っていますが、そうでないものもあります。スパマーやボットネットなどの悪質業者は、robots.txtディレクティブを無視します。Internet Archiveのような合法的なウェブクローラーでさえ、robots.txtを無視しています。 ウェブクローラーの例 検索エンジンには複数の種類のウェブクローラーがあります。たとえば、Googleには17種類のボットがあります。 SEO対策にウェブクローラーが重要な理由 SEOの目標は、ユーザーが関連する検索語を検索したときに、自社のコンテンツが簡単に見つかるようにすることです。Googleは、コンテンツがクローリングおよびインデックス化されていない場合、コンテンツをどこにランク付けしたらよいかを知ることができません。 ウェブクローラーは、他の分野でも役立つことがあります。Eコマースサイトでは、競合他社のサイトをクローリングして、製品の品揃えや価格を分析することがよくあります。通常、この種のデータ収集は「ウェブクローリングではなくウェブスクレイピング」として知られています。ウェブスクレイピングは、特定のHTMLデータ要素に焦点を当てます。ウェブスクレイパーは非常に集中的であるのに対し、ウェブクローラーは広く網を張ってあらゆるコンテンツを収集します。ユーザーの側には、SERPデータのクローリングやスクレイピングを支援するSERP APIツールもあります。   ウェブクローラーが直面する課題 ウェブクローラーが直面する課題はいくつもあります。 課題 説明 robots.txtの制限 ウェブクローラがrobots.txtの制限に従う場合、特定のウェブページにアクセスできなかったり、任意の制限を超えるリクエストを送信できなかったりすることがあります。 IPの禁止 ウェブクローラーの中には、robots.txtの制限に従わないものもあるため、それらが他のさまざまなツールを実装してウェブクローリングを制限することがあります。ウェブサイトは、詐欺師が使用する無料データプロキシや特定のデータセンターのIPアドレスなど、悪意があることがわかっているIPアドレスを禁止することができます。 ジオロケーションの制限 一部のウェブサイトでは、ウェブサイトコンテンツにアクセスするために、特定の地域に居住していることを条件としています。たとえば、米国以外の地域からNetflix USAのコンテンツにアクセスしようとする場合です。地理的な制限の大半は、レジデンシャルプロキシネットワークを使用することで克服できます。   CAPTCHA 一部のウェブサイトでは、不審なソースからの大量のアクティビティを検出すると、リクエストの背後にいるのが本物の人間かどうかを確認するためにCAPTCHAを表示します。CAPTCHAはウェブクローラーの活動を阻害する可能性があります。多くのウェブスクレイピングソリューションは、この種のブロックを克服するためのツールや技術を備えています。これらのブロック解除ツールは、多くの場合、CAPTCHA解決ソリューションを利用します。   まとめ ウェブクローラーは、インターネットのインフラとして重要な部分を担っています。これにより、検索エンジンは検索インデックスを作成するために必要なデータを収集し、ユーザーのクエリに対して検索結果を提供できます。多くの企業は、調査を支援する役割としてのウェブクローラーに注目しています。実際には、多くの場合、Amazon、Adidas、Airbnbのリスティングのように、1つか2つのサイトに集中しています。このようなユースケースでは、Bright DataのウェブスクレイパーIDEのようなツールが、よりニーズに適しています。  
1 min read

More from Bright Data

Datasets Icon
Get immediately structured data
Access reliable public web data for any use case. The datasets can be downloaded or delivered in a variety of formats. Subscribe to get fresh records of your preferred dataset based on a pre-defined schedule.
Web scraper IDE Icon
Build reliable web scrapers. Fast.
Build scrapers in a cloud environment with code templates and functions that speed up the development. This solution is based on Bright Data’s Web Unlocker and proxy infrastructure making it easy to scale and never get blocked.
Web Unlocker Icon
Implement an automated unlocking solution
Boost the unblocking process with fingerprint management, CAPTCHA-solving, and IP rotation. Any scraper, written in any language, can integrate it via a regular proxy interface.

Ready to get started?