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

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

Estou tentando baixar o site com o comando:

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

Ao encontrar o link, por exemplo, http://example.com/directionele cria um arquivo no disco./example.com/direction

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

E wgetreescreva o arquivo antigo ./example.com/directioncom algum HTML e transforme-o no diretório. E escreva um novo arquivo ./example.com/direction/11lá.

Se encontrar um novo arquivo dentro dele /direction/11, ele também o reescreverá 11e o converterá no diretório.

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

Existe uma solução para o problema no próprio wget?

Responder1

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

Do manual do wget 1.17.1:

‘-E’

‘--adjust-extension’

Se um arquivo do tipo ‘application/xhtml+xml’ou ‘text/html’for baixado e o URL não terminar com regexp ‘\.[Hh][Tt][Mm][Ll]?’, esta opção fará com que o sufixo ‘.html’seja anexado ao nome do arquivo local.

Assim, no seu caso, quando o wget encontrar o link http://example.com/direction, ele irá verificar se a página está formatada em html. Nesse caso, ele será salvo no disco local como arquivo /example.com/direction.html. Então, quando vir http://example.com/direction/11, ele o salvará no disco como /example.com/direction/11, não sobrescrevendo assim 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 substituirá os arquivos incorretamente.

Responder2

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

Primeiramente o Wget tenta fazer o download, http://site.com/direction. Quando o Wget envia uma solicitação para esse caminho, o servidor responde com os dados disponíveis no arquivo http://site/com/example/index.html. No entanto, neste ponto, o Wget não tem conhecimento de que os dados que lhe são enviados correspondem ao caminho: example/index.html. Agora, quando o Wget encontra outro arquivo, http://site.com/example/11a mesma coisa acontece novamente. No entanto, ele deve primeiro criar o diretório example/ e excluir incondicionalmente o arquivo antigo para fazer isso. IMO, o Wget deve detectar se está substituindo um arquivo por um diretório e salvar o arquivo como um arquivo de índice. Mas, a partir de agora, isso não acontece.

informação relacionada