​ ​
スクリーンショット 2016-11-01 12.56.51.png

Perl用の小規模向けウェブクローラーフレームワークをだいぶ昔に作った話

こんにちは。ポケモントレーニングエンジニアのsgmです。

現在のトレーナーレベルは33です。人間の年齢でいうと50歳くらいでしょうか。たいていの人は30までに定年を迎えるらしいですが、僕はまだ現役です。昨日、やっとカイリューをゲットしました。

さて、だいぶ昔に作ったPerl用の小規模向けウェブクローラーフレームワークをご紹介します。2014年にひっそりとgithubに公開しました。無数の車輪のひとつだと思ってください。

https://github.com/jamadam/WWW-Crawler-Mojo

特徴はウェブアプリケーションフレームワークの Mojolicious にどっぷり依存していることです。 Mojolicious はよくテストされてるので、きっとちゃんと動いてくれることでしょう。

また、クローリングのルールを Mojo::Message::Response や Mojo::URL や Mojo::DOM の検査として記述でき、 Mojolicious を普段使用している人には使いやすいかもしれません。

その他の機能としては

  • クロール深度による制御
  • 同時接続数による制御
  • リダイレクトに追従
  • シャッフル機能
  • フォーム送信エミュレーション機能
  • CSSの先もクロール
  • エラードキュメントもクロール
  • sitemap.xmlもみる

動作環境

  • Perl 5.16 or higher
  • 最新の Mojolicious

インストール

curl -L cpanmin.us | perl - -n WWW::Crawler::Mojo
サンプル

ソースのexampleディレクトリに checkbot.pl というファイルがあって、ホスト名の範囲でリンク切れを検出してくれます。

./example/checkbot.pl http://example.com/

もともと所有サイトのリンク切れ検出や、動的サイトのアーカイブ化、URL一覧作成などの、小規模なクロールを目的に作ったので、ジョブの管理等にDBなど使いません。ただし、実験的なmysqlドライバはあります。親切な人がコントリビュートしてくれました。

Mojo::UserAgent を使用しているので、認証領域内に入るとか、クッキーを設定するなどできます。対話式なら2段階認証も突破できそう。

スカイアーク/ファームノートでは一緒に働いてくれる仲間を募集しています。特にエンジニアの方は大歓迎です。

詳細はこちらから。

このエントリーをはてなブックマークに追加