Excel シートに記載したキーワードを Web ページへ転記し、結果を取得する一連の処理を Python で自動化する手順をご紹介いたします。最新の Selenium 4 構文に沿ったコード例を提示し、変数名・ファイル名は独自のものに変更しております。
目次
必要ライブラリ
pip install selenium pandas openpyxl
- selenium: ブラウザ操作
- pandas + openpyxl: Excel 読み取り(
read_excel
)
サンプルコード(Selenium 4 構文)
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pandas as pd
# Excel から検索キーワードを取得
data_frame = pd.read_excel("keyword_list.xlsx", header=None)
search_keyword = data_frame.iloc[0, 0]
# ChromeDriver 設定(オプションでヘッドレス可)
chrome_options = Options()
# chrome_options.add_argument("--headless") # 画面非表示で実行したい場合
service = Service() # 既定パスの chromedriver を使用
with webdriver.Chrome(service=service, options=chrome_options) as browser:
# Google 検索ページを開く
browser.get("https://www.google.co.jp/")
# 検索ボックスを取得して入力
search_box = browser.find_element(By.NAME, "q")
search_box.send_keys(search_keyword)
search_box.submit()
# 検索結果の統計情報が表示されるまで待機
result_stats = WebDriverWait(browser, 10).until(
EC.presence_of_element_located((By.ID, "result-stats"))
)
print(result_stats.text) # 例: “約 1,230,000 件”
# コンテキストマネージャを抜けると自動でブラウザが終了
コード上の主な変更点
旧構文 | 新構文 (Selenium 4) |
---|---|
Chrome() | webdriver.Chrome(service, options) |
find_element_by_name() | find_element(By.NAME, "q") |
find_element_by_id() | find_element(By.ID, "result-stats") |
time.sleep() | WebDriverWait + expected_conditions |
- 待機処理 を
WebDriverWait
に置き換え、固定秒数待機によるタイムロスを削減しております。 with
構文を用い、quit()
の書き忘れによるプロセス残存を防止しています。
実運用に合わせた拡張例
- 複数キーワード
Excel に複数行のキーワードを用意し、for
ループで検索を繰り返す。 - 結果の書き戻し
result_stats.text
を DataFrame へ格納し、to_excel()
で別シートへ保存。 - フォーム入力
企業内システムの申請書など、複数フィールドを一括入力する際にも同じ手法を適用可能。
まとめ
- pandas で Excel からデータを取得
- Selenium 4 の最新 API でブラウザを操作
- WebDriverWait により安定した待機制御を実現
これにより、検索やデータ登録などの定型 Web 操作を Excel 連携で自動化でき、作業時間の短縮とヒューマンエラーの抑制が期待できます。既存業務の手順書に合わせてファイル名や列番号を調整し、ご活用ください。