<div dir="ltr">O programa pronto:<br>#!/usr/bin/perl<br><br>use strict;<br>use warnings;<br>use WWW::Mechanize;<br><br>print "Palavra chave = > ";<br>chomp (my $dork = <>);<br>die "Operação não suportada" if $dork =~ /Eden\+Cardim/;<br>
print "Buscando por $dork\n";<br>open SAVE, ">>","save.txt" or die "can't open";<br>my $i = 100;<br>my $quanto = ();<br>while ($i <= 500){<br>$i += 100;<br>my $google = WWW::Mechanize->new();<br>
my $url = "<a href="http://www.google.com.br/search?as_q=inurl%3A$dork&hl=pt-BR&num=100&btnG=Pesquisa+Google&as_epq=&as_oq=&as_eq=&lr=&cr=&as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=&as_rights=&safe=images">http://www.google.com.br/search?as_q=inurl%3A$dork&hl=pt-BR&num=100&btnG=Pesquisa+Google&as_epq=&as_oq=&as_eq=&lr=&cr=&as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=&as_rights=&safe=images</a>";<br>
$google->agent_alias( 'Linux Mozilla' );<br>$google->get($url);<br>my $busca = $google->content();<br>my @matchs = $busca=~ /<h3 class=r><a href="(.+?)"/g;<br>$quanto += scalar(@matchs);<br>
print SAVE $_,$/ foreach(@matchs)<br>}<br>print "Achou $quanto resultados\n";<br><br><div class="gmail_quote">2008/9/21 Gabriel Vieira <span dir="ltr"><<a href="mailto:gabriel.vieira@gmail.com">gabriel.vieira@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Ele já foi alertado.<br>
Mas é bom que ele está entendendo como as coisas funcionam.<br>
<br>
2008/9/21 Alexei Znamensky <<a href="mailto:russoz@gmail.com">russoz@gmail.com</a>>:<br>
<div><div></div><div class="Wj3C7c">> e assim começa a lenta e dolorosa caminhada para o inferno do parse de<br>
> markup languages...<br>
><br>
> 2008/9/20 Gabriel Vieira <<a href="mailto:gabriel.vieira@gmail.com">gabriel.vieira@gmail.com</a>><br>
>><br>
>> Daniel,<br>
>><br>
>> isso ocorre pelo simples motivo de existir nenhuma a tag <a<br>
>> href="qlqrcoisa" mais_atributos_aqui>. Sendo assim o match vai agrupar<br>
>> em $1 tudo que está entre <a href=" e ">, ou seja, o match só irá<br>
>> parar quando encontrar um "> e isso demora um pouco a acontecer, tanto<br>
>> que o seu retorno para $1 é imenso.<br>
>><br>
>> Tente:<br>
>> ---------------------8<---------------------<br>
>> print $1 for $busca=~ /<a href="http:\/\/(.+?)"/;<br>
>> --------------------->8---------------------<br>
>><br>
>> Ou:<br>
>> ---------------------8<---------------------<br>
>> print $1 for $busca=~ /<a href="http:\/\/(.+?)".*?>/;<br>
>> --------------------->8---------------------<br>
>><br>
>> Ou para ficar mais legível:<br>
>> ---------------------8<---------------------<br>
>> print $1 for $busca =~ m#<a href="http://(.+?)".*?>#;<br>
>> --------------------->8---------------------<br>
>><br>
>> Lembre-se que esse match retornará apenas 1 único resultado por ele<br>
>> não possuir o operador 'g' ao fim da instrução.<br>
>><br>
>> Utilizando-se da opção 'g' e do for ele ele irá retornar a $1 o valor<br>
>> do último match com sucesso a quantidade de vezes que os matchs<br>
>> obtiveram sucesso, no caso o link para a Folha On Line.<br>
>><br>
>> Sendo assim indico o uso do while. "Mas com o while ele não entraria<br>
>> em loop infinito já que sempre vai existir o match na string busca?".<br>
>> Se utilizarmos o operador 'c', não.<br>
>><br>
>> Logo, teremos:<br>
>> ---------------------8<---------------------<br>
>> print $1,$/ while $busca =~ m#<a href="http://(.+?)".*?>#gc;<br>
>> --------------------->8---------------------<br>
>><br>
>> Uma última dica legal, caso queira gerar um array com todos os matchs<br>
>> bastaria o seguinte:<br>
>> ---------------------8<---------------------<br>
>> my @matchs = $busca =~ m#<a href="http://(.+?)".*?>#g;<br>
>> ---------------------8<---------------------<br>
>><br>
>> Mais informações: perldoc perlop<br>
>><br>
>> Abraços,<br>
>><br>
>> 2008/9/19 Daniel de Oliveira Mantovani<br>
>> <<a href="mailto:daniel.oliveira.mantovani@gmail.com">daniel.oliveira.mantovani@gmail.com</a>>:<br>
>> > Fiz o que você disse do while, e deu outro erro.<br>
>> ><br>
>> > Error: no "print" mailcap rules found for type "text/x-perl"<br>
>> ><br>
>> > Não tenho ideia do que seja "mailcap".<br>
>> ><br>
>> ><br>
>> > 2008/9/19 Daniel de Oliveira Mantovani<br>
>> > <<a href="mailto:daniel.oliveira.mantovani@gmail.com">daniel.oliveira.mantovani@gmail.com</a>><br>
>> >><br>
>> >> #!/usr/bin/perl<br>
>> >><br>
>> >> use strict;<br>
>> >> use warnings;<br>
>> >> use WWW::Mechanize;<br>
>> >><br>
>> >> my $google = WWW::Mechanize->new();<br>
>> >> my $url =<br>
>> >><br>
>> >> '<a href="http://www.google.com.br/search?hl=pt-BR&q=nasa&btnG=Pesquisa+Google&meta" target="_blank">http://www.google.com.br/search?hl=pt-BR&q=nasa&btnG=Pesquisa+Google&meta</a>';<br>
>> >> $google->get($url);<br>
>> >> my $busca = $google->content();<br>
>> >> print $1 for $busca=~ /<a href="http:\/\/(.+?)">/;<br>
>> >><br>
>> >> Desculpa pela demora.<br>
>> >> A coisa que não entra na minha cabeça é eu ponho print $1, e imprime<br>
>> >> tudo<br>
>> >> que não está entre os parênteses.<br>
>> >><br>
>> >> 2008/9/19 André Garcia Carneiro <<a href="mailto:andre.garcia.carneir@terra.com.br">andre.garcia.carneir@terra.com.br</a>><br>
>> >>><br>
>> >>> Daniel...<br>
>> >>><br>
>> >>><br>
>> >>> No while que eu enviei. Tira o 'm'. Esse é um problema. Mas devem ter<br>
>> >>> mais no código, então manda pra mim, se<br>
>> >>> puder é claro, caso contrário posta aqui. Não posso entrar no IRC<br>
>> >>> agora,<br>
>> >>> mas assim q tiver uma brecha aqui no<br>
>> >>> meu trabalho eu te mando a correção. Prometo testar dessa vez...rsrsr!<br>
>> >>><br>
>> >>><br>
>> >>> Cheers!<br>
>> >>><br>
>> >>><br>
>> >>> ---------- Cabeçalho original -----------<br>
>> >>><br>
>> >>> De: saopaulo-pm-bounces+andre.garcia.carneir=<a href="http://terra.com.br" target="_blank">terra.com.br</a>@<a href="http://pm.org" target="_blank">pm.org</a><br>
>> >>> Para: "saopaulo-pm" <a href="mailto:saopaulo-pm@mail.pm.org">saopaulo-pm@mail.pm.org</a><br>
>> >>> Cópia:<br>
>> >>> Data: Fri, 19 Sep 2008 15:43:47 -0300<br>
>> >>> Assunto: Re: [SP-pm] use WWW::Mechanize<br>
>> >>><br>
>> >>> ><br>
>> >>> > Falha minha. Esqueci disso...<br>
>> >>> ><br>
>> >>> ><br>
>> >>> > E nao testei o código também.<br>
>> >>> ><br>
>> >>> ><br>
>> >>> > Sorry!<br>
>> >>> ><br>
>> >>> ><br>
>> >>> > ---------- Cabeçalho original -----------<br>
>> >>> ><br>
>> >>> > De: saopaulo-pm-bounces+andre.garcia.carneir=<a href="http://terra.com.br" target="_blank">terra.com.br</a>@<a href="http://pm.org" target="_blank">pm.org</a><br>
>> >>> > Para: <a href="mailto:saopaulo-pm@mail.pm.org">saopaulo-pm@mail.pm.org</a><br>
>> >>> > Cópia:<br>
>> >>> > Data: Fri, 19 Sep 2008 14:49:28 -0300<br>
>> >>> > Assunto: Re: [SP-pm] use WWW::Mechanize<br>
>> >>> ><br>
>> >>> > > Você pode fazer regexes com m/ regexp aqui / .<br>
>> >>> > ><br>
>> >>> > > Também pode com m{ .... } , m@ ..... @ , m( .... ) , etc..<br>
>> >>> > ><br>
>> >>> > > Mas se você tá usando m/ ..... / , o que acontece quando tem mais<br>
>> >>> > > um<br>
>> >>> > > "/" no<br>
>> >>> > > meio da regex ? O perl vai achar que a regexp acabou ali. Então,<br>
>> >>> > > ou<br>
>> >>> > > usa-se<br>
>> >>> > > outros delimitadores, ou se escapa a "/", com uma "\", pra ele não<br>
>> >>> > > achar que<br>
>> >>> > > a "/" terminou a regexp:<br>
>> >>> > ><br>
>> >>> > > m/<a href="http:\/\/(.+?)"/sig<br>
>> >>> > ><br>
>> >>> > > ou<br>
>> >>> > ><br>
>> >>> > > m{<a href="http://(.+?)"}sig<br>
>> >>> > ><br>
>> >>> > > ou até mesmo<br>
>> >>> > ><br>
>> >>> > > m;<a href="http://(.+?)";sig # se você tá participando de um<br>
>> >>> > > concurso<br>
>> >>> > > de<br>
>> >>> > > código ofuscado :-)<br>
>> >>> > ><br>
>> >>> > > []s<br>
>> >>> > > Wendel<br>
>> >>> > ><br>
>> >>> > > 2008/9/19 Daniel de Oliveira Mantovani<br>
>> >>> > > <<a href="mailto:daniel.oliveira.mantovani@gmail.com">daniel.oliveira.mantovani@gmail.com</a>><br>
>> >>> > ><br>
>> >>> > > > while($string =~ m/< a href="http://(.+?)"/sig){<br>
>> >>> > > > print "\n".$1; #Agora vou pegar todos!<br>
>> >>> > > > }<br>
>> >>> > > ><br>
>> >>> > > ><br>
>> >>> > > ><br>
>> >>> > ><br>
>> >>> ><br>
>> >>> > --<br>
>> >>> > André Garcia Carneiro<br>
>> >>> > Developer(Perl/PHP)<br>
>> >>> > Member of "São Paulo Perl Mongers" - <a href="http://sao-paulo.pm.org" target="_blank">http://sao-paulo.pm.org</a><br>
>> >>> ><br>
>> >>> > _______________________________________________<br>
>> >>> > SaoPaulo-pm mailing list<br>
>> >>> > <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
>> >>> > <a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
>> >>> ><br>
>> >>><br>
>> >>> --<br>
>> >>> André Garcia Carneiro<br>
>> >>> Developer(Perl/PHP)<br>
>> >>> Member of "São Paulo Perl Mongers" - <a href="http://sao-paulo.pm.org" target="_blank">http://sao-paulo.pm.org</a><br>
>> >>><br>
>> >>> _______________________________________________<br>
>> >>> SaoPaulo-pm mailing list<br>
>> >>> <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
>> >>> <a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
>> >><br>
>> >><br>
>> >><br>
>> >> --<br>
>> >> Daniel de Oliveira Mantovani<br>
>> >> "A sede pelo aprendizado é insaciável"<br>
>> >> <a href="http://mantovanihouse.blogspot.com/" target="_blank">http://mantovanihouse.blogspot.com/</a><br>
>> >> ------------------------------------------------------------<br>
>> ><br>
>> ><br>
>> ><br>
>> > --<br>
>> > Daniel de Oliveira Mantovani<br>
>> > "A sede pelo aprendizado é insaciável"<br>
>> > <a href="http://mantovanihouse.blogspot.com/" target="_blank">http://mantovanihouse.blogspot.com/</a><br>
>> > ------------------------------------------------------------<br>
>> ><br>
>> > _______________________________________________<br>
>> > SaoPaulo-pm mailing list<br>
>> > <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
>> > <a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
>> ><br>
>><br>
>><br>
>><br>
>> --<br>
>> Gabriel Vieira<br>
>> _______________________________________________<br>
>> SaoPaulo-pm mailing list<br>
>> <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
>> <a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
><br>
><br>
><br>
> --<br>
> Alexei Znamensky [russoz_gmail_com] [<a href="http://russoz.wordpress.com" target="_blank">russoz.wordpress.com</a>]<br>
> [<a href="http://www.flickr.com/photos/alexeiz" target="_blank">www.flickr.com/photos/alexeiz</a>]<br>
> "Though we live in trying times, we're the ones who have to try"<br>
><br>
> _______________________________________________<br>
> SaoPaulo-pm mailing list<br>
> <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
> <a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
><br>
<br>
<br>
<br>
--<br>
Gabriel Vieira<br>
_______________________________________________<br>
SaoPaulo-pm mailing list<br>
<a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Daniel de Oliveira Mantovani<br>"A sede pelo aprendizado é insaciável"<br><a href="http://mantovanihouse.blogspot.com/">http://mantovanihouse.blogspot.com/</a><br>
------------------------------------------------------------<br>
</div>