¿Le dice a wget que no use la URL de araña que coincida con un patrón?

8

Quiero probar cómo se comportaría mi sitio al ser arañado. Sin embargo, quiero excluir todas las URL que contengan la palabra "página". Lo intenté:

$ wget -r -R "*page*" --spider --no-check-certificate -w 1 http://mysite.com/

Se -Rsupone que la bandera rechaza el patrón de URL que contiene la palabra "página". Excepto que no parece funcionar:

Spider mode enabled. Check if remote file exists.
--2014-06-10 12:34:56--  http://mysite.com/?sort=post&page=87729
Reusing existing connection to [mysite.com]:80.
HTTP request sent, awaiting response... 200 OK

¿Cómo excluyo spidering de dicha URL?

Desbordamiento de preguntas
fuente

Respuestas:

10

Después de algunas pruebas y errores, me doy cuenta de que la solución es simplemente usar --reject-regexasí:

wget -r --reject-regex page --spider --no-check-certificate -w 1 http://mysite.com/

El urlregex no debe contener comodines y, por *page*lo tanto , no es válido, pero lo pagees.

Desbordamiento de preguntas
fuente
1

De man wget:

-R rejlist --reject rejlist
           Specify comma-separated lists of file name suffixes or patterns to
           accept or reject.

Esta opción solo rechazará archivos que coincidan con el patrón.

Estrictamente hablando, en su URL pagehay un parámetro de solicitud, no la última parte de la ruta (por ejemplo, el nombre del archivo).


Es posible que desee volcar todas las URL que wget encontró (por ejemplo, grep el registro de todas las URL descargadas), eliminar aquellas URL que no lo satisfagan (con grep -v, por ejemplo) y finalmente hacer que wget recupere las URL restantes. Por ejemplo:

# dump the whole website
wget ... -P dump -o wget.log  ...

# extract URLs from the log file
cat wget.log | grep http | tr -s " " "\012" | grep http >urls

# excludes URLs with the word page anywhere in it
cat urls | grep -v page >urls 

# delete previous dump, since it probably contains unwanted files
rm -rf dump

# Fetch URLs
cat urls | xargs wget -x

Es posible que desee agregar otras opciones de wget (por ejemplo, --no-check-certificate) según sus necesidades.

holadanylo
fuente
Leí el manual varias veces. Como puede ver, dice "sufijos o patrones de nombre de archivo ", por lo que no está claro si el patrón debe ser un nombre de archivo. Sin embargo, estoy buscando una solución que permita la exclusión de un patrón de URL específico.
Pregunta Desbordamiento
@QuestionOverflow Vea la edición para ver un ejemplo de cómo podría hacerlo.
hellodanylo
Su segunda opción sería la araña de todo el sitio, descargando todo. Luego descargaría casi todo por segunda vez. Sería más eficiente descargar todo y luego eliminar las partes que no lo satisfacen.
dhasenan