Web::ScraperとWWW::MechanizeでHatena::Letから自分のRawコード取得、ファイル保存
Hatena::Let 外で作成済みのbookmarkリポジトリ管理しようかな、とか思って。一つ一つ書き出していくのもなんだし、後学のため作ってみた。
自分(或いはあるユーザー)のbookmarkletを持ってくるのに、cURL wget なり使ってもいいと思うけど、自分の場合だと@privateつきのプライベートモードのbookmarkletも作っているから、一回認証通してないとpublicモードのしか取れないことになる。
参考
WWW::Mechanize - Perlオブジェクト中のハンディWebブラウザ - perldoc.jp
use Web::Scraper; - 今日のCPANモジュール(跡地)
成果物は以下に
Hatena::Let で自分の bookmarklet の Raw Code を取得、ファイル保存する — Bitbucket
作業フォルダを mkdir してカレントディレクトリ移動しておきます。
my $user = 'USER NAME'; my $pass = '?? YOUR PASSWORD ??';
でユーザー名:Passwordを入れ getlet.pl とでもして保存。あとは、ターミナル等で
$ ./getlet.pl
とか。
Note:
ログインが成功したら、Hatena::Letのユーザーのトップページに移動して、そこから各bookmarkletのパーマリンクを配列に格納します。
あとは、Web::Scraperで、ページにあるbookmarkletの分だけページ移動してスクレイピングしていきます。Hatena::Letでは1ページ20件分のbookmarkletで分割されているので、1ページ最大で20件のbookmarkletです。
切り出し部分は、
my $scraper = scraper{ process 'pre.code-raw', 'rawcode' => 'TEXT'; process 'title', 'doctitle' => 'TEXT'; };
な感じにして、Rawコードは pre要素から、各ファイル名として(でっちあげで)指定するのにtitle要素から取得しています。取得しできたら、ファイル出力して、20件分ならば20回繰り返します。
※ 出力するファイルは、text/plain で 拡張子 .txtとなるようにしてあります。
本ツールでは、トップページ1ページだけの解析ですが、2ページ目からは、 ?of=20 とかいったリンクをたどることで取得できます(本当はそこまで解析して全自動にすればいいんだけど、何せ突貫工事なもので、本当に自分のページのだけしか想定してないです)。
$mech->follow_link (url => "http://let.hatelabo.jp/".$user."/"); $mech->follow_link (url_regex => qr/of=20$/i);
ついでにですが、以下に、個別bookmarkletページ開いた時実行するとダウンロードになるbookmarkletがあります。
はてなブログからふり返りメール届く
1年前のブログ「同キャリア10年使用」などを振り返りませんか?
なるほど、一年以上続けていると、こんなメールが届くのですな。
振り返りメールの受け取りを解除する方法は、メールの中のリンク先にありました。
北陸新幹線に乗りたいので金沢に行ってみたいです
花火の駅
今週のお題「今年見に行ってよかったもの」
スターウォーズ フォースの覚醒 といいたいところだったのですが、まだ公開前だったし。
「長岡まつり大花火大会」というと、全国的にも有名で、人気花火大会ランキングで上位に入っており、完成度の高い花火大会として好評を得ています。インターネット上でも中継で観たという人もいるのではないでしょうか。
花火の駅というのがあるというのを聞きつけまして、一度行ってみたい、と思いつきだけで行ってきました(花火は観に行ってない)。
場所は、正直地理に詳しくないと難しいです。駐車スペースもそれほどありません(車で行っちゃったけど)。
花火にまつわる資料・写真が展示されていました。
喫茶コーナーがあり、コーヒーは200円でした。