[SP-pm] use WWW::Mechanize

Blabos de Blebe blabos at gmail.com
Mon Sep 22 04:39:33 PDT 2008


Só pra te sacanear:

http://search.cpan.org/~lbrocard/WWW-Search-Google-0.23/Google.pm
http://search.cpan.org/~zoffix/WWW-Search-Mininova-0.05/lib/WWW/Search/Mininova.pm
http://search.cpan.org/~shlomif/WWW-Search-MSN-0.0104/lib/WWW/Search/MSN.pm
http://search.cpan.org/~shlomif/WWW-Search-AOL-0.0102/lib/WWW/Search/AOL.pm
http://search.cpan.org/~jsmyser/WWW-Search-AlltheWeb-1.5/AlltheWeb.pm
http://search.cpan.org/~mthurn/WWW-Search-Backends-1.073/lib/WWW/Search/CraigsList.pm
http://search.cpan.org/~mthurn/WWW-Search-Ebay-2.243/lib/WWW/Search/Ebay.pm
http://search.cpan.org/~mthurn/WWW-Search-Backends-1.073/lib/WWW/Search/Gopher.pm
http://search.cpan.org/~mthurn/WWW-Search-AltaVista-2.153/lib/WWW/Search/AltaVista.pm
http://search.cpan.org/~alian/WWW-Search-RpmFind-1.2/RpmFind.pm
http://search.cpan.org/~mthurn/WWW-Search-Yahoo-2.413/lib/WWW/Search/Yahoo.pm


Divirta-se

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


More information about the SaoPaulo-pm mailing list