【Python】Seleniumで指定したURLのWebページを開く

目次

概要

Seleniumを使用して、ブラウザを指定したURL(Webサイト)へ移動させる方法を解説します。 get() メソッドは、単にページを開くだけでなく、ブラウザがHTMLの読み込みを完了するまで(onload イベント発火まで)処理を待機してくれる重要な特徴を持っています。

仕様(入出力)

  • 入力: アクセスしたいWebサイトのURL文字列
  • 出力:
    • ブラウザによるページの表示
    • ページタイトルや現在のURL情報の取得
  • 前提:
    • SeleniumおよびWebDriverの設定が完了していること。

基本の使い方

Chromeブラウザを起動し、指定されたブログ(morinokabu.com)へアクセスしてタイトルを表示する基本的なコードです。

from selenium import webdriver
import time

driver = webdriver.Chrome()

# 指定したURLへ移動(ページの読み込み完了まで待機します)
driver.get("https://morinokabu.com")

# ページタイトルを標準出力へ表示
print(f"ページタイトル: {driver.title}")

time.sleep(2) # 確認用に少し待機
driver.quit()

コード全文

例外処理を組み込み、アクセス前とアクセス後の状態変化(URLの推移)を確認できる実用的な実装例です。

from selenium import webdriver
from selenium.common.exceptions import WebDriverException
import time

def open_website_demo():
    """
    Seleniumを使って特定のURLへアクセスし、情報を取得するデモ関数。
    """
    driver = None
    target_url = "https://morinokabu.com"

    try:
        # ブラウザ起動
        print("ブラウザを起動しています...")
        driver = webdriver.Chrome()

        # 1. アクセス実行
        print(f"アクセス中: {target_url}")
        driver.get(target_url)

        # 2. ページ情報の取得
        # get()メソッドはページの読み込み完了までブロックするため、
        # ここに到達した時点でページは表示されています。
        page_title = driver.title
        current_url = driver.current_url

        print("-" * 30)
        print("アクセス完了")
        print(f"タイトル : {page_title}")
        print(f"URL      : {current_url}")
        print("-" * 30)

        # 3秒間表示して確認
        time.sleep(3)

    except WebDriverException as e:
        # URLが無効な場合やネット接続がない場合のエラー処理
        print(f"アクセスエラーが発生しました: {e}")
    
    except Exception as e:
        print(f"予期せぬエラー: {e}")

    finally:
        # ブラウザを閉じる
        if driver:
            print("ブラウザを終了します。")
            driver.quit()

if __name__ == "__main__":
    open_website_demo()

カスタムポイント

ページ遷移メソッド

get() 以外にも、ブラウザのナビゲーション機能を利用するメソッドがあります。

  • driver.back(): 「戻る」ボタンを押した時と同じ動作。
  • driver.forward(): 「進む」ボタンを押した時と同じ動作。
  • driver.refresh(): ページを再読み込み(F5)します。

URLの指定

  • 必ず http:// または https:// から始まる完全なURLを指定してください。省略するとエラーになります。

注意点

  1. 読み込み待機の挙動
    • driver.get() は、ページのHTML構造(DOM)が読み込まれるまで処理を停止(ブロック)します。
    • ただし、最近のWebサイト(SPAなど)でJavaScriptによって後から表示されるコンテンツについては、読み込み完了とみなされず、別途 WebDriverWait 等での待機処理が必要になる場合があります。
  2. タイムアウト
    • ページの読み込みが極端に遅い場合、スクリプトが長時間止まることがあります。必要に応じて driver.set_page_load_timeout(秒数) を設定してタイムアウト時間を管理します。
  3. ローカルファイル
    • Web上のURLだけでなく、file:///C:/path/to/file.html のように指定すればローカルのHTMLファイルを開くことも可能です。

応用

リストに格納した複数のURLを順番に巡回するクローリングの基礎となるコードです。

from selenium import webdriver
import time

def crawl_pages():
    urls = [
        "https://morinokabu.com",
        "https://www.python.org",
        "https://www.google.com"
    ]
    
    driver = webdriver.Chrome()
    
    try:
        for url in urls:
            print(f"移動中: {url}")
            driver.get(url)
            print(f" - Title: {driver.title}")
            time.sleep(1) # サーバー負荷軽減のための待機
            
    finally:
        driver.quit()

if __name__ == "__main__":
    crawl_pages()

まとめ

driver.get("URL") はSelenium操作の基本中の基本です。 単にページを開くだけでなく、「読み込み完了を待ってくれる」という特性を理解しておくと、その後の要素取得や操作をスムーズに行うことができます。動的なページの場合は、この後に待機処理を追加することを検討してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次