WWW::Mechanize::Firefox

javascriptでDOM操作しまくっているサイトをスクレイピングする作業が発生しそうなのだけどWWW:Mechanizeではできないらしくて、ちょっと調べてみた。

すぐに思いついたのはWWW::Seleniumなんだけど使ったことないなぁ。で、CPAN探したらWWW::Mechanize::Firefoxを見つけたのでインストールして使ってみた。

僕のブログの404ページはページがロードされると、AjaxでtagのJSONをゲットしてきて表示するようになっているので、そのページのスナップショットを撮ってみた

きちんとjavascriptを解釈している

use WWW::Mechanize::Firefox;
my $mech = WWW::Mechanize::Firefox->new();
$mech->get('http://blog.kzfmix.com/404');

my $rect = {
        left  =>    150,
        top   =>    0,
        width  => 500,
        height => 400,
       };

sleep(3);
my $png = $mech->content_as_png(undef, $rect);
open my $fh, '>', 'page.png' or die "Couldn't save to 'page.png': $!";
binmode $fh;
print {$fh} $png;
close $fh;

404

それから当たり前だがアクセスログのUser-Agentは

Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; ja-JP-mac; rv:1.9.2.13)
 Gecko/20101203 Firefox/3.6.13

とFirefoxのものとなる。

というわけで、WWW::Mechanize::Firefoxを使ってスクレイピングをすればjavascriptでDOMを組み立ててるサイトやAjaxで通信しているサイトでもいけそうな気がしている。その後はWeb::QueryでDOMいじりをすればよさそうだ。


FrePanをいまさら知った。LDRでフィードを購読するようにしといた。

「Firefox 3 Hacks」を読んだ

読み流した感じ。

ProductName Firefox 3 Hacks Mozillaテクノロジ徹底活用テクニック
江村 秀之,池田 譲治,下田 洋志,松澤 太郎,dynamis
オライリージャパン / ¥ 2,940 ()
通常24時間以内に発送

  • FireGestures
  • LDR Full Feed
  • APNG(pngでアニメーション)
  • Microformats

アフォーダンス

ちょっとしたきっかけで、firefoxのタブをホームのアイコンにドラッグドロップするとホームページに設定されることに気がついた。

ドラッグしてくれーというアイコンからの声は聞こえないなぁ。

firefoxのキーワードに制御文字が使えない

livedoor clipのブックマークレットにはcを、livedoor readerの購読ブックマークレットにはsのキーワードを設定しているので、ロケーションバーに移動してそれぞれ入力するだけで登録できるようにしてある。

ただ、ロケーションバーの移動のショートカットがC-lなので、Emacsユーザーの僕としてはC-l,C-cとかC-l,C-sとかコントロールキーを押したままのほうが自然なキーストロークなんだけどfirefoxのキーワードにCtrlを定義できなかった。

でもやっぱ途中で小指を離すのはなんか気持ち悪いなあ

個人用ツールバーフォルダにキーボードショートカットを使いたい

個人用ツールバーフォルダにfavidonだけ表示させて簡易ボタンとして使うのは便利だ。

だが、キーボードショートカットとかキーボードで操作できると便利だと思うんだがやり方がわからない。

Alt-bでたどるってのもぁ、、、

firefox2.0のRSS Readerが選べるのだけど

Firefox2.0だとRSS開いたときに、デフォルトで登録するRSSリーダーを選べるようになってて便利だ。早速LDRに変更してみたが、

reader select

イントラのRSSもLDRに登録しようとしてしまうので、ちょっと嫌な感じ。

やっぱブックマークレットにスマートキーワードつけるのがいいのかも。

LiveHTTPHeader

ここ何日かHTTP(S)の通信追ってきて、curlとかWWW::Mechanizeのトレースモードをずっとみてた。

で、ブラウザのヘッダーの追っかけが、かなり役立ったんだが、この LiveHTTPHeaderの便利さを改めて実感した。

LiveHTTPHeader

でも、ヘッダーだけだとわからないことも多かった。特にプロキシ介する場合に結局どこに問題あるのかイマイチ判明しないのには苦労させられたな。

2007.02.10追記

Webクライアントプログラミングの最初のほう読むと、LiveHTTPHeaderを結構使えるようになると思うんだけど。

ProductName Webクライアントプログラミング
クリントン ウォング
オライリー・ジャパン / ?円 ( 1997-09 )


が、絶版みたい

firefoxの個人用ツールバーフォルダ

個人用ツールバーフォルダにつけてるボタンは名前を空欄にしたほうがアイコンチックになってすっきりしてみやすいことにいまさら気付いた。

toolbar

ブックマークレットもアイコンにならんもんじゃろか?増えてくるとあれ~~?とか一瞬悩むことは増えるので。

右クリックでWebLSD

あれ、LSDって昔はpdic形式のデータ配布してたよなァと思いつつ、探してもみつからないので英辞郎みたいに右クリックで検索できるようにしてみた。

http://lsd.pharm.kyoto-u.ac.jp/cgi-bin/lsdproj/ejlookup04.pl?query=$

を拡張機能で設定。

config

で、実行すると新しくタブが開いて検索結果が表示されるようになったとさ。

config

pubmedのアブストをRSSリーダーで流し読みしてるときなど便利。

portable firefox+Google syncで帰省を乗り切る

今年は早めに休暇をとって、帰省することにした。

で、ワンコと赤ちゃん連れて帰るために、荷物が増えてノートパソコン持ち歩くのがいやだけど、実家のコンピュータの環境だと、ネットのチェックしづらいので、Portable FirefoxGoogle Browser Syncを試すことにした。

もらいもののusbメモリにマイブラウザを持ち歩くというわけだ。

portable firefox

USBメモリブートが一般的になれば、KNOBな解析環境も持ち歩くようになるのかな。