【Python】 ブラウザを制御してWebサイトを表示する(webbrowerモジュール)

Python標準の組み込みライブラリであるwebbrowderモジュールは、ブラウザを制御してWebサイトを表示することができます。本記事では、このモジュールの使い方についてまとめます。
#2020/3/16 記事更新

確認した環境

  • Ubuntu16.04LTS
  • Python3.7.4

webbrowserモジュールを使ったWebサイトの表示

open() メソッドを用いて指定したURLのページをブラウザで開くことができます。
尚、後述するget()メソッドでブラウザを指定しない場合は、自身の環境のデフォルトブラウザが適用されます。表示が正常に完了するとTrueを返します。
使い方は以下です。

webbrowser.open(url, new=0, autoraise=True)

第1引数 url: 表示するWebサイトのURLを設定します。
第2引数 new: 下表に示します。

設定値 動作
0(デフォルト) 今までと同じウインドウで開く
1 新しいウインドウ
.open_new()メソッドと同じ動作
2 新しいタブ
.open_new_tab()メソッドと同じ動作

簡単な使用例を以下に示します。

>>> import webbrowser

>>> url = 'https://hibiki-press.tech'

# デフォルトブラウザ(筆者の環境ではchrome)でWebサイトを開く
 >>> webbrowser.open(url)
True

# 新しいウインドウで開く
>>> webbrowser.open(url, 1)
True

# 新しいタブで開く
>>> webbrowser.open(url, 2)
True

ブラウザを指定する

get() メソッドを使ってブラウザを指定することも可能です。書式を以下に示します。

webbrowser.get(using=None)

使いたいブラウザを、引数usingに指定します。
Noneを設定した場合は、現在の環境のデフォルトブラウザが選択されます。
具体的な使用例を以下に示します。

# デフォルトブラウザの場合
>>> webbrowser.get()
<webbrowser.Chrome object at 0x7f70e5c53240>

# 別のブラウザを指定
>>> webbrowser.get('firefox')
<webbrowser.Mozilla object at 0x7f70e5c531d0>

尚、指定できるブラウザは、公式リファレンスの表 をご参照ください。但し、現在の環境に入っていないブラウザを指定すると、webbrowser.Errorが送出されます。

# 現在の環境に入っていないブラウザを指定するとエラー
>>> webbrowser.get('safari')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/hibikisan/anaconda3/envs/python3.7/lib/python3.7/webbrowser.py", line 65, in get
raise Error("could not locate runnable browser")
webbrowser.Error: could not locate runnable browser

<参考記事>【Ubuntu】 インストールされているブラウザを調べる

また、get()メソッドによって生成されたオブジェクト(コントローラオブジェクト)は、open()メソッドをサポートしているので、これを用いて下記のようにしてWebブラウザを開くことが出来ます。

>>> webbrowser.get('firefox').open(url)
True

まとめ

Pythonの組み込みライブラリのwebbrowserモジュールを使って、簡単にWebサイトを開く方法についてまとめました。ブラウザの種類も指定できます。

Learn more...

書籍でもう少し詳しく学びたい場合はこちらもどうぞ。筆者もかなり参考にさせてもらっています!