Salva una singola pagina web (con immagini di sfondo) con Wget


73

Voglio usare Wget per salvare singole pagine Web (non ricorsivamente, non interi siti) come riferimento. Proprio come la "Pagina Web, completa" di Firefox.

Il mio primo problema è: non riesco a far sì che Wget salvi le immagini di sfondo specificate nel CSS. Anche se salvasse i file di immagine di sfondo, non credo che --convert-links convertisse gli URL di immagine di sfondo nel file CSS per puntare alle immagini di sfondo salvate localmente. Firefox ha lo stesso problema.

Il mio secondo problema è: se sulla pagina ci sono immagini che voglio salvare che sono ospitate su un altro server (come gli annunci), queste non verranno incluse. --span-hosts non sembra risolvere questo problema con la riga seguente.

Sto usando: wget --no-parent --timestamping --convert-links --page-requisites --no-directories --no-host-directories -erobots=off http://domain.tld/webpage.html


1
esattamente la stessa linea (wget --no-parent --timestamping --convert-links --page-requisites --no-directories --no-host-directories -erobots = off domain.tld) ​​salva effettivamente le immagini di sfondo a cui fa riferimento CSS dopo l'aggiornamento a 1.12. Il manuale dice: "Con http urls, Wget recupera e analizza l'html o il css dall'URL dato, recuperando i file a cui fa riferimento il documento, attraverso markup come href o src, o valori css uri specificati usando la funzione 'url ()' notazione." Il secondo problema deve ancora essere risolto
user14124

Risposte:


106

Dalla pagina man di Wget :

In realtà, per scaricare una singola pagina e tutti i suoi requisiti (anche se esistono su siti Web separati) e assicurarsi che il lotto venga visualizzato correttamente localmente, a questo autore piace usare alcune opzioni oltre a '-p':

wget -E -H -k -K -p http://www.example.com/

Anche nel caso in cui robots.txtti impedisca di aggiungere-e robots=off


Sembra che stia solo riscrivendo js e css in url assoluti
Greg Dean,

1
non importa, è stato robots.txt che mi ha impedito di aggiornare la risposta con la soluzione alternativa
Greg Dean,

19
Espanso:wget --adjust-extension --span-hosts --convert-links --backup-converted --page-requisites [url]
sam,

4
O meglio ancora wget --recursive --no-clobber --page-requisites --html-extension --convert-links --restrict-file-names=windows[url]
Petah

@ {etah: ho provato il tuo comando con i tuoi argomenti, scaricherà altre pagine web oltre a quella specificata.
Tim

7

Il wgetcomando offre l'opzione --mirror, che fa la stessa cosa di:

$ wget -r -N -l inf --no-remove-listing

Puoi anche lanciarti -xper creare un'intera gerarchia di directory per il sito, incluso il nome host.

wgetTuttavia, potresti non essere riuscito a trovarlo se non stai utilizzando la versione più recente di .


1
Questo probabilmente eseguirà la scansione dell'intero sito Web con i suoi sotto-URL
4253wyerg4e,

2

Sembra che wgetFirefox non stia analizzando il CSS per i collegamenti per includere quei file nel download. È possibile aggirare tali limiti wget'ing che cosa è possibile e scripting l'estrazione del collegamento da qualsiasi CSS o Javascript nei file scaricati per generare un elenco di file persi. Quindi una seconda esecuzione di wgetquell'elenco di collegamenti potrebbe catturare tutto ciò che è stato perso (utilizzare il -iflag per specificare un URL di elenco file).

Se ti piace Perl, c'è un modulo CSS :: Parser su CPAN che può darti un modo semplice per estrarre i collegamenti in questo modo.

Nota che wgetsta solo analizzando determinati markup html ( href/ src) e css uris ( url()) per determinare quali requisiti di pagina ottenere. Potresti provare a utilizzare i componenti aggiuntivi di Firefox come DOM Inspector o Firebug per capire se le immagini di terze parti che non stai ricevendo vengono aggiunte tramite Javascript - in tal caso, dovrai ricorrere a uno script o a un plug-in di Firefox per ottenerle pure.


Come ho detto nel commento per il mio primo post, sembra che sia stato corretto nella v1.12. Tuttavia non so ancora come includere immagini che si trovano su altri server.
user14124

sì, l'analisi del CSS è una novità di wget v1.12, è in cima al registro delle modifiche: freshmeat.net/urls/376000c9c7a02f7a3592180c2390ff04
quack quixote

Prova ad aggiungere l'opzione -H all'elenco. Sta per --span-hosts e consente il download di contenuti da host esterni.
Michael,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.