wget para obter todos os arquivos em um diretório retorna apenas index.html

4

Sou novo no uso do bash e tenho tentado wget de todos os arquivos de um site para o servidor em que estou trabalhando. No entanto, tudo o que estou recebendo é um arquivo index.html . Deixei rodar por 15 minutos e o arquivo index.html ainda estava baixando, então eu o matei. Meus arquivos podem ser baixados após o arquivo index.html ?

Aqui está o código que tenho tentado:

$ wget --no-parent -R index.html -A "Sample" -nd --random-wait \
   -r -p -e robots=off -U Mozilla --no-check-certificate \
   http://somewebsite.com/hasSamples/Sample0

Estou tentando baixar todos os arquivos em um subdiretório que começa com Sample. Eu procurei bastante na internet para encontrar uma resolução, e neste momento estou perplexo. Eu provavelmente não encontrei as combinações certas de opções, mas qualquer ajuda seria muito apreciada. Aqui está o meu entendimento do código:

  • --no-parent significa não pesquisar diretórios pais
  • -R index.html significa rejeitar o download do arquivo index.html, eu também tentei "index.html *", mas ele ainda baixou mesmo assim
  • -A "Sample" tipo de atos como uma amostra * seria em bash
  • -nd significa baixar os arquivos e não os diretórios
  • --random-wait para garantir que você não seja colocado na lista negra de um site
  • -r de downloads recursivamente
  • -p não tem certeza
  • -e robots=off ignores arquivos robot.txt
  • U Mozilla faz o usuário parecer com seu Mozilla eu acho
  • O --no-check-certificate é necessário apenas para o site.
por njBernstein 15.07.2014 / 17:23

2 respostas

2

-A "Sample" kind of acts like a Sample* would in bash

Não pela minha leitura de man wget :

  • -A acclist --accept acclist
  • -R rejlist --reject rejlist

Specify comma-separated lists of file name suffixes or patterns to accept or reject. Note that if any of the wildcard characters, *, ?, [ or ], appear in an element of acclist or rejlist, it will be treated as a pattern, rather than a suffix.

Portanto, seu uso (sem curingas) é equivalente ao bash glob *.Sample .

O Wget funciona varrendo links, o que provavelmente é o porquê ele está tentando fazer o download de um index.html (você não disse qual é o conteúdo disso, se é que existe, só que demorou muito) - ter um lugar para começar. Para explicar melhor: uma URL é não um caminho de arquivo . Você não pode verificar um servidor da Web como se fosse uma hierarquia de diretórios, dizendo: "forneça todos os arquivos no diretório foobar ". Se foobar corresponder a um diretório real (certamente não é necessário, porque é parte de uma URL, não de um caminho de arquivo), um servidor da web pode ser configurado para fornecer um índice gerado automaticamente. html listando os arquivos, fornecendo a ilusão de que você pode navegar pelo sistema de arquivos. Mas isso não faz parte do protocolo HTTP, é apenas uma convenção usada por padrão com servidores como o apache. Então, o que o wget faz é varrer, por exemplo, index.html para <a href= e <img src= , etc., então segue esses links e faz a mesma coisa, recursivamente. É a isso que o comportamento "recursivo" do wget se refere - recursivamente examina links porque (para reiterar), ele não tem acesso a nenhum sistema de arquivos no servidor, e o servidor não precisa fornecer QUALQUER informação referente a tais .

Se você tiver uma página da web .html real que possa ser carregada e clicar em todos os itens desejados, comece com esse endereço e use apenas -r -np -k -p .

    
por 15.07.2014 / 18:32
0

O que acontece quando você se conecta à página com seu navegador?

Se você navegar nas páginas sem nenhum problema, pode haver algumas coisas que estão faltando.

A página pode estar verificando o seu navegador, e a Mozilla não é a resposta correta, escolha uma das strings do navegador em aqui (a string inteira, não apenas o Mozilla) e tente ver se funciona.

Se isso não acontecer, você pode precisar de cookies, obter os cookies se conectando à página principal com wget e armazená-los. Em seguida, use wget com esses cookies e tente fazer o download das páginas.

Tente a opção --mirror se você quiser espelhá-la.

Se nada funcionar, eu estudaria a conexão e as páginas. Os cabeçalhos HTTP ao vivo adicionados ao Firefox são uma ferramenta muito legal. Você pode ver toda a comunicação entre o seu navegador e a página da web. Tente imitar esse comportamento com o wget para obter o que você está procurando.

    
por 15.07.2014 / 17:33