wget no funciona en modo recursivo

wget no funciona en modo recursivo

GNU Wget 1.16 built on linux-gnueabihfenRaspberry 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.htmlapuntan 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á wgetdescargar 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 curltraerá index.html. Se conectará greppara encontrar todos los enlaces haciendo coincidir href. El resultado ingresado se entregará wgetcomo una variable. wgetrecupera los enlaces uno por uno de la variable.

información relacionada