Hacer que 'wget' no guarde la página

68

Estoy usando el wgetprograma, pero quiero que no guarde el archivo html que estoy descargando. Quiero que se descarte después de que se reciba. ¿Cómo puedo hacer eso?

Ram Rachum
fuente
Soy nuevo en Linux. ¿ /dev/nullFuncionaría?
Ram Rachum
2
Entonces, ¿cuál es el punto para descargarlo?
Anónimo el
1
@ Anónimo Supongo que estresar al servidor remoto ... Si no te importa el contenido ... Probablemente usaría apachebench (ab).
Tom O'Connor

Respuestas:

83

Puede redirigir la salida de wget a / dev / null (o NUL en Windows):

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

El archivo no se escribirá en el disco, pero se descargará.

Evan Anderson
fuente
Esto no guarda la página, pero me envía un correo electrónico. ¿También es posible deshabilitar el correo electrónico?
trante
32

Si no desea guardar el archivo y ha aceptado la solución de descargar la página /dev/null, supongo que está utilizando wget para no obtener y analizar el contenido de la página .

Si su verdadera necesidad es activar alguna acción remota, verifique que la página exista y así sucesivamente, creo que sería mejor evitar descargar la página del cuerpo html.

Juegue con las wgetopciones para recuperar solo lo que realmente necesita, es decir, encabezados http, estado de la solicitud, etc.

  • asumiendo que necesita verificar que la página está bien (es decir, el estado devuelto es 200) puede hacer lo siguiente:

    wget --no-cache --spider http://your.server.tld/your/page.html
    
  • si desea analizar los encabezados devueltos por el servidor, haga lo siguiente:

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

Consulte la página de manual de wget para obtener más opciones para jugar.
Ver lynxtambién, como una alternativa a wget.

drAlberT
fuente
Estoy confundido. --no-cacheen la página de manual dice que hace que wget "envíe al servidor remoto una directiva apropiada ('Pragma: no-cache') para obtener el archivo del servicio remoto"
Gaia
Le dice al servidor que su cliente no quiere una versión en caché del archivo ... queremos obtener la última versión del recurso que estamos solicitando
drAlberT
17

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

Alabama.
fuente
1
Muchas gracias. La --delete-afteropción es la opción cuando tiene que descargar de forma recursiva pero desea descartar el contenido real.
egelev
+1 para mí, el comando es intuitivo: de un vistazo, puedo comprender más rápidamente lo que sucederá que-O /dev/null
fusion27
15

En caso de que también desee imprimir en la consola el resultado que puede hacer:

wget -qO- http://www.example.com
SCL
fuente
1
Me gusta más esta opción. Me deja ver lo que se obtiene pero no lo guarda. Los interruptores están específicamente en qmodo silencioso, (no genera progreso ni otra información) y O-(escribe el documento recuperado en la consola).
Octopus
9

Otra alternativa es utilizar una herramienta como curl, que por defecto genera el contenido remoto en stdoutlugar de guardarlo en un archivo.

natacado
fuente
4

Echa un vistazo a la opción "-spider". Lo uso para asegurarme de que mis sitios web están activos y enviarme un correo electrónico si no lo están. Esta es una entrada típica de mi 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
fuente
3

Si necesita rastrear un sitio web con wget y desea minimizar la pérdida de disco ...

Para un cuadro * NIX y uso wget, sugiero omitir la escritura en un archivo. Noté en mi cuadro Ubuntu 10.04 que wget -O /dev/nullhizo que wget cancelara las descargas después de la primera descarga.
También noté que wget -O real-filehace que wget olvide los enlaces reales en la página. Insiste en index.htmlque esté presente en cada página. Es posible que dichas páginas no siempre estén presentes y wget no recordará los enlaces que ha visto anteriormente.

Para rastrear sin escribir en el disco, lo mejor que se me ocurrió es lo siguiente

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

Tenga en cuenta que no hay -O fileopción. wget escribirá en el directorio $ PWD. En este caso, es un sistema de archivos tmpfs solo RAM . Escribir aquí debería omitir la rotación del disco (dependiendo del espacio de intercambio) Y realizar un seguimiento de todos los enlaces. Esto debería rastrear todo el sitio web con éxito.

Después, por supuesto,

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

Use la opción --delete-after, que elimina el archivo después de descargarlo.

Editar: Vaya, acabo de notar que ya se ha respondido.

John Gardeniers
fuente
0

Según el documento de ayuda (wget -h), puede usar la opción --spider para omitir la descarga (versión 1.14).

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

qi rocoso
fuente
¿Cómo se agrega esto a la otra respuesta que menciona - araña?
Ward