Aureliano, Eu vi algo no seu código que não é um erro, e há controvérsias sobre ser boa ou má prática, varia um pouco com gosto do freguês, mas que eu pessoalmente gosto de fazer diferente. Acho que é um estilo melhor.
Ao invés de fazer (principalmente em loops), algo como: for(...) if( deu certo ) faz um lance else #deu errado mostra ou trata erro endif endfor Eu geralmente prefiro fazer assim for(...) if( deu errado ) mostra ou trata erro next # ou die, depdende de como voce quer lidar com o erro elseif( deu outro lance errado ) mostra ou trata next ... # tantas quantas validações forem necessárias endif # parâmetros desta iteração estão validados faz um lance endfor Acho que dessa forma, você simplifica a leitura do código: 1) o que for erro você trata logo, e depois que passa daquele bloco de validações está ok e 2) visualmente faz até mais sentido: o código mais indentado no começo é a exceção, enquanto que a "regra" está apenas um nível de indentação depois do comando de loop. my $two_cents; Russo 2012/10/25 Aureliano Guedes <guedes_1...@hotmail.com> > Eu fiz de uma forma que deu certo, mas ficou feio e cheio de más > praticas, mandando reguex em xml e tals. > > Quero fazer de forma bonita com XPath e tals. Mas ainda estou em processo > de entendet tudo isso. > > Estou tentando pegar o primeiro link da lista de videos de um resultado de > pesquisa do YouTube. > Para isso estou ultilizando uma API do YouTube: > https://developers.google.com/youtube/2.0/developers_guide_protocol_api_query_parameters#Searching_for_Videos > > Onde estão os erros fora tudo?? -> http://pastebin.com/T06Mi1Nx > > > #!/usr/bin/env perl > > use common::sense; > use WWW::Mechanize; > use URI::Escape; > use HTML::TreeBuilder::XPath; > > my $html = WWW::Mechanize->new(timeout=>100); > > open IN, $ARGV[0] or die $!; > > foreach (<IN>){ > s/\s+/\+/g; > chomp; > my $url = 'https://gdata.youtube.com/feeds/api/videos?q=' . > uri_escape($_); > $html->get($url); > if ($html->is_success){ > my $page = $html->content; > $page =~ s/(\n\r|\r\n)|\r/\n/g; > > my $tree = HTML::TreeBuilder::XPath->new(); > > my $node = $tree->findenodes('/html/body//a[@href=(.*)]')->[0]; > > print $node; > } > else { > print "FAIL: " . $! . "\n"; > } > } > > > > > Date: Thu, 25 Oct 2012 13:06:40 -0200 > > From: br...@rio.pm.org > > > To: rio-pm@pm.org > > Subject: Re: [Rio-pm] HTML::Parse > > > > 2012/10/21 Aureliano Guedes <guedes_1...@hotmail.com> > > > > > > Ola. > > > > > > Eu estoiu tentando usar o WWW::Mechanize, mas não estou entendendo uma > coisa. > > > Eu tenho um botão: > > > > > > <a > href="/dl/347357664b655256724e/554545485125135/Fernando+E+Sorocaba+++++Tenso.mp3" > rel="nofollow" title="Download Fernando E Sorocaba Tenso.mp3!"> > > > <img src="/images/download.jpg" width="95" height="25" alt="Baixar > Fernando E Sorocaba Tenso" style="border:0" /></a> > > > > > > > > > Como eu faço para clicar nele usando o metodo click_button? Como faço > para setar esse botão? > > > Eu tentei: > > > > $m->click_button(value=>/dl/347357664b655256724e/554545485125135/Fernando+E+Sorocaba+++++Tenso.mp3); > > > Mas não da certo. > > > > > > > O seu botão não é um botão (<button> ou <input type="button">) e sim > > um link (<a>). O Mechanize sabiamente os diferencia, e você > > provavelmente está procurando o método follow_link() > > > > https://metacpan.org/module/WWW::Mechanize#mech-follow_link-...- > > > > Finalmente, se quiser aprender sobre XPath e Seletores CSS, recomendo > > os seguintes artigos: > > > > http://sao-paulo.pm.org/artigo/2010/utilizandoxpathparacriarwebspiders > > > http://sao-paulo.pm.org/artigo/2011/ExtracaodedadoscomperlxpatheregexExportadoemODF > > > http://sao-paulo.pm.org/artigo/2011/ScrapingfacilcomMojoliciousefeedsAtom > > (veja no final: guia de referência rápida para seletores CSS) > > > > ou ir direto na fonte: > > > > http://www.w3.org/TR/xpath/ > > http://www.w3.org/TR/CSS2/selector.html > > http://www.w3.org/TR/css3-selectors/ > > > > []s > > > > -b > > _______________________________________________ > > Rio-pm mailing list > > Rio-pm@pm.org > > http://mail.pm.org/mailman/listinfo/rio-pm > > _______________________________________________ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > -- Alexei "RUSSOZ" Znamensky | russoz EM gmail com | http://russoz.org GPG fingerprint = 42AB E78C B83A AE31 7D27 1CF3 C66F B5C7 71CA 9F3C http://www.flickr.com/photos/alexeiz | http://github.com/russoz "I don't know... fly casual!" -- Han Solo
_______________________________________________ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm