Wget não cria arquivo de índice do diretório

1

Estou tentando fazer o download do site com o comando:

wget -r -l 0 -p -k -m -e robots=off --restrict-file-names=nocontrol,unix http://example.com

Quando encontra o link, por exemplo, http://example.com/direction , cria um arquivo no disco ./example.com/direction

Então, por exemplo, ele encontra alguns outros arquivos (links) em 'direção', suponha http://example.com/direction/11

E wget reescrever o arquivo antigo ./example.com/direction com algum HTML e transformá-lo no diretório. E escreva o novo arquivo ./example.com/direction/11 lá.

Se ele encontrar um novo arquivo dentro de /direction/11 , ele também irá reescrever 11 e convertê-lo no diretório.

Parece que perdi todos os arquivos de índice de diretório.

Existe uma solução para o problema em si mesmo?

    
por Aleksander A 30.07.2014 / 09:56

2 respostas

2

Isso pode não funcionar em todos os casos, mas eu consegui resolver esse problema usando uma tag inesperada.

Do manual do wget 1.17.1:

‘-E’

‘--adjust-extension’

If a file of type ‘application/xhtml+xml’ or ‘text/html’ is downloaded and the URL does not end with the regexp ‘\.[Hh][Tt][Mm][Ll]?’, this option will cause the suffix ‘.html’ to be appended to the local filename.

Assim, no seu caso, quando o wget localiza o link http://example.com/direction , ele verifica se a página é formatada em html. Em caso afirmativo, ele será salvo no disco local como /example.com/direction.html . Então, quando ele vir http://example.com/direction/11 , ele será salvo no disco como /example.com/direction/11 , portanto, não sobrescrevendo o primeiro arquivo. Supondo que a verdadeira estrutura de diretórios seja /example.com/direction/index.html , ela não corresponderá exatamente à estrutura de diretórios remotos, mas pelo menos não sobrescreverá arquivos incorretamente.

    
por 14.01.2016 / 20:03
0

Bem, uma solução para esse problema usando apenas o Wget é quase impossível. Deixe-me primeiro tentar explicar a questão para você.

Primeiro Wget tenta baixar, http://site.com/direction . Quando o Wget envia uma solicitação para esse caminho, o servidor responde com os dados disponíveis em http://site/com/example/index.html . No entanto, neste momento, Wget não está ciente de que os dados que estão sendo enviados para ele correspondem ao caminho: example / index.html. Agora, quando Wget encontra outro arquivo, http://site.com/example/11 , as mesmas coisas acontecem novamente. No entanto, ele deve primeiro criar o diretório / e excluir incondicionalmente o arquivo antigo para fazer isso. IMO, o Wget deve detectar se está substituindo um arquivo por um diretório e salvá-lo como um arquivo de índice. Mas, a partir de agora, isso não acontece.

    
por 30.07.2014 / 11:05

Tags