目次
概要
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を指定してください。省略するとエラーになります。
注意点
- 読み込み待機の挙動
driver.get()は、ページのHTML構造(DOM)が読み込まれるまで処理を停止(ブロック)します。- ただし、最近のWebサイト(SPAなど)でJavaScriptによって後から表示されるコンテンツについては、読み込み完了とみなされず、別途
WebDriverWait等での待機処理が必要になる場合があります。
- タイムアウト
- ページの読み込みが極端に遅い場合、スクリプトが長時間止まることがあります。必要に応じて
driver.set_page_load_timeout(秒数)を設定してタイムアウト時間を管理します。
- ページの読み込みが極端に遅い場合、スクリプトが長時間止まることがあります。必要に応じて
- ローカルファイル
- Web上のURLだけでなく、
file:///C:/path/to/file.htmlのように指定すればローカルのHTMLファイルを開くことも可能です。
- Web上のURLだけでなく、
応用
リストに格納した複数の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操作の基本中の基本です。 単にページを開くだけでなく、「読み込み完了を待ってくれる」という特性を理解しておくと、その後の要素取得や操作をスムーズに行うことができます。動的なページの場合は、この後に待機処理を追加することを検討してください。
