GNU Wget 1.16 built on linux-gnueabihf
enRaspberry Pi 3
¿Cómo fuerzo a wget a obtener el sitio completo (seguir enlaces, actuar como un robot), no solo el primer índice?
Lo intenté:
wget -r http://aol.com
wget -r -l0 http://aol.com
wget -r -m -l0 http://aol.com
Cada comando terminaba con lo mismo:
--2017-11-29 08:05:42-- http://aol.com/
Resolving aol.com (aol.com)... 149.174.149.73, 64.12.249.135, 149.174.110.105, ...
Connecting to aol.com (aol.com)|149.174.149.73|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://www.aol.com/ [following]
--2017-11-29 08:05:42-- https://www.aol.com/
Resolving www.aol.com (www.aol.com)... 34.233.220.13, 34.235.7.32, 52.6.64.98, ...
Connecting to www.aol.com (www.aol.com)|34.233.220.13|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Last-modified header missing -- time-stamps turned off.
--2017-11-29 08:05:44-- https://www.aol.com/
Reusing existing connection to www.aol.com:443.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘aol.com/index.html’
aol.com/index.html [ <=> ] 359.95K 751KB/s in 0.5s
2017-11-29 08:05:45 (751 KB/s) - ‘aol.com/index.html’ saved [368585]
FINISHED --2017-11-29 08:05:45--
Total wall clock time: 2.8s
Downloaded: 1 files, 360K in 0.5s (751 KB/s)
¿Qué estoy haciendo mal?
Respuesta1
Su problema surge porque todos los enlaces aol.com/index.html
apuntan a diferentes hosts. Para descargar recursivamente desde todos los hosts, puede agregar la opción --span-hosts
. Para permitir todos los hosts de Aol, me pareció funcionar agregar la --span-hosts '*.aol.com'
opción.
wget --span-hosts '*.aol.com' -r http://www.aol.com
Puede enumerar los enlaces con
grep -Po '(?<=href=")[^"]*' aol.com/index.html
Verás que la mayoría apuntan a www.aol.com, por lo que también puedes llamar
wget -r http://www.aol.com
Respuesta2
El uso de lo siguiente permitirá wget
descargar todas las páginas vinculadas a un sitio web de forma recursiva.
wget -r $(curl http://aol.com | grep -Po '(?<=href=")[^"]*')
Reemplace el sitio web de ejemplo por el que desee. Esto se obtendrá comoDeapth for search in a graph
Método de trabajo curl
traerá index.html
. Se conectará grep
para encontrar todos los enlaces haciendo coincidir href
. El resultado ingresado se entregará wget
como una variable. wget
recupera los enlaces uno por uno de la variable.