[Cascavel-pm] Download Zip File

Andre Carneiro andregarciacarneiro em gmail.com
Quinta Agosto 26 13:15:43 PDT 2010


Considerando que vc já tem o parser funcionando, suponha que vc tem todos
esses links em objetos HTML::Element, e ele se chame @links

<code>
.
.
.

foreach my $l(@links){
    if(defined($l){
        my $url = $l->attr("href");
        eval{$mech_obj->get($url);};
        if($mech->success){
             my $filename = $url->as_text;
             my $f = undef;
             eval{open $f,'>',"/tmp/$filename";};
             if($!){
                    print "\n\nERRO AO CRIAR O ARQUIVO /tmp/$filename - $!";
                    #trate a exceção!!!
             }
             else{
                  binmode $f; #zip = arquivo binario, entao abra o arquivo
no modo binario.
                  print $f $mech->content;
              }
              close $f;
        }
    }
}


</code>



Cheers!

2010/8/26 Roan Brasil Monteiro <roanbrasil em gmail.com>

> O parsing funciona ja, mas posso sim... eu ja testei, fui fazendo por
> etapas, e já está funcionando
>
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
> <html>
>  <head>
>   <title>Index of /Getnet</title>
>  </head>
>  <body>
> <h1>Index of /Getnet</h1>
> <ul><li><a href="/"> Parent Directory</a></li>
> <li><a href="01_ACQR_21376_DML.zip"> 01_ACQR_21376_DML.zip</a></li>
> <li><a href="01_ACQR_PATCH_022010.2_DML.zip">
> 01_ACQR_PATCH_022010.2_DML.zip</a></li>
> <li><a href="049-091126-029-A-20051.zip">
> 049-091126-029-A-20051.zip</a></li>
> <li><a href="049-091126-029-A-20051_outdated.zip">
> 049-091126-029-A-20051_outdated.zip</a></li>
> <li><a href="049-091126-030-A-20052.zip">
> 049-091126-030-A-20052.zip</a></li>
> <li><a href="049-091126-030-A-20052_outdated.zip">
> 049-091126-030-A-20052_outdated.zip</a></li>
> <li><a href="049-091126-031-A-20049.zip">
> 049-091126-031-A-20049.zip</a></li>
> <li><a href="049-091130-032-A-19935.1.zip">
> 049-091130-032-A-19935.1.zip</a></li>
> <li><a href="049-091201-001-A-20093.zip">
> 049-091201-001-A-20093.zip</a></li>
> <li><a href="049-091202-002-A-20093.1.zip">
> 049-091202-002-A-20093.1.zip</a></li>
> <li><a href="049-091202-003-A-20060.zip">
> 049-091202-003-A-20060.zip</a></li>
> <li><a href="049-091203-004-A-20049.1.zip">
> 049-091203-004-A-20049.1.zip</a></li>
> <li><a href="049-091203-005-A-19991.1.zip">
> 049-091203-005-A-19991.1.zip</a></li>
> <li><a href="pss_docs.zip"> pss_docs.zip</a></li>
> </ul>
> </body></html>
>
>
> Resultado do Parser:
>
>  Parent Directory
>  01_ACQR_21376_DML.zip
>  01_ACQR_PATCH_022010.2_DML.zip
>  049-091126-029-A-20051.zip
>  049-091126-029-A-20051_outdated.zip
>  049-091126-030-A-20052.zip
>  049-091126-030-A-20052_outdated.zip
>  049-091126-031-A-20049.zip
>  049-091130-032-A-19935.1.zip
>  049-091201-001-A-20093.zip
>  049-091202-002-A-20093.1.zip
>  049-091202-003-A-20060.zip
>  049-091203-004-A-20049.1.zip
>  049-091203-005-A-19991.1.zip
>  049-091203-006-A-19992.1.zip
>  049-091203-007-A-20061.zip
>  049-091204-008-A-PATCH-112009.zip
>  049-091207-009-A-20146.zip
>  049-091210-010-A-20110.zip
>  049-091210-010-A-20110_outdated.zip
>  049-091211-011-A-20163.zip
>  049-091211-012-A-20228.zip
>  049-091216-013-A-20299.zip
>  049-091218-014-A-20294.zip
>  049-091218-015-A-20312.zip
>  049-091218-016-A-20315.zip
>  049-091218-017-A-20316.zip
>  049-091221-018-A-20309.zip
>  049-091221-018-A-20309_outdated.zip
>  049-091221-018-A-20309_outdated2.zip
>  049-091221-018-A-20309_outdated3.zip
>
> Agora preciso efetuar o download e não estou conseguindo.
>
> Em 26 de agosto de 2010 16:45, breno <breno em rio.pm.org> escreveu:
>
> 2010/8/26 Roan Brasil Monteiro <roanbrasil em gmail.com>:
>> > Galera fiz um projeto aqui e estou fazendo download de um zip file, só
>> que
>> > não estou conseguindo usando a lib, alguem pode me ajudar?
>> >
>>
>> Você pode dar um exemplo do html que está fazendo parsing? Ou do
>> conteúdo das variáveis em cada ponto crítico da execução? Ou o que seu
>> programa deveria fazer mas não está fazendo? Ou alguma mensagem de
>> erro?
>>
>> Baixar um zip com Perl pode ser tão simples quanto:
>>
>> perl -MLWP::Simple -e 'getprint
>> q[http://strawberryperl.cload/5.12.1.0/strawberry-perl-5.12.1.0.zip]'
>> > strawberry.zip
>>
>> []s
>>
>> -b
>> _______________________________________________
>> Cascavel-pm mailing list
>> Cascavel-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/cascavel-pm
>>
>
>
>
> --
> Atenciosamente,
>
> Roan Brasil Monteiro
> http://roanbrasil.wordpress.com/
> http://www.gramaro.com.br/ - Grama em Tapete Salvador Bahia
>
>
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>



-- 
André Garcia Carneiro
Analista/Desenvolvedor Perl
(11)82907780
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/cascavel-pm/attachments/20100826/0cce7352/attachment-0001.html>


Mais detalhes sobre a lista de discussão Cascavel-pm