2012-10-03 18 views
13

Solo quiero la estructura de la carpeta, pero no pude entender cómo con wget. En cambio, estoy usando esto:wget rechazar aún el archivo de descarga

wget -R pdf, css, gif, txt, png -np -r http://example.com

Qué debe rechazar todos los archivos después de -R, pero me parece wget todavía descarga el archivo, luego lo elimina.

¿Hay alguna manera mejor de obtener la estructura de carpetas?

solicitud TTP enviado, a la espera de la respuesta ... 200 OK Longitud: 136.796 (134K) [application/x-descarga] Guardar en: “example.com/file.pdf”

100 % [===================>] 136,796 853K/s en 0.2s

2012-10-03 03:51:41 (853 KB/s) - “example.com/file.pdf” salvado [136796/136796]

Extracción example.com/file.pdf ya que debe ser rechazado.

Si alguien se preguntaba si esto es para un cliente, pueden decirme la estructura, pero es una molestia ya que su técnico de TI tiene que hacerlo, así que solo quería obtenerlo yo mismo.

+0

Puede ser que usted debe preguntar a este en http: //unix.stackexchange.com/ –

+0

Es mejor que obtenga la estructura de su cliente. 'wget', especialmente con la opción' -np', puede perder los directorios que no están directa o indirectamente vinculados por el archivo de índice. –

+1

Posible duplicado: http: // stackoverflow.com/questions/10712344/mirror-http-web-excluyendo-ciertos-archivos –

Respuesta

17

Parece que así fue como wget fue diseñado para funcionar. Al realizar descargas recursivas, los archivos que no pertenecen a la hoja y que coinciden con la lista de rechazados aún se descargan para que puedan ser recogidos para enlaces y luego eliminados.

De los comentarios en el código (recur.c):

De cualquier --delete después se especifica, o hemos cargado esta rechazada de otra forma (por ejemplo, por -R) archivo HTML por lo que sólo podía coseche sus hipervínculos - en cualquier caso, elimine el archivo local.

Hemos tenido un encuentro con esto en un proyecto anterior donde tuvimos que reflejar un sitio autenticado y wget mantiene golpear las cierre de sesión páginas incluso cuando estaba destinado a rechazar esos URL. No pudimos encontrar ninguna opción para cambiar el comportamiento de wget.

La solución con la que terminamos fue download, hackear y construir nuestra propia versión de wget. Es probable que haya un enfoque más elegante a este, pero la solución rápida que utilizamos fue añadir las siguientes reglas al final de la download_child_p() routine (modificado para satisfacer sus necesidades):

/* Extra rules */ 
    if (match_tail(url, ".pdf", 0)) goto out; 
    if (match_tail(url, ".css", 0)) goto out; 
    if (match_tail(url, ".gif", 0)) goto out; 
    if (match_tail(url, ".txt", 0)) goto out; 
    if (match_tail(url, ".png", 0)) goto out; 
    /* --- end extra rules --- */ 

    /* The URL has passed all the tests. It can be placed in the 
    download queue. */ 
    DEBUGP (("Decided to load it.\n")); 

    return 1; 

out: 
    DEBUGP (("Decided NOT to load it.\n")); 

    return 0; 
} 
+3

¡Guau! Deben hacer que la función de rechazo funcione así. Pero me doy cuenta de que wget estaba destinado a hacer una tarea específica. Gracias. –

+0

De nada, Michael. –

+0

Subiendo esta respuesta porque es una increíble solución de bricolaje, pero aún estoy decepcionado de que no haya una mejor manera. – taranaki

Cuestiones relacionadas