HwapX

Desafio Download all PSD's

Nov 1st, 2015
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.19 KB | None | 0 0
  1. # http://www.forum-invaders.com.br/vb/showthread.php/41216-Desafio-09-Perl-Download-all-PSD-s
  2.  
  3. #!/usr/bin/perl -w
  4. use strict;
  5. use warnings;
  6. use LWP::Simple qw(get getstore);#"get" retorna o conteudo do arquivo requisitado, "getstore" salva o conteudo do arquivo requisitado no disco
  7. use HTML::TreeBuilder;#Permite construir uma arvore de elementos HTML
  8.  
  9. my $url = "http://365psd.com/page/";
  10. my $pc = 126;#Numero de paginas, poderia ter pego no site porem a preguiça foi maior
  11. my $dd = "365psd";#Nome do diretorio onde os arquivos serão salvos
  12.  
  13. mkdir($dd);#Cria o diretorio
  14.  
  15. #percorre todas as paginas
  16. for(1..$pc) {
  17.     print "Getting link list from -> $url$_\n";
  18.    
  19.     #Pega o conteudo da pagina com "get" e cria objeto para trabalhar com ela
  20.     my $h = HTML::TreeBuilder->new_from_content(get($url.$_));
  21.    
  22.     #procura pela div que armazena os links para as paginas de cada arquivo (indentificada pela classe "items")
  23.     #e pega todos os elementos "a" que estão dentro dela
  24.     my @links = $h->find_by_attribute("class", "items")->find_by_tag_name("a");
  25.    
  26.     #percorre os elementos
  27.     foreach(@links) {
  28.         my $dp = $_->attr("href");#pego a url armazenada no elemento
  29.         print "\tGetting download link from -> $dp\n";
  30.        
  31.         #Pega o conteudo da pagina com "get" e cria objeto para trabalhar com ela
  32.         my $h2 = HTML::TreeBuilder->new_from_content(get($dp));
  33.        
  34.         #procura pelo elemento que contem a url do arquivo (indentificado pela classe "download")
  35.         my $de = $h2->find_by_attribute("class", "download");
  36.        
  37.         if($de) {#verifica se o elemento foi encontrado
  38.             my $dl = $de->attr("href");#se foi então pega a url armazenada nele
  39.             $dl =~ /\/((.(?!\/))+$)/;#extrai o nome do arquivo da url
  40.             my $fn = $1;#e armazena aqui
  41.            
  42.             print "\t\tdownloading file -> $fn\n";
  43.             getstore($dl, "$dd/$fn");#faz o download do arquivo e salva no disco
  44.         } else {
  45.             print "\t\tCan't find the download link(Probably a premium file)\n";
  46.         }
  47.        
  48.         $h2->delete();#remove a pagina da memoria
  49.     }
  50.     $h->delete();#remove a pagina da memoria
  51. }
Add Comment
Please, Sign In to add comment