HTTP::Recorder と HTTP::Proxy と WWW::Mechanize 。

部屋とYシャツと私

というノリで。



HTTP::Recorderでゴニョゴニョすると、
ブラウザで操作したログを
WWW::Mechanizeのコードで吐いてくれるという
スグレモノ。らしい。


スクレイピングのコード作るの地味に面倒だよね。



Selenium はブラウザでやるのはいいけど、
Cron でやるには JavaRCサーバをゴニョゴニョして
そんなの慣れてないからかえって怖いという話。



とりあえず、下記参考にやってみた。
「HTTP::Recorder による WWW::Mechanize ひな形コード生成」
http://d.hatena.ne.jp/antipop/20041218/1103311402



しかし、やってみると、

Can't locate object method "query_param" via package "どーたらこーたら") at C:/Perl/site/lib/HTTP/Recorder.pm line 347.

エラーを吐いて落ちるという話。


WinXPなので、ActivePerl5.8ベース。


でも下記で、なんとか解決。素晴らしい!


「[HTTP-Recorder] SOLUTION: Can't locate object method "query_param"」
http://lists.fsck.com/pipermail/http-recorder/2007-October/000083.html


要は、Recorder.pm の下記修正でOK

sub unmodify {
my $self = shift;
my $content = shift;

return $content unless $content;

# get rid of the arguments we added
my $prefix = $self->{prefix};

#HIDE THIS
#for my $key ($content->query_param) {
#if ($key =~ /^$prefix-/) {
# $content->query_param_delete($key);
#}
#}

#ADD THIS
$content =~ s/$prefix-(.*?)\?(.*?)&//g;
$content =~ s/$prefix-(.*?)&//g;
$content =~ s/$prefix-(.*?)$//g;
$content =~ s/&$//g;
$content =~ s/\?$//g;

return $content;
}

もう変なエラー出るなよー・・