Fare `wget` non salva la pagina


68

Sto usando il wgetprogramma, ma voglio che non salvi il file html che sto scaricando. Voglio che venga scartato dopo che è stato ricevuto. Come lo faccio?


Sono nuovo di Linux - La /dev/nullcosa funzionerebbe?
Ram Rachum,

2
Allora, qual è il punto di scaricarlo, allora?
Anonimo

1
@Anche suppongo di stressare il server remoto .. Se non ti interessa il contenuto .. Probabilmente userei Apachebench (ab) però.
Tom O'Connor,

Risposte:


83

Puoi reindirizzare l'output di wget su / dev / null (o NUL su Windows):

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

Il file non verrà scritto sul disco, ma verrà scaricato.


Questo non salva la pagina, ma mi invia email. Inoltre è possibile disabilitare l'e-mail?
trante,

32

Se non vuoi salvare il file e hai accettato la soluzione di scaricare la pagina /dev/null, suppongo che stai usando wget per non ottenere e analizzare il contenuto della pagina .

Se la tua reale necessità è di innescare qualche azione remota, controlla che la pagina esista e così via penso che sarebbe meglio evitare di scaricare la pagina del corpo HTML.

Gioca con le wgetopzioni per recuperare solo ciò di cui hai veramente bisogno, ad esempio intestazioni http, stato delle richieste, ecc.

  • supponendo che sia necessario verificare che la pagina sia ok (ovvero, lo stato restituito è 200) è possibile effettuare le seguenti operazioni:

    wget --no-cache --spider http://your.server.tld/your/page.html
    
  • se si desidera analizzare le intestazioni restituite dal server, procedere come segue:

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

Vedi la pagina man di wget per ulteriori opzioni con cui giocare.
Vedi lynxanche, in alternativa a wget.


Non ho capito bene. --no-cachenella pagina man dice che fa sì che wget "invii al server remoto una direttiva appropriata ('Pragma: no-cache') per ottenere il file dal servizio remoto"
Gaia,

Dice al server che il tuo client non vuole una versione cache del file .. vogliamo ottenere l'ultima versione della risorsa che stiamo richiedendo
drAlberT

17

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


1
Molte grazie. L' --delete-afteropzione è la scelta quando devi scaricare ricorsivamente ma vuoi scartare il contenuto reale.
egelev,

+1 per me, il comando è intuitivo - a colpo d'occhio, posso capire più rapidamente cosa succederà di-O /dev/null
fusion27

15

Nel caso in cui si desideri stampare anche nella console, il risultato è possibile:

wget -qO- http://www.example.com

1
Mi piace di più questa opzione. Vediamo cosa ottiene ma non lo salva. Gli switch sono specificamente qmodalità silenziosa, (non genera avanzamento e altre informazioni) e O-(scrive il documento recuperato sulla console).
Polpo,

9

Un'altra alternativa è utilizzare uno strumento simile curl, che per impostazione predefinita genera il contenuto remoto stdoutinvece di salvarlo in un file.


4

Dai un'occhiata all'opzione "-spider". Lo uso per assicurarmi che i miei siti Web siano attivi e, in caso contrario, mi inviano un'email. Questa è una voce tipica dal mio crontab:

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

3

Se è necessario eseguire la scansione di un sito Web utilizzando wget e si desidera ridurre al minimo l'abbandono del disco ...

Per una casella * NIX e per l'utilizzo wget, suggerisco di saltare la scrittura su un file. Ho notato sulla mia casella Ubuntu 10.04 che ha wget -O /dev/nullcausato wget per interrompere i download dopo il primo download.
Ho anche notato che wget -O real-filefa sì che wget dimentichi i collegamenti effettivi sulla pagina. Insiste index.htmlaffinché sia ​​presente in ogni pagina. Tali pagine potrebbero non essere sempre presenti e wget non ricorderà i collegamenti che ha visto in precedenza.

Per la ricerca per indicizzazione senza scrivere su disco, il migliore che ho ideato è il seguente

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

Si noti che non esiste alcuna -O fileopzione. wget scriverà nella directory $ PWD. In questo caso si tratta di un file system tmpfs solo RAM . La scrittura qui dovrebbe bypassare lo sfasamento del disco (a seconda dello spazio di scambio) E tenere traccia di tutti i collegamenti. Questo dovrebbe eseguire la scansione dell'intero sito Web correttamente.

Dopo, ovviamente,

 rm --recursive --force /dev/shm/1/*

2

Utilizzare l'opzione --delete-after, che elimina il file dopo il download.

Modifica: Oops, ho appena notato che è già stata data una risposta.


0

Secondo il documento di aiuto (wget -h), puoi usare l'opzione --spider per saltare il download (versione 1.14).

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


In che modo ciò si aggiunge all'altra risposta che menziona --spider?
Ward
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.