2010/12/21 Lindolfo Lorn Rodrigues <[email protected]>: > 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 <[email protected]> >> >> 2010/12/20 Stanislaw Pusep <[email protected]>: >> > 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: [email protected] >> 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: [email protected] > 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." =begin disclaimer Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ SaoPaulo-pm mailing list: [email protected] L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer
