Claude CodeとSeleniumでブラウザ自動操作!実用的なサンプルコードを公開

スポンサーリンク

こんにちは、Heywaです。

最近、Mac M1環境に導入したClaude Codeが手放せなくなっています。ターミナル上でClaudeと対話しながらコードを書けるのは本当に快適ですね。

今回は、このClaude Codeを使って、PythonのSeleniumによるブラウザ自動操作スクリプトを構築した際の備忘録と、実用的なサンプルコードを共有したいと思います。システム思考でルーティンワークを撲滅したい方には、特におすすめの内容です。

スポンサーリンク

なぜSeleniumなのか?

Webスクレイピングや自動化といえば、requestsBeautifulSoupが定番ですが、最近のWebサイトはJavaScriptで動的にコンテンツを生成するSPA(Single Page Application)が増えています。こういったサイトでは、単純なHTTPリクエストでは目的のデータが取得できません。

そこで活躍するのがSeleniumです。実際のブラウザ(Chromeなど)をプログラムから操作するため、人間が画面を見ながらクリックしたり入力したりするのと同じ動作を再現できます。ログインが必要なサイトの操作や、複雑な画面遷移を伴うタスクには必須のツールです。

Claude CodeでSeleniumスクリプトを生成する

以前は、Seleniumのコードを書く際、ブラウザの開発者ツールを開いて要素のXPathやCSSセレクタを一つ一つ調べて…という面倒な作業が必要でした。しかし、Claude Codeを使えば、このプロセスが劇的に短縮されます。

ターミナルで claude を起動し、以下のように指示を出します。

「PythonとSeleniumを使って、特定のURLにアクセスし、IDが’login-btn’のボタンをクリックして、表示されたテーブルのデータを抽出するスクリプトを書いて。ヘッドレスモードで動くようにしてね。」

これだけで、必要なライブラリのインポートから、WebDriverのセットアップ、要素の待機処理(WebDriverWait)まで含んだ、堅牢なコードを生成してくれます。

実用的なサンプルコード:ログインとデータ取得

Claude Codeに生成させ、私が少し微調整を加えた実用的なサンプルコードがこちらです。ヘッドレスモード(画面を表示せずに裏で動くモード)を有効にしているので、サーバー上での定期実行にも適しています。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

def fetch_data_with_selenium(url):
    # Chromeオプションの設定
    options = Options()
    options.add_argument('--headless')  # ヘッドレスモード
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')
    
    # WebDriverの初期化
    driver = webdriver.Chrome(options=options)
    
    try:
        driver.get(url)
        
        # 要素が表示されるまで最大10秒待機
        wait = WebDriverWait(driver, 10)
        
        # 例:ログインボタンのクリック
        # login_btn = wait.until(EC.element_to_be_clickable((By.ID, 'login-btn')))
        # login_btn.click()
        
        # 例:データ要素の取得
        # data_elements = wait.until(EC.presence_of_all_elements_located((By.CLASS_NAME, 'data-row')))
        # for el in data_elements:
        #     print(el.text)
            
        print("ページのタイトル:", driver.title)
        
    finally:
        # 必ずブラウザを閉じる
        driver.quit()

if __name__ == "__main__":
    fetch_data_with_selenium("https://example.com")

まとめ:自動化のハードルは劇的に下がった

Seleniumは強力な反面、環境構築や要素の特定でつまずきやすいツールでした。しかし、Claude CodeのようなAIアシスタントを活用することで、そのハードルは劇的に下がっています。

皆さんもぜひ、日々の面倒なブラウザ操作をSeleniumで自動化し、より生産的な活動(私の場合はボートレース予測モデルの改善など!)に時間を投資してみてください。

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