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