Fazendo o `wget` não salva a página

68

Estou usando o wgetprograma, mas quero que ele não salve o arquivo html que estou baixando. Quero que seja descartado depois de recebido. Como faço isso?

Ram Rachum
fonte
Eu sou novo no Linux - A /dev/nullcoisa funcionaria?
Ram Rachum
2
Então, qual é o objetivo de fazer o download?
1140 Anonymous
11
@ Anônimo Eu suponho enfatizar o servidor remoto .. Se você não se importa com o conteúdo .. Eu provavelmente usaria o apachebench (ab).
Tom O'Connor

Respostas:

83

Você pode redirecionar a saída do wget para / dev / null (ou NUL no Windows):

wget http://www.example.com -O /dev/null

O arquivo não será gravado no disco, mas será baixado.

Evan Anderson
fonte
Isso não salva a página, mas envia um email para mim. Também é possível desativar o email?
trante 7/09/13
32

Se você não deseja salvar o arquivo e aceitou a solução de baixar a página /dev/null, suponho que esteja usando o wget para não obter e analisar o conteúdo da página .

Se sua real necessidade for acionar alguma ação remota, verifique se a página existe e assim por diante acho que seria melhor evitar o download da página do corpo html.

Brinque com as wgetopções para recuperar apenas o que você realmente precisa, como cabeçalhos http, status da solicitação etc.

  • supondo que você precise verificar se a página está correta (ou seja, o status retornado é 200), você pode fazer o seguinte:

    wget --no-cache --spider http://your.server.tld/your/page.html
    
  • se você deseja analisar os cabeçalhos retornados pelo servidor, faça o seguinte:

    wget --no-cache -S http://your.server.tld/your/page.html
    

Veja a página de manual do wget para mais opções para brincar.
Veja lynxtambém, como uma alternativa ao wget.

drAlberT
fonte
Estou confuso. --no-cachena página de manual diz que faz com que o wget "envie ao servidor remoto uma diretiva apropriada ('Pragma: no-cache') para obter o arquivo do serviço remoto"
Gaia
Ele diz ao servidor que seu cliente não deseja uma versão em cache do arquivo .. queremos obter a última versão do recurso que estamos solicitando
drAlberT
17

$ wget http://www.somewebsite.com -O foo.html --delete-after

al.
fonte
11
Muito obrigado. A --delete-afteropção é a opção quando você precisa fazer o download recursivamente, mas deseja descartar o conteúdo real.
precisa saber é
+1 para mim, o comando é intuitivo - de relance, consigo entender mais rapidamente o que vai acontecer do que-O /dev/null
fusion27
15

Caso você também queira imprimir no console, o resultado pode ser:

wget -qO- http://www.example.com
SCL
fonte
11
Eu gosto mais dessa opção. Vamos ver o que acontece, mas não o salva. Os comutadores são especificamente qmodo silencioso (não produz progresso e outras informações) e O-(grava o documento recuperado no console).
Octopus
9

Outra alternativa é usar uma ferramenta como a curlqual, por padrão, gera o conteúdo remoto, em stdoutvez de salvá-lo em um arquivo.

natacado
fonte
4

Confira a opção "-spider". Eu o uso para garantir que meus sites estejam ativos e me envie um e-mail, se não estiverem. Esta é uma entrada típica do meu crontab:

46 */2 * * * if ! wget -q --spider http://www.rochesterflyingclub.com/ >/dev/null 2>&1; then echo "Rochester Flying Club site is down" ; fi
Paul Tomblin
fonte
3

Se você precisa rastrear um site usando o wget e deseja minimizar a rotatividade de disco ...

Para uma caixa * NIX e uso wget, sugiro pular a gravação em um arquivo. Percebi na minha caixa do Ubuntu 10.04 que wget -O /dev/nullfez com que o wget interrompesse os downloads após o primeiro download.
Notei também que wget -O real-filefaz com que o wget esqueça os links reais na página. Ele insiste em index.htmlestar presente em cada página. Tais páginas nem sempre podem estar presentes e o wget não se lembra dos links que viu anteriormente.

Para rastrear sem gravar no disco, o melhor que criei é o seguinte

 mkdir /dev/shm/1   
 cd /dev/shm/1
 wget --recursive --relative --no-parent ...

Observe que não há -O fileopção. O wget gravará no diretório $ PWD. Nesse caso, é um sistema de arquivos tmpfs somente para RAM . A escrita aqui deve ignorar a rotatividade do disco (dependendo do espaço de troca) E acompanhar todos os links. Isso deve rastrear o site inteiro com êxito.

Depois, é claro,

 rm --recursive --force /dev/shm/1/*
JamesThomasMoon1979
fonte
2

Use a opção --delete-after, que exclui o arquivo após o download.

Edit: Opa, acabei de perceber que já foi respondido.

John Gardeniers
fonte
0

De acordo com o documento de ajuda (wget -h), você pode usar a opção --spider para pular o download (versão 1.14).

Download:
  -S,  --server-response         print server response.
       --spider                  don't download anything.

qi rochoso
fonte
Como isso se soma à outra resposta que menciona --spider?
Ward