Como baixar o diretório HTTP com todos os arquivos e subdiretórios conforme eles aparecem na lista de arquivos / pastas online?

189

Há um diretório HTTP online ao qual tenho acesso. Eu tentei baixar todos os subdiretórios e arquivos via wget. Porém, o problema é que, ao wgetbaixar subdiretórios, ele baixa o index.htmlarquivo que contém a lista de arquivos nesse diretório sem fazer o download dos arquivos.

Existe uma maneira de baixar os subdiretórios e arquivos sem limite de profundidade (como se o diretório que eu quisesse baixar fosse apenas uma pasta que eu quero copiar para o meu computador).

diretório HTTP online

Omar
fonte

Respostas:

357

Solução:

wget -r -np -nH --cut-dirs=3 -R index.html http://hostname/aaa/bbb/ccc/ddd/

Explicação:

  • Ele fará o download de todos os arquivos e subpastas no diretório ddd
  • -r : recursivamente
  • -np: não vai para diretórios superiores, como ccc /…
  • -nH : não salvando arquivos na pasta hostname
  • --cut-dirs=3: mas salvando-o em ddd , omitindo as 3 primeiras pastas aaa , bbb , ccc
  • -R index.html: excluindo arquivos index.html

Referência: http://bmwieczorek.wordpress.com/2008/10/01/wget-recursively-download-all-files-from-fficient-directory-listed-by-apache/

Mingjiang Shi
fonte
17
Obrigado! Além disso, para sua informação, de acordo com isso, você pode usar -Rcomo -R cssexcluir todos os arquivos CSS ou usar apenas -Acomo -A pdfpara baixar apenas arquivos PDF.
João
7
Obrigado! Conselhos adicionais tomadas a partir wget página man When downloading from Internet servers, consider using the ‘-w’ option to introduce a delay between accesses to the server. The download will take a while longer, but the server administrator will not be alarmed by your rudeness.
jgrump2012
3
Eu recebo esse erro 'wget' não é reconhecido como um comando interno ou externo, programa operável ou arquivo em lote.
hamish
1
@hamish, pode ser necessário instalar o wget primeiro ou o wget não está no seu $ PATH.
Mingjiang Shi
16
Ótima resposta, mas observe que, se houver um robots.txtarquivo que não permita o download de arquivos no diretório, isso não funcionará. Nesse caso, você precisa adicionar -e robots=off . Veja unix.stackexchange.com/a/252564/10312
Daniel Hershcovich
45

Consegui fazer isso funcionar graças a este post utilizando o VisualWGet . Funcionou muito bem para mim. A parte importante parece ser verificar a -recursivebandeira (veja a imagem).

Também descobriu que a -no-parentbandeira é importante; caso contrário, ela tentará fazer o download de tudo.

insira a descrição da imagem aqui insira a descrição da imagem aqui

mateuscb
fonte
2
Acabei de encontrar isso - dez 2017. Funciona bem. Eu consegui em sourceforge.net/projects/visualwget
SDsolar
2
Bem trabalhado na máquina Windows, não se esqueça de verificar nas opções mencionadas na resposta, senão ele não vai funcionar
csharpcoder
Não funciona com certos https. @DaveLucre se você tentou com wget em solução cmd você seria capaz de baixar bem, mas alguns severs não permitem que eu acho
Yannis Dran
o que o verificado --no-parentfaz?
T.Todua 8/08/19
1
Trabalhando em março de 2020!
Sr. Programmer
7
wget -r -np -nH --cut-dirs=3 -R index.html http://hostname/aaa/bbb/ccc/ddd/

De man wget

'-r' '--recursive' Ative a recuperação recursiva. Consulte Download recursivo, para mais detalhes. A profundidade máxima padrão é 5.

'-np' '--no-parent' Nunca ascenda ao diretório pai ao recuperar recursivamente. Essa é uma opção útil, pois garante que apenas os arquivos abaixo de uma determinada hierarquia serão baixados. Consulte Limites baseados em diretório, para mais detalhes.

'-nH' '--no-host-directory' Desativa a geração de diretórios com prefixo de host. Por padrão, chamar o Wget com '-r http://fly.srk.fer.hr/ ' criará uma estrutura de diretórios começando com fly.srk.fer.hr/. Esta opção desabilita esse comportamento.

'--cut-dirs = number' Ignora os componentes do diretório de números. Isso é útil para obter um controle refinado sobre o diretório em que a recuperação recursiva será salva.

