【Python】Chromeを操作する【Webスクレイピング】

2022年5月26日CODE,Python

seleniumとChromeDriverを使ってブラウザ(Chrome)を操作します。

ブラウザの起動と終了

ブラウザを開いて簡単な動作をしたあと3秒後に閉じるだけのテストコードです。

# ----------------------------------------
# モジュールのインポート
# ----------------------------------------
import time

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome import service as fs


# ----------------------------------------
# ChromeDriverの設定
# ----------------------------------------
# ChromeDriverの絶対パス
CHROMEDRIVER = r'C:\chromedriver\chromedriver.exe'
chrome_service = fs.Service(executable_path=CHROMEDRIVER)


# ----------------------------------------
# 処理開始
# ----------------------------------------
# ブラウザを起動する
driver = webdriver.Chrome(service=chrome_service)

# 指定するURLを開く
driver.get('https://www.google.com/')

# XPathで検索ボックスを特定する
search_box_xpath = '/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div/div[2]/input'
driver.find_element(By.XPATH, search_box_xpath).send_keys('Selenium実践入門')

# NAMEで検索ボックスを特定する
search_box_name = 'q'
driver.find_element(By.NAME, search_box_name).clear()

# 検索の3秒後にブラウザを閉じる
driver.find_element(By.XPATH, search_box_xpath).send_keys('Selenium実践入門' + Keys.RETURN)
time.sleep(3)
driver.quit()

ブラウザの起動にオプションと設定を追加する

ブラウザの起動処理に次のオプションと設定を追加します。

  • ヘッドレスモードで起動(ブラウザが表示されなくなります)
  • ブラウザ起動時のテスト実行警告を非表示
  • DevToolsのログを出力しない
  • ダウンロードフォルダの指定
  • 要素が見つかるまで待つ(一度記述すればOK)
# ----------------------------------------
# モジュールのインポート
# ----------------------------------------
import time

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome import service as fs


# ----------------------------------------
# ChromeDriverの設定
# ----------------------------------------
# ChromeDriverの絶対パス
CHROMEDRIVER = r'C:\chromedriver\chromedriver.exe'
chrome_service = fs.Service(executable_path=CHROMEDRIVER)

# オプションを設定する
chrome_options = webdriver.ChromeOptions()
# ヘッドレスモードで起動する
chrome_options.add_argument('--headless')
# enable-automation:ブラウザ起動時のテスト実行警告を非表示
# enable-logging:DevToolsのログを出力しない
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation', 'enable-logging'])
chrome_options.add_experimental_option('excludeSwitches', ['enable-logging'])
# ファイルのダウンロードフォルダを指定する
dl_folder = 'C:\temp'
chrome_options.add_experimental_option('prefs', {'download.default_directory': dl_folder})


# ----------------------------------------
# 処理開始
# ----------------------------------------
# ブラウザを起動する
driver = webdriver.Chrome(service=chrome_service, options=chrome_options)
# ブラウザを最大化する
driver.maximize_window()
# 要素が見つかるまで最大10秒待つ設定
driver.implicitly_wait(10)

# 指定したURLを開く
driver.get('https://www.google.com/')

# XPathで検索ボックスを特定する
search_box_xpath = '/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div/div[2]/input'
driver.find_element(By.XPATH, search_box_xpath).send_keys('Selenium実践入門')

# NAMEで検索ボックスを特定する
search_box_name = 'q'
driver.find_element(By.NAME, search_box_name).clear()

# 検索の3秒後にブラウザを閉じる
driver.find_element(By.XPATH, search_box_xpath).send_keys('Selenium実践入門' + Keys.RETURN)
time.sleep(3)
driver.quit()

補足

起動するChromeのアカウントを指定するオプションです。

PROFILE_PATH = r'C:\Users\***\AppData\Local\Google\Chrome\User Data'
chrome_options.add_argument('--user-data-dir=' + PROFILE_PATH)

参考書

技術を確実にするならやはり書籍が頼れます。

CODE,Python

Posted by junichi