Python

【サンプルあり】Selenium * Chromedriver を使ってPythonスクレイピング環境を整えよう!【Mac OS】

みなさん、こんにちは。どんぶラッコです。

今回は、seleniumとchromedriverを使ってpythonでスクレイピングを整えましょう!というお話です。

ざっくり説明しておくと、seleniumを使うと、ブラウザの操作をプログラ厶を使って行うことができます。

ログインページに遷移して、メールアドレスとパスワードを入力してログインボタンを押してほしい…

そんな操作が可能です。

一方、chromedriverというのは、seleniumが動かすブラウザです

chromeのブラウザ機械的に立ち上げるために必要なパーツです。

seleniumで操作できるブラウザは沢山あります。少し前はphantomjsが流行っていましたが、メンテナンスがもうされなくなってしまいました。
なので、開発現場でもよく使われるchromeベースのドライバが多く利用されています。

ということで、早速セットアップしてみましょう!

Chromeのインストール

大前提としてChromeのブラウザ本体がインストールされていないと実行されません。

Chromeブラウザをお持ちでない方は予めインストールをお願いします。

Seleniumのインストール

これは簡単。pipを使ってインストールしちゃいましょう。

pip install selenium

Chrome Driver のインストール

macの場合、homebrewを使ってセットアップするのが1番早いです。

homebrewをまだインストールしていない場合、公式サイトの手順に従ってセットアップしましょう。

その後、下記コマンドを入力します。

brew tap homebrew/cask
brew cask install chromedriver

ちなみに、cask とはhomebrewの拡張パッケージです。これもざっくり説明すると、GUI側の機能をhomebrewで管理しちゃおうぜ!なやつです。

サンプルプログラムを動かしてみよう!

ここまで出来たら準備完了!動くかどうか試してみましょう

こんなサンプルサイトを作成しました。

https://cha1ra.github.io/scrayping-handson/index.html

テストのためだけに作られた、本当に簡単なサイトです笑

この中の、入力画面の操作を実際にやってみましょう。

テキスト入力フォームに文字を入力し、submitボタンを押すと、 Hello, *** の形で入力テキストが表示されます。

では作業してみましょう!
任意の場所に test.py を作成し、以下のプログラムを貼り付けます。

from selenium import webdriver

# 対象のサイトに遷移する
browser.get('https://cha1ra.github.io/scrayping-handson/index.html')

# 入力フォームを選択する
el = browser.find_element_by_css_selector('#id_text')
# 入力フォーム内をリセットする
el.clear()
# 入力フォームに文字を入力する
el.send_keys("test")
# ボタンを選択する
button = browser.find_element_by_css_selector('button')
# ボタンをクリックする
button.click()
# id=result にある文章を表示する
print(browser.find_element_by_css_selector('#result').text)


そのあと、ターミナルから

python3 test.py


を実行してみましょう。

Hello, test と表示されていれば成功です!

エラー: 開発元が未確認のため開ません


chromedriver が開発元不明のエラーで開けないことがあるかもしれせん。


その場合は、システム環境設定 → セキュリティとプライバシー → 一般 からを「このまま開く」ボタンを選択してください。


みなさんもチャレンジしてみてください♪

ABOUT ME
どんぶラッコ
ECコンサルタント、システムエンジニアを経て、quintet株式会社CTOに就任。普段はNuxt.jsやLaravelを使用しています。

\面白いと思ったら/

記事のシェア & Twitter のフォロー をお願いします!

@proglearn
RELATED POST

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です