Como usar o comando Linux de wget para descargar páxinas e ficheiros web

A utilidade wget permítelle descargar páxinas web, ficheiros e imaxes da web mediante a liña de comandos de Linux.

Pode usar un único comando wget por si só para descargar desde un sitio ou configurar un ficheiro de entrada para descargar varios arquivos en varios sitios.

Segundo o wget da páxina de manual pódese usar mesmo cando o usuario fose desconectado do sistema. Para facelo usarías o comando nohup.

A utilidade wget reintentará unha descarga mesmo cando a conexión caia, volvendo a retomar cando sexa posible cando a conexión volva.

Pode descargar sitios web completos usando wget e converter as ligazóns para apuntar a fontes locais para que poida ver un sitio fóra de liña.

As características do wget son as seguintes:

Como descargar un sitio web usando wget

Para esta guía, vou amosarche como descargar o meu blog persoal.

wget www.everydaylinuxuser.com

Vale a pena crear o seu propio cartafol na súa máquina empregando o comando mkdir e despois pasar á carpeta usando o comando cd .

Por exemplo:

mkdir dailylinuxuser
cd dailylinuxuser
wget www.everydaylinuxuser.com

O resultado é un único ficheiro index.html. Por si só, este ficheiro é bastante inútil xa que o contido aínda está extraído de Google e as imaxes e follas de estilo aínda están en Google.

Para descargar o sitio completo e todas as páxinas pode usar o seguinte comando:

wget -r www.everydaylinuxuser.com

Isto descarga as páxinas de forma recursiva ata un máximo de 5 niveis de profundidade.

5 niveis profundos poden non ser suficientes para poder obter todo desde o sitio. Pódese usar o botón -l para establecer o número de niveis que desexa seguir como segue:

wget -r -l10 www.everydaylinuxuser.com

Se desexa unha recursión infinita pode usar o seguinte:

wget -r -l inf www.everydaylinuxuser.com

Tamén pode substituír o inf con 0 o que significa o mesmo.

Aínda hai un problema máis. Pode obter todas as páxinas localmente, pero todas as ligazóns nas páxinas aínda apuntan ao seu lugar orixinal. Polo tanto, non é posible facer clic localmente entre as ligazóns das páxinas.

Pode evitar este problema empregando a opción -k que converte todas as ligazóns nas páxinas para sinalar o seu equivalente descargado localmente do seguinte xeito:

wget -r-k www.everydaylinuxuser.com

Se desexa obter un espello completo dun sitio web pode simplemente usar o seguinte conmutador que elimina a necesidade de usar os interruptores -r -k e -l.

wget -m www.everydaylinuxuser.com

Polo tanto, se ten o seu propio sitio web pode facer unha copia de seguridade completa usando este comando simple.

Executar wget como un comando de fondo

Pode executar o wget como un comando de fondo que lle permite continuar co seu traballo na xanela do terminal mentres se descargan os ficheiros.

Simplemente use o seguinte comando:

wget -b www.everydaylinuxuser.com

Pode, por suposto, combinar interruptores. Para executar o comando wget en segundo plano mentres se reflectía o sitio, usarías o seguinte comando:

wget -b -m www.everydaylinuxuser.com

Podes simplificar isto de máis xeito como segue:

wget -bm www.everydaylinuxuser.com

Rexistro

Se está executando o comando wget en segundo plano non verá ningunha das mensaxes normais que envíe á pantalla.

Pode obter todas esas mensaxes enviadas a un ficheiro de rexistro para que poida comprobar o progreso en calquera momento usando o comando tail .

Para enviar información do comando wget a un ficheiro de rexistro use o seguinte comando:

wget -o / path / to / mylogfile www.everydaylinuxuser.com

O reverso, por suposto, é que non esixe ningún rexistro e non hai saída á pantalla. Para omitir toda a saída empregue o seguinte comando:

wget -q www.everydaylinuxuser.com

Descarga desde sitios múltiples

Pode configurar un ficheiro de entrada para descargar desde moitos sitios diferentes.

Abra un ficheiro usando o seu editor favorito ou mesmo o comando cat e simplemente inicie a listaxe dos sitios ou enlaces para descargar desde cada liña do ficheiro.

Garda o ficheiro e executa o seguinte comando wget:

wget -i / path / to / inputfile

Ademais de facer unha copia de seguranza do seu propio sitio web ou quizais atopar algo para descargar para ler no tren, é improbable que desexe descargar un sitio web completo.

É máis probable que descargue un URL único con imaxes ou quizais descargue ficheiros como zip, ficheiros ISO ou ficheiros de imaxe.

Con isto en mente non quere ter que escribir o seguinte no ficheiro de entrada xa que leva moito tempo:

