[SP-pm] Ajuda no Perl!
breno
breno at rio.pm.org
Tue Dec 21 07:07:17 PST 2010
2010/12/20 Stanislaw Pusep <creaktive em gmail.com>:
> Dependendo da complexidade, talvez compense usar diretamente o LWP, que é o
> backend do WWW::Mechanize:
> http://search.cpan.org/~gaas/libwww-perl-5.837/lib/LWP.pm
> WWW::Mechanize é muito power, mas também lerdo e pesado :(
>
Acho que alguns diriam o mesmo do LWP, né Lorn? ;-)
De qualquer forma, se o Eduardo está em seus primeiros passos com
Perl, recomendo trabalhar com APIs amigáveis e o mais alto-nível
possível.
O mech é bom se vc se entende com a API dele, mas lembre-se que na
hora de fazer o parsing do conteúdo vc precisará de outra ferramenta
(evite expressões regulares em cima do $mech->content a menos que vc
*realmente* saiba o q está fazendo:
-------------8<-------------
use strict;
use warnings;
use WWW::Mechanize;
use HTML::TreeBuilder;
my $mech = WWW::Mechanize->new;
$mech->get( "http://exemplo.com" );
my $html = HTML::TreeBuilder->new_from_content( $mech->content );
------------->8-------------
Daí é só consultar a documentação do WWW::Mechanize para navegar pelo
conteúdo (submeter formulários, seguir links, etc), e do HTML::Element
pra analisar o HTML retornado. Há ainda o WWW::Mechanize::TreeBuilder,
que combina os dois módulos acima assim vc não precisa do passo
intermediário e pode fazer tudo a partir de 1 objeto apenas (em vez de
2 como acima)
Se preferir trabalhar com XPath (mais fácil pra muita gente), pode
trocar no exemplo acima "HTML::TreeBuilder" por
"HTML::TreeBuilder::XPath" ou usar o HTML::Query, ou então o... bom,
tem sempre mais de uma maneira de fazer as coisas :-)
Mas pra XPath o que eu recomendo mesmo é usar algo próprio, como o
Web::Scraper ou - mais amigável - o Scrapy:
-------------8<-------------
use strict;
use warnings;
use Scrapy ':syntax';
crawl 'http://search.cpan.org/recent', {
'#cpansearch li a' => sub {
print shift->text, "\n";
}
};
------------->8-------------
[]s
-b
More information about the SaoPaulo-pm
mailing list