2010-10-17 17:55:07 +0000 2010-10-17 17:55:07 +0000
40
40

CURL para descarregar um directório

Estou a tentar descarregar um directório completo do website usando CURL. O seguinte comando não funciona:

curl -LO http://example.com/

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

mas quando o faço: curl -LO http://example.com/someFile.type funciona. Alguma ideia de como descarregar todos os ficheiros no directório especificado? Obrigado.

Respostas (6)

40
40
40
2014-01-31 16:44:52 +0000

Trabalha sempre para mim, não inclui nenhum pai e recursivo para obter apenas o directório desejado.

wget --no-parent -r http://WEBSITE.com/DIRECTORY
32
32
32
2010-10-17 19:59:25 +0000

O HTTP não tem realmente uma noção de directórios. Os cortes para além dos três primeiros (http://example.com/) não têm qualquer significado especial, excepto no que diz respeito aos .. em URLs relativos. Assim, a menos que o servidor siga um formato particular, não há forma de “descarregar todos os ficheiros no directório especificado”.

Se quiser descarregar todo o sítio, a sua melhor aposta é atravessar recursivamente todos os links da página principal. O Curl não o pode fazer, mas o wget pode. Isto funcionará se o site não for demasiado dinâmico (em particular, wget não verá ligações que são construídas por código Javascript). Comece com wget -r http://example.com/, e procure em “Recursive Retrieval Options” e “Recursive Accept/Rejeit Options” no manual do wget para opções mais relevantes (profundidade de recursividade, listas de exclusão, etc.).

Se o website tentar bloquear downloads automáticos, poderá ser necessário alterar a string de agente de utilizador (-U Mozilla), e ignorar robots.txt (criar um ficheiro vazio example.com/robots.txt e utilizar a opção -nc para que o wget não tente fazer o download a partir do servidor).

17
17
17
2014-01-23 11:50:03 +0000

Neste caso, curl NÃO é a melhor ferramenta. Pode usar wget com o argumento -r, como este:

wget -r http://example.com/

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

5
5
5
2010-10-17 17:59:25 +0000

Isto não é possível. Não existe uma forma padrão, geralmente implementada, para um servidor web lhe devolver o conteúdo de um directório. A maioria dos servidores gera um índice HTML de um directório, se configurado para o fazer, mas esta saída não é padrão, nem garantida por qualquer meio. Poderá analisar este HTML, mas tenha em mente que o formato irá mudar de servidor para servidor, e nem sempre será activado.

2
2
2
2013-01-20 00:08:28 +0000

Pode usar a extensão Firefox DownThemAll! Permitir-lhe-á descarregar todos os ficheiros de um directório com um só clique. É também personalizável e pode especificar que tipos de ficheiros descarregar. Esta é a forma mais fácil que já encontrei.

0
0
0
2014-01-23 12:44:17 +0000

Poderá encontrar aqui uma utilização para um rasgador de sítios web, isto irá descarregar tudo e modificar os conteúdos/links internos para uso local. Uma boa ligação pode ser encontrada aqui: http://www.httrack.com