[SP-pm] Ajuda no Perl!

Lindolfo Lorn Rodrigues lorn.br at gmail.com
Tue Dec 21 08:12:43 PST 2010


O LWP é todo implementado em Perl, então não ganha do Curl que é
implementado em C por exemplo, mas nunca se esqueçam:
   "Otimização prematura é a raiz para todo mal"
    --Chico Xavier
Ops, Donald Knuth :P


2010/12/21 breno <breno em rio.pm.org>

> 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
> =begin disclaimer
>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>



-- 
lorn at lornlab dot org
Lindolfo "Lorn" Rodrigues
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20101221/5c3bc96b/attachment.html>


More information about the SaoPaulo-pm mailing list