#概要
python3 webBrowsrモジュールとは、非常に簡単にpythonからブラウザを呼び出すことのできるライブラリである。単にブラウザを開くだけであれば、python から Web ブラウザを開く方法のように書くだけで済むのだが、任意のブラウザーを呼び出しても、pythonの実行を止めたくない時にも使うことができる。今回はwebBrowsrモジュールでできそうなことをまとめてみる。
既定のブラウザでwebページを開く
import webbrowser
url = "amazon.co.jp"
webbrowser.open(url)
しかし、windowsで「既定のブラウザ」を設定していてもIEが起動してしまう。
そこで以下の方法で任意の既定ブラウザを利用できるようにする。
###環境変数を設定する。
環境変数"%BROWSER%"を作成し、起動したいブラウザのpathを登録することで、任意のブラウザから起動できるようになる。
環境変数 BROWSER が存在する場合、これは os.pathsep で区切られたブラウザのリストとして解釈され、プラットフォームのデフォルトのブラウザリストに先立って順に試みられます。
ドキュメントより引用
任意のブラウザでwebページを開く
import webbrowser
url = "amazon.co.jp"
browser = webbrowser.get('"(chrome.exe までの絶対パス)" %s')
browser.open(url)
webbrowser.get()を利用することで任意のブラウザを実行することができる。ところが、この方法を使ってしまうとブラウザを閉じるまでpytohnの実行がとまる
これは、webbrowserモジュールがシステムのコマンドラインからブラウザを呼び出すための実行パスを取得し、それをもとに生成したサブプロセスの終了を待っているためである。("subprocess.Popen("実行コマンド").wait()"が実行されているため)
任意のブラウザで開いてもpythonの実行を止めない
import webbrowser
url = "amazon.co.jp"
browser = webbrowser.get('"(chrome.exe までの絶対パス)" %s &')
browser.open(url)
そこで実行したいブラウザのパスの最後尾に"&"をつける。ライブラリ上ではバックグラウンドで実行すると解釈されて"subprocess.Popen("実行コマンド").poll()"が実行され、pythonは実行を続けることができる。
リストの中の値に %s が含まれていれば、 %s を URL に置換したコマンドライン文字列と解釈されます
#一言
実は簡単なGUIを作った際に、ブラウザを呼び出したらGUIが止まってしまい、つまったのをこの方法で解決しました。ドキュメントをよく読めば分かったかもしれませんが、わかりづらく、
まとまった記事がなかったため、今回の記事にまとめさせていただきました。