抓取資料
從 CPAN 上抓出資料
url("http://search.cpan.org/recent")->(); submit_form( form_name => "f", fields => { query => "perl" }); template("<!--item-->[% p %]<!--end item-->"); extract; print Dumper extresult;
清理 HTML 再從 CPAN 上抓出資料
url("http://search.cpan.org/recent")->(); submit_form( form_name => "f", fields => { query => "perl" }); preproc(q(s/\A.+<!--results-->(.+)<!--end results-->.+\Z/$1/s)); print document->as_string; # print content to STDOUT template("<!--item-->[% p %]<!--end item-->"); extract; print Dumper extresult;
清理 HTML, 再從 CPAN 上抓出資料, 並修飾結果
url("http://search.cpan.org/recent")->(); submit_form( form_name => "f", fields => { query => "perl" }); preproc(q(s/\A.+<!--results-->(.+)<!--end results-->.+\Z/$1/s)); print $$_; # print content to STDOUT template("<!--item-->[% rec %]<!--end item-->"); extract; postproc(q($_->{rec} =~ s/<.+?>//g)); # Strip HTML tags print Dumper extresult;
使用過濾器的語法
fetch("http://search.cpan.org/recent"); submit_form( form_name => "f", fields => { query => "perl" }); $_ | _doc_filter(q(s/\A.+<!--results-->(.+)<!--end results-->.+\Z/$1/s)) | _template("<!--item-->[% rec %]<!--end item-->") | _result_filter(q($_->{rec} =~ s/<.+?>//g)); print Dumper \@$_;
呼叫結果處理器
fetch("http://search.cpan.org/recent"); submit_form( form_name => "f", fields => { query => "perl" }); $_ | _doc_filter(q(s/\A.+<!--results-->(.+)<!--end results-->.+\Z/$1/s)) | "<!--item-->[% rec %]<!--end item-->" | _result_filter(q($_->{rec} =~ s/<.+?>//g)); invoke_handler('Data::Dumper');
你也可以直接把抓出來的資料放到關聯式資料庫裡。
invoke_handler('Some::Module::based::on::Class::DBI'); invoke_handler('Some::Module::based::on::DBIx::Class::CDBICompat');