コンピュータサイエンス系勉強ノート

計算機科学に限らず日々学んだことを色々まとめていきます

Selenium使ってみた(Python)

最近スクレイピングを始めたのですが,javascriptが使われている場合はブラウザ経由でないと操作ができないことを知ったのでseleniumを試してみることにしました.Pythonからのseleniumインストールは非常に簡単で,

pip install selenium

で一発でいけます.まずはseleniumからChromeを起動してみます.

#encoding:utf-8
from selenium import webdriver

browser = webdriver.Chrome(executable_path='Chromedriverのパス')
browser.get('http://seleniumhq.org/')

Chromeを起動するためにはChromeDriverとよばれるChromeを操作するためのドライバーが必要となります.ドライバーがない場合以下のサイトからダウンロードしてください.
Downloads - ChromeDriver - WebDriver for Chrome
コード中にダウンロードしたドライバのパスを入力します.私の環境ではドライバのパスを指定してあげないと以下の様なエラーがでました.

selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH

ニコニコ動画へのログイン

練習がてらニコニコ動画seleniumを使って自動的にログインしてみます.

#encoding:utf-8
from selenium import webdriver

browser = webdriver.Chrome(executable_path='Chromedriverのパス')
browser.get('ニコニコ動画のログインページのURL')
browser.find_element_by_id("input__mailtel").send_keys("メールアドレス")
browser.find_element_by_id("input__password").send_keys("パスワード")
browser.find_element_by_id("login__submit").click()

Chromeの代わりにPhantomJSを使う

ChromeだといちいちGUIが立ち上がるため重いです.PhantomJSをドライバに指定するとGUIが立ち上がらなくて済みます.以下のサイトからダウンロードして,
Download | PhantomJS
以下のコードでPhantomJSでログインできます.

#encoding:utf-8
from selenium import webdriver

browser = webdriver.PhantomJS(executable_path="PhantomJSのパス")
browser.get('ニコニコ動画のログインページのURL')
browser.find_element_by_id("input__mailtel").send_keys("メールアドレス")
browser.find_element_by_id("input__password").send_keys("パスワード")
browser.find_element_by_id("login__submit").click()

今後の課題

最終的にはseleniumを使用してニコニコ動画のコメントを抽出したいです..だれか方法知ってたら教えてくだしあ