Pegue, por exemplo, o diretório em ' ftp://ftp.xemacs.org/pub/xemacs/ '. Se você o recuperar com '-r', ele será salvo localmente em ftp.xemacs.org/pub/xemacs/. Enquanto a opção '-nH' pode remover a parte ftp.xemacs.org/, você ainda está preso ao pub / xemacs. É aqui que '--cut-dirs' é útil; faz com que o Wget não "veja" numerar componentes do diretório remoto. Aqui estão vários exemplos de como a opção '--cut-dirs' funciona.

Sem opções -> ftp.xemacs.org/pub/xemacs/ -nH -> pub / xemacs / -nH --cut-dirs = 1 -> xemacs / -nH --cut-dirs = 2 ->.

--cut-dirs = 1 -> ftp.xemacs.org/xemacs/ ... Se você quiser apenas se livrar da estrutura de diretórios, esta opção é semelhante a uma combinação de '-nd' e '-P'. No entanto, ao contrário de '-nd', '--cut-dirs' não perde com subdiretórios - por exemplo, com '-nH --cut-dirs = 1', um subdiretório beta / será colocado em xemacs / beta, como seria de esperar.

Natalie Ng
fonte
3
Algumas explicações seriam ótimas.
Benoît Latinier
Que tal baixar um tipo de arquivo específico usando o VisualWget ? É possível baixar apenas arquivos mp3 em um diretório e seus subdiretórios no VisualWget ?
Jason
3

wgeté um recurso inestimável e algo que eu mesmo uso. No entanto, às vezes, existem caracteres no endereço que wgetidentificam como erros de sintaxe. Tenho certeza de que há uma correção para isso, mas como essa pergunta não foi feita especificamente sobre o assunto wget, pensei em oferecer uma alternativa para as pessoas que, sem dúvida, tropeçarem nesta página, procurando uma solução rápida, sem a necessidade de uma curva de aprendizado.

Existem algumas extensões de navegador que podem fazer isso, mas a maioria exige a instalação de gerenciadores de download, que nem sempre são gratuitos, tendem a ser desagradáveis ​​e usam muitos recursos. Heres um que não tem nenhuma destas desvantagens:

"Download Master" é uma extensão do Google Chrome que funciona muito bem para baixar de diretórios. Você pode optar por filtrar quais tipos de arquivo baixar ou baixar o diretório inteiro.

https://chrome.google.com/webstore/detail/download-master/dljdacfojgikogldjffnkdcielnklkce

Para obter uma lista atualizada de recursos e outras informações, visite a página do projeto no blog do desenvolvedor:

http://monadownloadmaster.blogspot.com/

Moscarda
fonte
3

você pode usar o lftp, o canivete swish do download, se você tiver arquivos maiores, poderá adicionar --use-pget-n=10ao comando

lftp -c 'mirror --parallel=100 https://example.com/files/ ;exit'
nwgat
fonte
funcionou perfeitamente e muito rápido, isso maximizou minha linha de internet baixando milhares de arquivos pequenos. Muito bom.
n13 27/06
funciona perfeito !! A melhor opção!
ambigus9
2

Nenhum software ou plug-in necessário!

(apenas utilizável se você não precisar de departamento recursivo)

Use bookmarklet. Arraste esse link nos favoritos, edite e cole este código:

(function(){ var arr=[], l=document.links; var ext=prompt("select extension for download (all links containing that, will be downloaded.", ".mp3"); for(var i=0; i<l.length; i++) { if(l[i].href.indexOf(ext) !== false){ l[i].setAttribute("download",l[i].text); l[i].click(); } } })();

e vá para a página (de onde você deseja baixar arquivos) e clique nesse bookmarklet.

T.Todua
fonte
-1

O wget geralmente funciona dessa maneira, mas alguns sites podem ter problemas e podem criar muitos arquivos html desnecessários. Para facilitar esse trabalho e impedir a criação desnecessária de arquivos, estou compartilhando meu script getwebfolder, que é o primeiro script linux que escrevi para mim. Esse script baixa todo o conteúdo de uma pasta da web inserida como parâmetro.

Quando você tenta baixar uma pasta da Web aberta pelo wget que contém mais de um arquivo, o wget baixa um arquivo chamado index.html. Este arquivo contém uma lista de arquivos da pasta da web. Meu script converte nomes de arquivos escritos no arquivo index.html em endereços da Web e os baixa claramente com o wget.

Testado no Ubuntu 18.04 e Kali Linux, também pode funcionar em outras distros.

Uso:

  • extrair o arquivo getwebfolder do arquivo zip fornecido abaixo

  • chmod +x getwebfolder (apenas pela primeira vez)

  • ./getwebfolder webfolder_URL

tal como ./getwebfolder http://example.com/example_folder/

Link para Download

Detalhes no blog

Byte Bitter
fonte