2015-02-21

Pythonなどのライトウェイト言語からウェブページのフォームを操作

定期的な送金をネットバンクで行うといった操作を定期的に行う場合, スクリプトで自動的に処理できたらいいなと思うことがある. 調べていると, Seleniumというツールキットを使うことで, PythonをはじめRubyやJavaから, ウェブページを開いたりフォームを操作することができることが分かった.

Selenium というのは, ウェブサイトのテストを目的として作られたらしく, ブラウザを起動して, URLを開いたりフォームの操作ができるらしい.

RHEL7では, 以下のようにしてインストールできる.

  1. PIPをEPELからインストール
    $ sudo yum --enablerepo=epel install python-pip
  2. SeleniumをPIPでインストール
    $ sudo pip install -U selenium
  3. Firefoxドライバをインストール
    geckodriverのリリースから最新版を取得する。
    cd /tmp
    wget https://github.com/mozilla/geckodriver/releases/download/v0.31.0/geckodriver-v0.31.0-linux64.tar.gz
    cd $HOME/.local/bin
    tar xzf /tmp/geckodriver-v0.31.0-linux64.tar.gz
    
これで, このページに載っているようなサンプルが動いた.

ブラウザを叩くのでJavascriptなどにも対応しており, 動作状況を見ることができるのが長所だ. だが, ブラウザを動かすためにXサーバが必要なので, 最小構成のサーバには不向きかも.
ヘッドレスのサーバで動かすなら, 予めVNCサーバなどを起動しておくのが良いだろう. そして, Cronから起動するときに, 環境変数DISPLAYを設定する.

import os
os.environ['DISPLAY'] = ':1.0'
VNCサーバのウィンドウマネージャには, twmを使用してはいけない. twmでは, webdriver.Firefox() のところで, 新しく作られたウィンドウの配置場所選択の状態で停止してしまう. ウィンドウマネージャは何も使わないか, XFCEなどにするのが良い. また, xlockの動作中でも, 失敗した. 私の~/.vnc/xstartupを以下に例示する.
#!/bin/sh
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
# TWM blocks window created by selenium so that I do not use any window managers.
# twm &

余談だが, 定期的な送金を自動で行いたい場合, 住信SBIネット銀行がおすすめ. 定額自動振込の機能がすでに提供されている.

0 件のコメント:

コメントを投稿