Se sabe que o URL base sempre vai ser o mesmo, só pode especificar o seguinte no ficheiro de entrada:

Pode entón proporcionar o URL base como parte do comando wget do seguinte xeito:

wget -B http://www.myfileserver.com -i / path / to / inputfile

Opcións de reintento

Se configurou unha fila de ficheiros para descargar dentro dun ficheiro de entrada e deixas o computador en funcionamento durante toda a noite para descargar os ficheiros, estarás bastante irritado cando baixes da mañá para descubrir que quedou atrapado no primeiro arquivo e volveu repetir toda a noite.

Pode especificar o número de intentos utilizando o seguinte conmutador:

wget -t 10 -i / path / to / inputfile

Pode querer usar o comando anterior xunto co interruptor -T que lle permite especificar un tempo de espera en segundos como segue:

wget -t 10 -T 10 -i / path / to / inputfile

O comando anterior volverase a intentar 10 veces e intentará conectarse durante 10 segundos por cada ligazón no ficheiro.

Tamén é bastante molesto cando parcialmente descargas o 75% dun ficheiro de 4 gigabytes nunha conexión de banda ancha lenta só para que a túa conexión caia.

Podes usar o wget para que volva tentar desde onde deixou de descargar usando o seguinte comando:

wget -c www.myfileserver.com/file1.zip

Se está a martelar un servidor, o servidor pode que non lle guste demasiado e pode bloquear ou simplemente matar as túas solicitudes.

Pode especificar un período de espera que especifica o tempo que debe esperar entre cada recuperación do seguinte xeito:

wget -w 60 -i / path / to / inputfile

O comando anterior esperará 60 segundos entre cada descarga. Isto é útil se está a descargar moitos ficheiros dunha única fonte.

Algúns servidores web poden detectar a frecuencia e bloquealo de calquera xeito. Pode facer o período de espera aleatorio para que pareza que non está a usar un programa como segue:

wget --random-wait -i / path / to / inputfile

Protexer os límites de descarga

Moitos provedores de servizos de internet aínda aplican límites de descarga para o seu uso de banda ancha, especialmente se vive fóra dunha cidade.

Pode querer engadir unha cota para que non sopra ese límite de descarga. Podes facelo do seguinte xeito:

wget -q 100m -i / path / to / inputfile

Teña en conta que o comando -q non funcionará cun só ficheiro.

Entón, se baixas un arquivo de 2 gigabytes de tamaño, usando -q 1000m non vai parar a descarga do ficheiro.

A cota só se aplica cando se descarga recursivamente desde un sitio ou cando se usa un ficheiro de entrada.

Pasando pola seguridade

Algúns sitios requiren que inicie sesión para poder acceder ao contido que quere descargar.

Podes usar os seguintes modificadores para especificar o nome de usuario e o contrasinal.

wget --user = teu nome de usuario --password = o teu contrasinal

Nota sobre un sistema multiusuario se alguén executa o comando ps poderá ver o seu nome de usuario e contrasinal.

Outras opcións de descarga

De xeito predeterminado, o interruptor -r descargará de forma recursiva o contido e creará directorios a medida que vaia.

Pode obter todos os ficheiros para descargar nunha única carpeta usando o seguinte conmutador:

wget -nd -r

O contrario diso é forzar a creación de directorios que se poden conseguir empregando o seguinte comando:

wget -x -r

Como descargar certos tipos de ficheiros

Se queres descargar de forma recursiva desde un sitio pero só desexas descargar un tipo de ficheiro específico como un mp3 ou unha imaxe como png, podes usar a seguinte sintaxe:

wget -A "* .mp3" -r

O inverso disto é ignorar certos ficheiros. Quizais non queiras descargar os executables. Neste caso, usarías a seguinte sintaxe:

wget -R "* .exe" -r

Cliget

Hai un add-on Firefox chamado cliget. Podes engadir isto a Firefox da seguinte forma.

Visita https://addons.mozilla.org/en-US/firefox/addon/cliget/ e fai clic no botón "engadir a Firefox".

Fai clic no botón de instalación cando apareza. Necesitarás reiniciar Firefox.

Para usar Cliget visite unha páxina ou ficheiro que desexe descargar e prema co botón dereito. Aparecerá un menú contextual chamado cliget e haberá opcións para "copiar para wget" e "copiar para enrolar".

Fai clic na opción "Copiar para wget" e abre unha xanela de terminal e, a continuación, fai clic co botón dereito e pega. O comando wget axeitado pegarase na fiestra.

Basicamente, isto aforraralle ter que escribir o comando mesmo.

Resumo

O comando wget como unha gran cantidade de opcións e modificacións.

Paga a pena ler a páxina de manual para wget escribindo o seguinte nunha xanela de terminal:

home wget