twill でWebサイトをオートパイロット (+ easy_installのススメ)
今日は、個人的な理由で、Webサイトを自動巡回するためのソフトを作る……ための前準備として、 twill をインストールしましたので、その紹介とインストール方法のメモです。
Pythonモジュールのインストールには easy_install を使いました。easy_install は、たまに野良のPythonパッケージをインストールする機会がある人は、覚えておいて損のないモジュールです。
twill とは
twill は、コマンドラインインターフェースでWebサイトをクロールするための簡易言語です。
言語の利用例は 公式サイト の examples を見ていただければわかるかと思いますが、例えば「特定のサイトを開くと表示されるフォームにユーザーIDとパスワードを入れてログインボタンを押し、次の画面の検索フォームに特定のキーワードを入れて検索ボタンを押した結果表示されるリンクの1番目をクリックする」といったことを数行〜十数行程度のスクリプトで実現できます。
twill言語自体はWebのナビゲーションに特化した言語なのであまり複雑なことはできませんが、twillはPythonで実装されており、Pythonスクリプトから操作するためのAPI も持っているので、ちょっとインテリジェントなことをさせたい場合でもPythonでサクっと書けます。
easy_install のインストール
twillはCentOSのリポジトリには含まれていませんので、自分でソースをとってきてインストールする必要があります。そんなときに重宝するのが 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から使って日本語のページをクロールする場合、多少コツがいります。 が、それはまた後日、私がもうちょっと使い込んでから記事にすることにしましょう(笑)