札幌市のゴミカレンダーとWWW::Mechanize

実際は、WWW::Mechanize::Cachedを使うんだけど、
これを読んでみた感想というかメモ。
https://github.com/syachi/gomical

という訳で、詳細はこちらを。
Hokkaido.pm Casual#26(6/18)のテーマを決める(GitHub)
http://atnd.org/events/52188(ATND)

まずは、ゴミカレンダーのページをスクレイピングする訳ですが、
初めてWWW::Mechanize::Cachedと、CHIを使ったので、
スライドの下書きがてらメモしようと思う。

1. CHIの初期化

キャッシュの保存先をメモリか、ファイルか、他にもあるみたいだけど、
どこに保存するかを選べるみたい。
ここでファイルを選べば、
キャッシュが有効な間はサーバーに問い合わせしなくて済むのかな?
実際に、どんなHTMLを取得したのか等も、
キャッシュ先のフォルダを漁ると出てくるので、
初めてのスクレイピングはキャッシュをファイルに保存しておくと、
短時間に何度もアクセスしてしまうような良からぬ事態を防げて良さそう。

2. 最初のページを取得

インデックスページ内のリンクを探している。
Data::Dumperを使うと分かるけど、
返ってきているのはWWW::Mechanize::Linkオブジェクト。

3. さらに奥深くへ

コメントの通り。
インデックスページから区ごとに枝分かれして、
住所一覧のページを辿って、ゴミカレンダーに到達。

まとめ

ゴミカレンダーに到達してからが本番。
あと、最初の方にある$|++;の記述は、
http://perldoc.jp/docs/perl/5.18.1/perlvar.podで、
OUTPUT_AUTOFLUSHを検索すると良いと思う。

スクレイピングのソースを公開して頂き、ありがとうございました!

おしまい。

Leave a Comment