仮想サーファーの波乗り

仮想化エンジニアの日常

プログラミング・SNS分析・仮想通貨・自動化などに関してよく書きます。

Pythonでwebアプリケーション開発③ ~SeleniumとPhantomJSでブラウザ操作~


こんばんは!


今日はPythonとSeleniumとPhantomJSを使って、普段の作業を自動化できないかな?と思っていろいろ試した結果をご紹介します!


事前の環境構築が終わっていない方は、こちらを参考にPythonを実行できる環境を用意しておいてください!


www.virtual-surfer.com


SeleniumとPhantomJSのインストール


まずは、SeleniumとPhantomJSをpipを使ってインストールしていきます。


$ pip install selenium
$ brew install phantomjs


インストールが成功しているか確認するために、以下のコマンドを打ってバージョンが表示されるかを確認します。

$ pip list | grep selenium
$ phantomjs --version


上のコマンドは、インストール済みの「selenium」という名前がついたパッケージを検索していて、下のコマンドは、インストールされているphantomjsのバージョンを調べています。


インストールが成功していることを確認できたら、早速SeleniumとPhantomJSを使ってみましょう。


SeleniumとPhantomJSを使ってブラウザ操作


まずは、Google検索をして、その検索結果のスクリーンショットを撮影して保存し、コンソール(Terminal)に表示するという処理を実装します。


「sample.py」という名前のファイルを作って、以下のコードを記述します。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.PhantomJS()

driver.get('https://google.co.jp/')

input_element = driver.find_element_by_name('q')
input_element.send_keys('{検索したい単語}')
input_element.send_keys(Keys.RETURN)

driver.save_screenshot('保存したいファイル名')

for element in driver.find_elements_by_css_selector('h3 > a'):
    print(element.text)
    print(element.get_attribute('href'))


たとえば、「ビットコイン」のことを検索して、スクリーンショットを撮って「sample.png」というファイル名で保存したい場合には以下のような記述になります。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.PhantomJS()

driver.get('https://google.co.jp/')

input_element = driver.find_element_by_name('q')
input_element.send_keys('ビットコイン')
input_element.send_keys(Keys.RETURN)

driver.save_screenshot('sample.png')

for element in driver.find_elements_by_css_selector('h3 > a'):
    print(element.text)
    print(element.get_attribute('href'))


ファイルを編集したら以下のコマンドでファイルの処理を実行します。

$ python sample.py


実行すると、TerminalにGoogle検索結果のタイトルとURLが表示されます。
f:id:virtual-surfer:20180204111133p:plain


また、「sample.png」というファイル名のスクリーンショットが保存できています。
f:id:virtual-surfer:20180204111420p:plain
(ページ1枚まるまるスクリーンショット保存されるので、本当はもっと縦長になっています。)


上で書いたコードは、Googleトップページのどの箇所を操作したいか、htmlファイルのタグとcssファイルのセレクタを指定しているだけで、あとはseleniumがよしなに操作をしてくれます。Seleniumをしっかり活用できれば、web上でのポチポチボタンを押す操作はほとんど自動化できそうですね。


また何か面白い発見があれば紹介したいと思います。


【参考にした著書】


では。