twill でWebサイトをオートパイロット (+ easy_installのススメ)

twillでオートパイロット


今日は、個人的な理由で、Webサイトを自動巡回するためのソフトを作る……ための前準備として、 twill をインストールしましたので、その紹介とインストール方法のメモです。

Pythonモジュールのインストールには easy_install を使いました。easy_install は、たまに野良のPythonパッケージをインストールする機会がある人は、覚えておいて損のないモジュールです。

twill とは

twill は、コマンドラインインターフェースでWebサイトをクロールするための簡易言語です。

言語の利用例は 公式サイトexamples を見ていただければわかるかと思いますが、例えば「特定のサイトを開くと表示されるフォームにユーザーIDとパスワードを入れてログインボタンを押し、次の画面の検索フォームに特定のキーワードを入れて検索ボタンを押した結果表示されるリンクの1番目をクリックする」といったことを数行〜十数行程度のスクリプトで実現できます。

twill言語自体はWebのナビゲーションに特化した言語なのであまり複雑なことはできませんが、twillPythonで実装されており、Pythonスクリプトから操作するためのAPI も持っているので、ちょっとインテリジェントなことをさせたい場合でもPythonでサクっと書けます。

easy_install のインストール

twillCentOSリポジトリには含まれていませんので、自分でソースをとってきてインストールする必要があります。そんなときに重宝するのが easy_install です。

easy_install は python のパッケージの管理を容易にするためのツールです。パッケージのダウンロードから、ビルド、インストール、それにインストール済みパッケージのアップデートや削除などを行えます。twillも easy_install に対応していますので、かんたんにインストールできます。

さて、easy_install 自身のインストールに関してですが、easy_install は setuptoolsに含まれており、これは CentOSのBaseリポジトリで管理されていますので、インストールはいつものyum一発です。

# yum install python-setuptools

easy_install を使った twill のインストール

続けて、twill のインストールですが、 easy_install を使う場合こうなります。

# easy_install twill

実に簡単ですね。

これは内部的には、PyPI (The Python Package Index) からtwillのパッケージ情報を探しだし、そこに記載されている twill本家アーカイブのURLからソースをダウンロードし、ビルドしてインストールまで行います。

パッケージの指示の仕方などにはバリエーションがありますし、easy_installはパッケージのアップデートなどもできますが、詳しくはこちらのページを参照。 → http://peak.telecommunity.com/DevCenter/EasyInstall

twillを使う

twill言語の記法を使ってコマンドラインから操作したい場合は、twill-shを引数なしで実行すると、コマンド入力用プロンプトが表示されます。

$ twill-sh

 -= Welcome to twill! =-

current page:  *empty page* 
>> 

また、引数にファイルを指定するとそれをtwill言語のスクリプトとみなして自動巡回します。

$ cat search_yahoo.twill
go http://www.yahoo.co.jp/
showforms
fv 1 p google
submit
showlinks
$ twill-sh search_yahoo.twill
(出力省略)

とはいえ、twillの真価を発揮するのは Python API を使って、よりインテリジェントなWebロボットを作成する時でしょう。それに、twill自身は多言語対応しておらず、入出力が(Unicode文字列ではなく)素の文字列になるのでPythonから使って日本語のページをクロールする場合、多少コツがいります。 が、それはまた後日、私がもうちょっと使い込んでから記事にすることにしましょう(笑)