はじめに
この記事を読み進める前に、先にこちらを読み終えてから再度この記事を読んでみてください。
SeleniumとChromeDriver
SeleniumはWebブラウザで行うクリック操作やキーボード入力をプログラム上からできるようにしたもので、
ChromeDriverはChromeブラウザをプログラムで動かす為のドライバーです。
この2つを使うことで、SeleniumでChromeブラウザを操作してログインすることが可能です。
またこの2つを組み合わせて使うことで、
- ブラウザ画面のスクリーンショット
- 非同期サイトのスクレイピング
- 同期サイトのスクレイピング
などが可能になります。
Chrome Driverのインストールは下記リンクから飛べます。
Chrome Driver インストールリンク
その後、『Latest Release: ChromeDriver 2.42』と書かれた部分をクリックし、zipファイルをインストール&解凍してください。
※テキストに書かれたバージョンと異なる場合がございます。
常に、Chrome Driverは常に最新のものをご利用ください。
バージョンが以前のものを使うと動作しない可能性があります。
Twitterにseleniumでログインする
今回はtwitterを対象とします。
事前にアカウント登録が必要なので、まだ登録が終わっていない方は、登録お願い致します。
では早速、Twitterに自動でログインしてしてみましょう。
ログインする機能として、実際にプログラムを組む前に私たち人間はどのようにログインするか考えてみましょう。
- Webサイトのログインページにアクセスする
- 入力フォームにIDとパスワードを入力する
- エンターを押して(ログインボタンを押して)ログインをする
この手順をseleniumにもわかるように書いていきましょう。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys as keys
import time
from bs4 import BeautifulSoup
import urllib.request
from urllib.request import urlopen
import random
# Macの場合 # 任意のpathを指定してください。 Macですとターミナルでpwdというコマンドを実行することで今いるディレクトリのフルパスを出力するコマンドで確認ができます。
driver_path = "/Users/cyberbrain/Desktop/twitter_login/chromedriver"
# windowsの場合
# driver = webdriver.Chrome(executable_path="C:\chromedriver.exe")
driver = webdriver.Chrome(executable_path=driver_path)
# TwitterのURLにアクセス
# URLの指定
url = "https://twitter.com/login"
driver.get(url)
### 2.入力フォームにIDとパスワードを入力する
username = driver.find_element_by_css_selector('#page-container > div > div.signin-wrapper > form > fieldset > div:nth-child(2) > input')
password = driver.find_element_by_css_selector('#page-container > div > div.signin-wrapper > form > fieldset > div:nth-child(3) > input')
username.send_keys("@TwitterIDを書く")
password.send_keys("Twitterのパスワードを書く")
password.send_keys(keys.ENTER)
これだけでTwitterにログインできてしまいます。
それではプログラムの詳しい説明をしていきましょう。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys as keys
これはSeleniumのインポートをしています。
2行目のkey~はブラウザ上でエンターキーを押せるようにするためのライブラリです。
driver.get("https://twitter.com/login")
こちらで指定したURLにアクセスしています。
user_email = driver.find_element_by_id('user_email')
password = driver.find_element_by_id('user_password')
driver.find_element_by_idというのは、html要素上で指定したidを探します。
ここではuser_email(メールアドレス入力フォーム)とpassword(パスワード入力フォーム)を探し、user_emailとpasswordに設定します。
user_email.send_keys("メールアドレス")
password.send_keys("パスワード")
探し出したuser_emailとpasswordに文字を入れるのがsend_keysです。
password.send_keys(keys.ENTER)
ログインするとき、大抵の人はパスワードを入力したらエンターを押してログインすると思います。
それをこの行では行っています。
まとめ
この章では、Seleniumを使って会員サイトに自動でログインする方法を学びました。
Seleniumを使うとスクレイピングをしたり、自動でボタンを押したりすることも可能ですので、是非色々と挑戦して見てください。