PythonとSeleniumでブラウザの自動操作
PythonとSeleniumでブラウザの自動操作
今回は、PythonからSeleniumを動かしてブラウザの自動操作をやってみます。
前回の「PythonのRequestsを使って検索結果を取得する」で、
うまく検索結果を取得できなかったサイトがあったので
今回はSeleniumを使用してみます。
Requestsで取得できなかったのは、見えないところで何らかのパラメーターを渡しているのか、
header情報が必要なのか、画面表示の際にJavaScriptが動いているようなので
これが何かをやっているのか等々なのですが、
ブラウザ操作からは簡単に結果を取得できるので
Requestsは早々に諦めてSeleniumを使ってみることにしました。
Seleniumとは?
ブラウザの自動操作ツールです。
Pythonから操作できるということで、Python勉強中の私は
勉強も兼ねてSeleniumを使ってみたいと思います。
まずはSeleniumのインストールです。
これはpipから行えます。
私はWindows環境なので、コマンドプロンプトを管理者権限で立ち上げて
以下のコマンドを実行します。
pip install selenium
すると以下のようにインストールされます。
Collecting selenium Downloading selenium-3.0.2-py2.py3-none-any.whl (915kB) 100% |################################| 921kB 359kB/s Installing collected packages: selenium Successfully installed selenium-3.0.2
ブラウザはChromeを使いたいのですが、
ドライバが必要なようです。
ChromeDriverをダウンロードサイトからダウンロードします。
「Latest Release:」の後ろの「ChromeDriver 2.26」(2016/12/22現在)の
リンクをクリックするとファイル一覧が表示されます。
「chromedriver_win32.zip」をダウンロードします。
解凍すると「chromedriver.exe」というファイルが現れるので、
これをPythonファイルと同じフォルダ内に移動します。
Pythonのプログラムを実装
# -*- coding: utf-8 -*- """ Created on Thu Dec 22 16:32:48 2016 @author: """ import time from selenium import webdriver url = 'http://search.yahoo.co.jp/search' keyword = 'python' def search_web(): try: browser = webdriver.Chrome('./chromedriver') browser.get(url) time.sleep(1) search_input = browser.find_element_by_name('p') search_input.send_keys(keyword) search_input.submit() time.sleep(1) print(browser.page_source) finally: print('END') if __name__ == '__main__': search_web()
seleniumのwebdriverを使用するために、「from selenium import webdriver」を宣言します。
対象ページのURLと検索キーワードを設定しておきます。
search_web()内では、「webdriver.Chrome(‘./chromedriver’)」で
同じディレクトリ内にあるchromedriverを起動します。
「browser.get(url)」でブラウザにURLを渡します。
検索キーワードの入力ボックスのnameが「p」だったので、
「search_input = browser.find_element_by_name(‘p’)」として指定します。
「search_input.send_keys(keyword)」でキーワードをセットします。
「search_input.submit()」で検索を実行します。
検索結果は「browser.page_source」から取得します。
実際に実行してみると、まずchromedriverが起動し、
次にChromeが立ち上がります。
http://search.yahoo.co.jp/searchに移動し、
検索ボックスに「python」が入力されます。
さらに検索が実行され、検索結果ページが表示されました。
最後にChromeが閉じ、検索結果ページのソースが出力されました。
これだけ簡単な操作だと、実装コードも少なくて簡単ですね。
ちなみに、「検索」ボタンがsubmitではなくて、
onclickでJavasScriptを実行している場合は、
「search_input.submit()」の部分を下記で置き換えます。
browser.find_element_by_name('Search').click()
コメントを残す