スポンサードリンク

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()
スポンサードリンク