Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # http://www.forum-invaders.com.br/vb/showthread.php/41216-Desafio-09-Perl-Download-all-PSD-s
- #!/usr/bin/perl -w
- use strict;
- use warnings;
- use LWP::Simple qw(get getstore);#"get" retorna o conteudo do arquivo requisitado, "getstore" salva o conteudo do arquivo requisitado no disco
- use HTML::TreeBuilder;#Permite construir uma arvore de elementos HTML
- my $url = "http://365psd.com/page/";
- my $pc = 126;#Numero de paginas, poderia ter pego no site porem a preguiça foi maior
- my $dd = "365psd";#Nome do diretorio onde os arquivos serão salvos
- mkdir($dd);#Cria o diretorio
- #percorre todas as paginas
- for(1..$pc) {
- print "Getting link list from -> $url$_\n";
- #Pega o conteudo da pagina com "get" e cria objeto para trabalhar com ela
- my $h = HTML::TreeBuilder->new_from_content(get($url.$_));
- #procura pela div que armazena os links para as paginas de cada arquivo (indentificada pela classe "items")
- #e pega todos os elementos "a" que estão dentro dela
- my @links = $h->find_by_attribute("class", "items")->find_by_tag_name("a");
- #percorre os elementos
- foreach(@links) {
- my $dp = $_->attr("href");#pego a url armazenada no elemento
- print "\tGetting download link from -> $dp\n";
- #Pega o conteudo da pagina com "get" e cria objeto para trabalhar com ela
- my $h2 = HTML::TreeBuilder->new_from_content(get($dp));
- #procura pelo elemento que contem a url do arquivo (indentificado pela classe "download")
- my $de = $h2->find_by_attribute("class", "download");
- if($de) {#verifica se o elemento foi encontrado
- my $dl = $de->attr("href");#se foi então pega a url armazenada nele
- $dl =~ /\/((.(?!\/))+$)/;#extrai o nome do arquivo da url
- my $fn = $1;#e armazena aqui
- print "\t\tdownloading file -> $fn\n";
- getstore($dl, "$dd/$fn");#faz o download do arquivo e salva no disco
- } else {
- print "\t\tCan't find the download link(Probably a premium file)\n";
- }
- $h2->delete();#remove a pagina da memoria
- }
- $h->delete();#remove a pagina da memoria
- }
Add Comment
Please, Sign In to add comment