¿Cómo puedo usar wget para crear una list de URL de un index.html?

Así que wget tiene la capacidad de download files recursivamente, sin embargo lo hace un file a la vez.

Me gustaría pasar una URL de directory y para cada URL que encuentre en la recursión para que genere un process de descarga.

Una forma en que estaba pensando hacer esto es usar de alguna manera wget para imprimir las URL que encuentra, y luego alimentar esas URL en instancias separadas de wget (a través de wget URL_1 & , wget URL_2 & etc).

¿Algunas ideas?

Use grep con él:

 wget url -rqO - | grep -oE '[az]+://[^[:space:]"]+' 

Una forma de resolver este problema es recolectar todos los enlaces en un file de text plano y hacer lo siguiente:

 while read line; do echo "Downloading ${line}" wget $line & done < $1 

Guarde este file como script.sh y hágalo ejecutable y ejecútelo como

 $ ./script.sh 

Una mejor manera de resolver permanentemente este problema sería volver a escribir wget para que sea intrínsecamente paralelo.

En mi caso, funcionó encadenando dos wget :

 $ wget -O - -o /dev/null http://site.to.get.urls.from | grep -o 'some_regex' | wget -i - 

El primer wget producirá una list de URL con files, que se utiliza como "file" de input para el segundo wget .

Tenga en count que esta es una versión simplificada para mostrarle la técnica que hay detrás. El conducto entre grep y el segundo command wget podría de hecho combinarse con commands de canalización más como sed , awk o cut (especialmente si el código fuente HTML es un poco más complejo de lo normal y, por lo tanto, su análisis es más difícil).

Esto dice : Siempre asegúrese de llamar al wget interno autónomo primero para verificar en stdout que su (s) expresión (es) regular (s) está (n) funcionando correctamente.