Drkcore

02 03 2011 perl firefox Tweet

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でフィードを購読するようにしといた。

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021