Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【Python Selenium】Python + SeleniumでWebスクレイピングを始めよう

Python + SeleniumでWebスクレイピングを始めよう

1. Seleniumとは?

SeleniumWebブラウザを自動操作できるPythonライブラリです。
フォームの入力やクリック操作なども可能なので、通常のスクレイピングライブラリ(requests + BeautifulSoup)では対応が難しいJavaScriptで動的に生成されるページの取得もできます。


2. 環境準備

  1. Pythonのインストール
    3.8以上を推奨します。

  2. Seleniumのインストール

     

     
    pip install selenium
  3. WebDriverの準備

    • Chromeを使う場合は ChromeDriver をダウンロード。

    • バージョンはChromeブラウザと一致させてください。


3. サンプルコード:Google検索を自動化

以下のコードは、Google検索ページにアクセスし、「abc」というキーワードを自動入力 → 検索 → 結果ページを表示する例です。

 
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome import service as fs
import os

# ChromeDriverのパスを設定
path_driver = os.getcwd() + '\chromedriver.exe'

# ドライバー指定でChromeブラウザを開く
service = fs.Service(executable_path=path_driver)
driver = webdriver.Chrome(service=service)

# Googleの検索ページにアクセス
driver.get("http://www.google.com")

# 検索ボックスを探してキーワードを入力
search_box = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.NAME, "q"))
)
search_box.send_keys("abc")

# Enterキーを押して検索を実行
search_box.send_keys(Keys.RETURN)

# 検索結果が表示されるまで待機
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "search"))
)

# ブラウザを閉じる
driver.quit()

 
 

4. ポイント解説

  • WebDriverWaitを使うことで、要素が表示されるまで待機できます。

  • By.NAMEBy.IDでHTML要素を特定します。

  • JavaScriptレンダリングが完了するまで待てるので、動的ページにも対応可能です。


5. 応用例

  • ログインが必要なページでのフォーム自動入力

  • 特定データの定期取得(Task Schedulerやcronで自動化)

  • データ取得後、Pandasで分析