wget tiene la opción de -np
deshabilitar la obtención de archivos desde cualquier directorio padre. Necesito algo similar pero un poco más flexible. Considerar:
www.foo.com/bar1/bar2/bar3/index.html
Me gustaría obtener todo pero no "más alto" (en la jerarquía del árbol) que bar2
(!). Por bar2
lo tanto , también debe buscarse pero no bar1
.
¿Hay alguna manera de hacer que wget sea más selectivo?
Antecedentes: estoy tratando de reflejar un sitio web, con una estructura lógica similar: punto de partida, luego hacia arriba y luego hacia abajo. Si hay otra herramienta que wget
, más adecuada para ese diseño, házmelo saber también.
Actualizar
O en lugar de especificar una posible profundidad, tal vez algo así como "sin padres, a menos que coincidan con esta o aquella URL".
Actualización 2
Hay alguna estructura en el servidor, ¿verdad? Puedes visualizarlo como un árbol. Entonces, normalmente con "--no-parent" comienzas desde algún punto A y bajas solo.
Mi deseo es la capacidad de subir: expresado al decir que está permitido subir a los nodos X, o (que es 100% equivalente) que está permitido subir al nodo B (donde la distancia BA = X).
En todos los casos, las reglas para bajar permanecen tal como fueron definidas por los usuarios (por ejemplo, baje solo por niveles Y).
¿Cómo almacenarlo? En realidad, no es la cuestión realmente: wget
de forma predeterminada, recrea la estructura del servidor, no hay nada que temer aquí, o no hay necesidad de arreglar nada. Entonces, en 2 palabras, como siempre.
Actualización 3
Estructura de directorio a continuación: supongamos que en cada directorio solo hay un archivo, en R - R.html, etc. Esto se simplifica, por supuesto, porque puede tener más de una página.
R
/ \
B G
/ \
C F
/ \
A D
/
E
A (A.html) es mi punto de partida, X = 2 (por lo que B es el nodo de nivel más alto que me gustaría buscar). En este ejemplo particular, esto significa buscar todas las páginas excepto R.html y G.html. A.html se llama "punto de partida" porque tengo que comenzar desde él, no desde B.
Actualización 4
La denominación se utiliza desde la Actualización 3.
wget OPTIONS www.foo.com/B/C/A/A.html
La pregunta es cuáles son las opciones para obtener todas las páginas del directorio B e inferior (sabiendo que debe comenzar desde A.html).
bar2
ir a buscar pero nobar1
? ¿Dóndebar2
va a residir? ¿Qué sucede si dos o más directorios que no desea tienen subdirectorios con nombres idénticos? ¿Deberían fusionarse sus contenidos? Es casi seguro que sea más fácil obtener todo el maldito sitio y luego podar / mover las cosas como lo desee.bar2
directorio y todo su contenido. Si no es así, por favor aclare.Respuestas:
No lo he probado, pero usar -I y -X podría darte lo que quieres. Mis primeros intentos serían a lo largo de la línea de
Explicación de opciones:
fuente
Necesita agregar un final / a la URL, de lo contrario no obtendrá lo que desea.
Si desea obtener todo el contenido en www.myhostname.com/somedirectory , la sintaxis debería ser así:
Pruébelo sin el final / y vea qué sucede. Luego pruébalo con /.
fuente
Creo que la respuesta correcta aquí es la
--no-parent
opción:fuente
Tal vez me estoy perdiendo algo, pero si eso es lo que quieres, entonces
funciona para mí (usando tu ejemplo). Por supuesto, con esas opciones obtendrá toda la estructura de directorios por encima de eso también, de
www.foo.com
abajo hacia abajo. Si solo quieresbar2
al máximo nivel, entonces haz-nH
se deshace de élwww.foo.com
y--cut-dirs=1
se deshace de élbar1
, por lo que obtendrábar2
y sus subdirectorios se descargarán en el directorio actual. Para obtener más información, consulteman wget
, que es bastante legible y tiene ejemplos.fuente
np
), pero estoy buscando una solución general, cuando el nivel superior está por encima del punto de partida.B
(según su ejemplo), sino más bienA
? Si es así, ¿por qué? ¿Es esto porque quieres automatizar algún script o por alguna otra razón? Tampoco estoy seguro de lo que quieres decir con X = 2. ¿Eso significa nivel 2? Si usted está tratando a buscar directorios más abajo en el árbol, no estoy seguro de cómo distinguirB
entreG
.