接着剤の精進日記

競プロでの精進や研究に関係したことを書いていきます。

Mac PythonでSeleniumを動かしてみる

はじめに

題名の通りMac上でpythonを使ってSeleniumを動かしてみます

参考ページ

qiita.com

環境

MacOS Mojave
Python 3.5

必要なもの

selenium
chrome driver

Seleniumのインストール

pipでSeleniumのインストールができます.

pip install selenium

chrome driverのインストール

brewが入っていればbrewでインストールできるそうです.

brew install chromedriver

しかし,以下のようなエラーがでる.

Error: No available formula with the name "chromedriver" 
It was migrated from homebrew/core to homebrew/cask.
You can access it again by running:
  brew tap homebrew/cask
And then you can install it by running:
  brew cask install chromedriver

コマンドが指示されたのでそのまま動かすと

brew cask install chromedriver

無事インストール完了.
これで必要なものは揃いました.

実際に動かしてみる

とりあえず,参考ページのプログラムをそのまま動かしてみる.

# coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep

# ブラウザを開く。
driver = webdriver.Chrome()
# Googleの検索TOP画面を開く。
driver.get("https://www.google.co.jp/")
# 検索語として「selenium」と入力し、Enterキーを押す。
driver.find_element_by_id("lst-ib").send_keys("selenium")
driver.find_element_by_id("lst-ib").send_keys(Keys.ENTER)
# タイトルに「Selenium - Web Browser Automation」と一致するリンクをクリックする。
driver.find_element_by_link_text("Selenium - Web Browser Automation").click()
# 5秒間待機してみる。
sleep(5)
# ブラウザを終了する。
driver.close()

ブラウザの起動はするものの,検索ができていない.
そこで,実際に検索画面にいって,要素を調べてみる.
デベロッパーツールを使うと,ページの様々な要素が確認できます.
検索するところを確認すると以下のようになっている.
f:id:tkm-kyudo:20181220024624p:plain

今回はCSSセレクタを使用し,指定してみる.
検索部分のCSSセレクタは".gLFyf"となっていることがわかる.
改良したプログラムを以下に示す.

# coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep

# ブラウザを開く。
driver = webdriver.Chrome()
# Googleの検索TOP画面を開く。
driver.get("https://www.google.co.jp/")
sleep(3)
# 検索語として「selenium」と入力し、Enterキーを押す。
element = driver.find_element_by_css_selector(".gLFyf")
#検索語を入力
element.send_keys("CSSセレクタとは?")
#検索ボタンをエンター
element.send_keys(Keys.ENTER)

sleep(5)
# ブラウザを終了する。
driver.close()

実行してみると・・・
f:id:tkm-kyudo:20181220024917p:plain

無事検索が行われている.

おわりに

今回はMac上でPythonを使ってSeleniumを動かしてみた.
CSSセレクタをうまく指定すれば比較的簡単に操作できることがわかった.
無事Seleniumを動かせたので,スクレイピングにも使ってみようと思う.