こんにちは。今回はWebスクレイピングで必ずと言っていいほど使うSeleniumとBeautifulSoupについて、簡単に違いをまとめてみました。
用途の違いがイマイチ掴めない方は、ぜひこちらの記事を参考にイメージを掴んでみてください。
それぞれの特徴
まずはSeleniumとBeautifulSoupの特徴を解説します。
Selenium
公式ページ
https://www.selenium.dev/ja/documentation/
Seleniumはラウザを制御してWeb操作を自動化するためのツールです。Webアプリケーションのテストを自動化したり、Webスクレイピングを行ったりするときに使用します。
具体的には、Google ChromeやFirefoxなどのブラウザでWebページやWebアプリケーションを制御し、ボタンのクリックやテキスト入力、JavaScriptの実行を行うことができます。
ブラウザを通じてJavaScriptによって生成されるボタンなどといったWebページ上のダイナミックなコンテンツを操作できるため、JavaScriptによって動的に要素が生成されるWebサイトのスクレイピングに適しています。
BeautifulSoup
公式ページ
https://www.crummy.com/software/BeautifulSoup/bs4/doc/
BeautifulSoupは、HTMLやXMLなどのマークアップ言語からデータを抽出するためのライブラリです。Webスクレイピングを行うときに利用します。
具体的には、ウェブページのソースコードを解析し、タグや属性を指定してデータを抽出したり、Webスクレイピングを行ったりすることができます。
あくまでマークアップ言語からデータを抽出するためのライブラリであるため、JavaScriptによって動的に要素が生成されるWebサイトのスクレイピングには適していません。
違い
ここからは、特徴を踏まえた違いについて、表形式でまとめています。
Selenium | BeautifulSoup | |
目的 | ブラウザを制御することでWeb操作を自動化する | HTMLやXMLからデータを抽出する |
ブラウザの制御 | 制御する | 制御しない |
動的なコンテンツ | アクセス可能 | アクセス不可 |
実行環境 | Pythonのライブラリ、ブラウザドライバー | Pythonのライブラリのみ |
使い分け
両方とも似たようなツールでしたが、
- Selenium ... JavaScriptによって動的に要素が生成されるWebページのスクレイピングに適している
- BeautifulSoup ... 静的なWebページからのデータ抽出に適している
と、それぞれできること・得意なことが違います。
実際の案件ではJavaScriptに依存しているWebページをスクレイピングしデータの抽出までを行うケースがほとんどであるため
- SeleniumでWebページを操作して
- 対象のページからHTMLのコードを取得して
- BeautifulSoupで解析してデータを抽出
というように両方を併用することが多いです。
まとめ
今回はPythonのWebスクレイピングで使用する Selenium と BeautifulSoup の違いについて解説しました。
似たようなツールでも違いがわかると、業務シーンによって効果的にツールを選択することができ、快適に進めることができるのでぜひ参考にしていただけると嬉しいです。