CURL para baixar um diretório

31

Estou tentando baixar um diretório completo de sites usando o CURL. O seguinte comando não funciona:

curl -LO http://example.com/

Retorna um erro: curl: Remote file name has no length! .

Mas quando faço isso: curl -LO http://example.com/someFile.type funciona. Alguma idéia de como baixar todos os arquivos no diretório especificado? Obrigado.

    
por Foo 17.10.2010 / 19:55

6 respostas

30

O HTTP não tem realmente uma noção de diretórios. As barras diferentes das três primeiras ( http://example.com/ ) não têm nenhum significado especial, exceto em relação a .. em URLs relativas. Então, a menos que o servidor siga um formato específico, não há como “baixar todos os arquivos no diretório especificado”.

Se você quiser fazer o download de todo o site, sua melhor opção é percorrer todos os links da página principal de forma recursiva. Onda não pode fazer isso, mas você pode. Isso funcionará se o site não for muito dinâmico (em particular, o wget não verá links construídos por código Javascript). Comece com wget -r http://example.com/ e procure em “Recursive Retrieval Options” e “Recursive Accept / Reject Options” no manual do wget para opções mais relevantes (profundidade de recursão, listas de exclusão, etc.).

Se o site tentar bloquear downloads automáticos, talvez seja necessário alterar a sequência do agente do usuário ( -U Mozilla ) e ignorar robots.txt (criar um arquivo vazio example.com/robots.txt e usar a opção -nc para que O wget não tenta baixá-lo do servidor).

    
por 17.10.2010 / 21:59
21

Sempre funciona para mim, não inclui pai e é recursivo para obter apenas o diretório desejado.

 wget --no-parent -r http://WEBSITE.com/DIRECTORY
    
por 31.01.2014 / 17:44
12

Nesse caso, curl NÃO é a melhor ferramenta. Você pode usar wget com o argumento -r , assim:

wget -r http://example.com/ 

Esta é a forma mais básica, e você também pode usar argumentos adicionais. Para mais informações, consulte o manpage ( man wget ).

    
por 23.01.2014 / 12:50
5

Isso não é possível. Não existe uma maneira padrão, geralmente implementada, para um servidor web retornar o conteúdo de um diretório para você. A maioria dos servidores gera um índice HTML de um diretório, se configurado para isso, mas essa saída não é padrão, nem garantida por qualquer meio. Você pode analisar esse HTML, mas lembre-se de que o formato será alterado de servidor para servidor e nem sempre será ativado.

    
por 17.10.2010 / 19:59
2

Você pode usar a extensão do Firefox DownThemAll! Ele permitirá que você baixe todos os arquivos em um diretório em um clique. Também é personalizável e você pode especificar quais tipos de arquivo serão baixados. Esta é a maneira mais fácil que encontrei.

    
por 20.01.2013 / 01:08
0

Você pode encontrar um uso para um site ripper aqui, isso vai baixar tudo e modificar o conteúdo / links internos para uso local. Um bom pode ser encontrado aqui: link

    
por 23.01.2014 / 13:44

Tags