Pythonのwebbrowserモジュールを使って指定のURLを複数同時に開く

今回の記事はPythonのwebbrowserモジュールを使って指定のURLを複数同時に開く方法を解説します。ですがその前にwebbrowserモジュールの挙動を理解するために最初に簡単な例としてヤフーニュースのサイトをたくさんのタブで開くというのをやってみたいと思います。そのあとに指定のURLを複数同時に開く方法を解説します。

スポンサーリンク

webbrowserを使ってChromeのタブを何個開けるかやってみる

Pythonのwebbrowserを使って、yahooニュースのサイトを一気に50個ひらいたらどうなるのか検証してみました。

ブラウザ

Pythonのwebbrowserモジュールってなに?

pythonのwebbrowseropenは引数(パラメーターに)ウェブサイトのURLを指定することによって、プログラムが自動的にウェブサイトを開いてくれるようになります。今回やったヤフーニュースを50個ひらく作業は手作業でやると少し時間がかかると思いますが、プログラムだとはやいです。

今回検証したパソコンのスペック

ヤフーニュースのサイトを50タブ開くだけなのでパソコンスペックは関係ないかもしれませんが一応のせておきます。

  • CPU:Ryzen 1700X
  • メモリ:16GB

結果から話しますと、とくに問題はありませんでした。しかし、後半あたりは少しきつい感じがしました。なんでこれをやろうかと思ったかは自分でもわかりませんが、pythonでwebスクレイピングをやっていると一体どこまでできるのだろうと先が見えない感じになっていました。ただ同じサイトをタブで開くだけなのでどうでもいいとは思いますが、コードを載せておきます。

import webbrowser

for i in range(50):
    webbrowser.open('https://news.yahoo.co.jp/')

webbrowser.open()を50回繰り返しているだけの構文です。一説によりますとchromeはタブが開ける上限が決まっているらしいです。50個以上タブチャレンジはしようと思いませんでした。さすがに50個より先は現実的ではない感じがしました。

スポンサーリンク

webbrowserモジュールを使って指定のURLを複数同時に開く方法


Pythonのwebbrowserモジュールでは、指定のURLを同時に複数開くことは直接サポートされていませんが、マルチスレッドを使用してそれを実現することができます。マルチスレッドを使うことで、複数のURLを非同期に処理し、同時にブラウザで開くことができます。

以下は、マルチスレッドを使用して指定のURLを同時に複数開くサンプルコードです。

import webbrowser
import threading

def open_url(url):
    webbrowser.open(url)

urls = [
    'https://www.example.com',
    'https://www.google.com',
    'https://www.yahoo.co.jp',
    # 追加のURLをここに記述
]

threads = []

for url in urls:
    thread = threading.Thread(target=open_url, args=(url,))
    thread.start()
    threads.append(thread)

# 全てのスレッドが終了するのを待つ
for thread in threads:
    thread.join()

上記のコードでは、urlsリストに複数のURLを追加し、各URLを別々のスレッドで非同期に開くことができます。threading.Threadクラスを使用して新しいスレッドを作成し、webbrowser.open関数をスレッドで実行することで、URLを同時に複数開くことができます。

雑感

webbrowserはあまり使う場面はないかもしれまんが、たとえばグーグルの検索結果のリンクを一気に開きたい場合などにwebbrowserモジュールが活躍します。それ以外はいつ役に立つのかわかりませんがこのモジュールを活かせるかは開発者次第のような気もします。

コメント

タイトルとURLをコピーしました