[SP-pm] Ajuda no Perl!

Daniel de Oliveira Mantovani mantovani at perl.org.br
Tue Dec 21 11:19:48 PST 2010


2010/12/21 Lindolfo Lorn Rodrigues <lorn.br at gmail.com>:
> 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
>

Essa frase não é do Knuth ¬¬ É do Tony Hoare.

"The famous quote, "We should forget about small efficiencies, say
about 97% of the time: premature optimization is the root of all
evil", by Donald Knuth,[6] has also been mistakenly attributed to
Hoare (by Knuth himself),[7] although Hoare disclaims authorship"
http://en.wikipedia.org/wiki/Tony_Hoare#Quotes


> 2010/12/21 breno <breno at rio.pm.org>
>>
>> 2010/12/20 Stanislaw Pusep <creaktive at 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 at pm.org
>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>> =end disclaimer
>
>
>
> --
> lorn at lornlab dot org
> Lindolfo "Lorn" Rodrigues
>
>
> =begin disclaimer
>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>



-- 
"If you’ve never written anything thoughtful, then you’ve never had
any difficult, important, or interesting thoughts. That’s the secret:
people who don’t write, are people who don’t think."


More information about the SaoPaulo-pm mailing list