ユーニックス総合研究所

  • home
  • archives
  • beautifulsoup4-install

10分でわかるBeautifulSoup4のインストール

  • 作成日: 2020-11-06
  • 更新日: 2023-12-24
  • カテゴリ: BeautifulSoup4

10分でわかるBeautifulSoup4のインストール

プログラミング言語のPythonにはBeautifulSoup4(ビューティフル・スープ・フォー)という外部ライブラリがあります。
これはHTMLやXMLをパース(解析)するライブラリです。

スクレイピングなどではおなじみで、取得したWebページのコンテンツをパースして、タグ(要素)を取得したいときなどによく使われます。
バージョンを重ね洗練されていったライブラリなので、ストレスもなく簡単に使うことができます。
名前は長いですが、それを差し引いても非常にパワフルで便利なライブラリと言えます。

正確にはパーサーではなく、複数のHTMLパーサーを統合して共通したインターフェースをユーザーに提供するラッパーと言えるライブラリです。
また、BeautifulSoup4の内部で使用するパーサーを明示的に変更することも可能で、これによって柔軟な指定が可能になります。

海外のライブラリなので、公式ドキュメントは英語ですが、有志の方により和訳のページ↓も用意されています。

ただ和訳の方は最終更新日がかなり前なので、最新の情報が知りたい場合は英語の公式ドキュメント↓を見たほうがいいでしょう。

今回はBeautifulSoup4のインストールについて、以下のようにまとめました。

  • インストール方法
  • 初期化方法

最初にBeautifulSoup4のインストール方法から解説します。

インストール方法

BeautifulSoup4はPythonの標準ライブラリではなく、外部ライブラリです。
そのためインストールにはpipなどのパッケージマネージャーが必要になります。

pipはPythonをインストールしている環境であれば使えるようになっていることが多いです。

環境にpipがインストールされているかどうかは↓のコマンドで確認可能です。
Linux環境の人は↓のようにシェルにpipとコマンドを打ち込んでみてください。

pip  

またWindows環境の人もコマンドプロンプトやPowerShellなどを開き、↓のコマンドを実行してみてください。

pip  

pipがインストールされていれば、pipの使い方が画面に表示されると思います。
pipがインストールされていることが確認できたら↓のようにBeautifulSoup4をインストールします。

pip install BeautifulSoup4  

すると↓のようなログが流れ、BeautifulSoup4がインストールされます。

Collecting BeautifulSoup4  
  Downloading beautifulsoup4-4.9.3-py3-none-any.whl (115 kB)  
     |████████████████████████████████| 115 kB 3.3 MB/s  
Collecting soupsieve>1.2; python_version >= "3.0"  
  Using cached soupsieve-2.0.1-py3-none-any.whl (32 kB)  
Installing collected packages: soupsieve, BeautifulSoup4  
Successfully installed BeautifulSoup4-4.9.3 soupsieve-2.0.1  

今回はバージョン4.9.3のBeautifulSoup4がインストールされました。
インストールの際に明示的にBeautifulSoup4のバージョンを指定したい場合は↓のように、インストール時にバージョンを指定します。

pip install BeautifulSoup4==4.9.3  

pip showコマンドを使うとインストールしたBeautifulSoup4の情報を確認できます。

pip show BeautifulSoup4  

初期化方法

次にBeautifulSoup4の初期化方法です。
BeautifulSoup4をPythonのプログラムの中で使うには、まず最初にBeautifulSoup4をインポートする必要があります。

from bs4 import BeautifulSoup4  

↑のようにbs4モジュールからBeautifulSoup4クラスをインポートすれば準備完了です。
次にBeautifulSoup4クラスを初期化します。
BeautifulSoup4では↑でインポートしたBeautifulSoup4クラスをメインに使います。
このクラスをオブジェクト、インスタンスにして、そのメソッドを操作することでHTMLのDOMを操作することが可能です。

BeautifulSoup4クラスは初期化時に2つの引数を必要とします、
第1引数はパース対象の文字列です。これにはHTMLで記述された文字列を指定します。
第2引数は内部パーサーを表す文字列です。これには複数のパーサーを指定可能です。

BeautifulSoup4クラスを↓のようにオブジェクトにします。

soup = BeautifulSoup4('<p>test</p>', 'html.parser')  

↑のBeautifulSoup4クラスの第1引数に指定している<p>test</p>は、とりあえずこの内容にしていますが、これは空文字列でも別のHTMLの文字列でもかまいません。
ただのテスト用の文字列です。

第2引数のhtml.parserは文字列の定数です。
第2引数にhtml.parserを指定した場合、BeautifulSoup4クラスはパースで標準ライブラリのhtml.parserを使います。
標準ライブラリのhtml.parserは何も準備しなくても、指定するだけで使うことが出来る一番お手軽なパーサーです。

使える内部パーサーの種類

BeautifulSoup4クラスの第2引数に指定できるパーサーは↓の通りです。

  • html.parser
  • lxml
  • lxml-xml
  • html5lib

現在は全部で上記4つのパーサーが使えるようになっているようです。

html.parser

Pythonの標準ライブラリのHTMLパーサーです。
速度はほどほど。
Python3.2以降はDOMの解釈が寛容なパーサーです。

とりあえず最初はこのパーサーを使うといいでしょう。
これは標準ライブラリのパーサーなので特に環境をセットアップしなくても、Pythonがインストールされていれば使えるようになっているはずです。
また、速度もほどほどに出るため、ほとんどの場合このパーサーで困ることはないはずです。

DOMの解釈をもっと寛容にしたい場合はhtml5libなどのパーサーの利用を検討するといいでしょう。

lxml

外部ライブラリのHTMLパーサーです。
速度はとても速いです。
DOMの解釈は寛容です。
Cライブラリに依存しています。

外部ライブラリなので↓のようにpipでインストールしておく必要があります。

pip install lxml  

lxml-xml

lxml外部ライブラリのXMLパーサーです。
速度はとても速いです。
Cライブラリに依存しています。

外部ライブラリなので、↓のようにpipでちょろっとやっておきましょう。

pip install lxml  

html5lib

非常に寛大な外部ライブラリのHTMLパーサーで、Webブラウザと同じ方法でページを解析します。
ただ遅いです。
Pythonの外部ライブラリに依存します。

外部ライブラリなので例によって↓のようにインストールします。

pip install html5lib  

問題

Q1: BeautifulSoupクラスの第1引数として適当なものを答えよ

  1. XMLが書かれた文字列
  2. HTMLが書かれた文字列
  3. JSONが書かれた文字列

Q2: BeautifulSoupクラスの第2引数として適当なものを答えよ

  1. html.parser
  2. lxml
  3. json

Q3: BeautifulSoupクラスのライセンスを答えよ

  1. GPL v2
  2. MIT
  3. Apache v2

↑の問題の正解はこちら↓。

Q1: 1, 2
Q2: 1, 2
Q3: 2