2014年11月23日の段、Episode.I!「簡易スクレイピング環境の構築」

スクレイピングというのは、Wikipediaによると、
「ウェブサイトから情報を抽出するコンピュータソフトウェア技術」
である。
古くから存在するクローラーなどの技術も、この名前で呼ばれることがある。
これが転じて、現在ではログインが必要なページへのIDやパスワード入力や、一連の投稿の手続きの自動化に用いられる。
もう少しエンドユーザ寄りの表現をするならば、
日ごろ手で行っているブラウザの操作をプログラムというロボットに代行させるもの
ということになる。

Windows系のプログラマが広く使っているのは、VBAからWin32APIを呼び出してInternetExplorerを制御するというもの。
これが、基礎的なPerlかPHPしか扱えないたにぐちさんは、Perl&Firefoxという構成を用いて実現する。
実行環境の構築手順は下記の通り。

・DWIM Perlのインストール(PATHまで通してくれるからありがたい)
・FirefoxにMozReplアドオンをインストール
・Firefoxで[ツール]→[MozRepl]→[Activate on startup]として再起動
・コマンドプロンプトから下記要領でCPANモジュールをインストール
 (コマンドプロンプトは、たぶん管理者実行の方がよい)


cpan -fi WWW::Mechanize::Firefox
cpan -fi Win32::Clipboard
cpan -fi Win32::GuiTest
cpan -fi Win32::OLE

いらないモジュールもあるけれども、役に立つこともある、きっと。

コーディングについてはまたいずれ、精神的に。

分かっている注意点:


・仕様上はnewにFirefoxのパスを渡しておけば起動していないFirefoxを起動してくれるようなのだけども、
 どうもFirefoxはあらかじめ起動しておかないとBad File Descriptorといって怒られる。
 回避方法は見つかっていない。
・WWW::Mechanize::Firefoxで制御しきれないことをWin32系のAPIでまかなおうとする場合、Firefoxのウィンドウが最前面に来ている必要がある。
 しかし、SetForegroundWindowで必ずしも前に持ってくることができない。
 OSのバージョンでも非互換がかなりある。
 Win32::GUI::BringWindowToTopが推奨される声もあるが、これも信頼できるとは考えづらい。
 結論的に言うと、WWW::Mechanize::Firefoxでできないようなことは諦める、と決め込むくらいがよい。
 WWW::Mechanize::Firefoxのメソッドが行う操作はウィンドウが後ろにあっても問題ない。

コメントを残す

メールアドレスが公開されることはありません。

名前:たにさん or たにぐちさん
職業:むかし、元オタク
  • アーカイブ

  • 最近の投稿

  • 最近のコメント

  • イマ☆ドキ地味なアクセス件数