it-swarm-eu.dev

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

Voglio usare Wget per salvare singole pagine web (non in modo ricorsivo, non interi siti) come riferimento. Molto simile alla "Pagina Web" di Firefox completa.

Il mio primo problema è: non riesco a ottenere Wget per salvare le immagini di sfondo specificate nel CSS. Anche se salvasse i file di immagine di sfondo, non credo che --convert-link converta gli URL di background-image nel file CSS per puntare alle immagini di sfondo salvate localmente. Firefox ha lo stesso problema.

Il mio secondo problema è: se ci sono immagini sulla pagina che voglio salvare che sono ospitate su un altro server (come le pubblicità) queste non saranno incluse. --span-hosts non sembra risolvere questo problema con la riga sottostante.

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

69
user14124

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 sia visualizzato correttamente localmente, a questo autore piace usare alcune opzioni oltre a "-p":

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

Inoltre nel caso in cui robots.txt non consenta si aggiunge -e robots=off

103
vvo

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

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

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

Potresti non essere stato in grado di trovarlo se non stai utilizzando la versione più recente di wget.

7
Ernie Dunbar

Sembra wget e Firefox non sta analizzando il CSS per i collegamenti che includono quei file nel download. Puoi aggirare queste limitazioni wget'ing ciò che puoi e creare script per l'estrazione di link da qualsiasi CSS o Javascript nei file scaricati per generare un elenco di file che ti sei perso. Quindi una seconda esecuzione di wget su quell'elenco di link potrebbe afferrare qualunque cosa mancasse (usare il flag -i per specificare un file che elenca gli URL).

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

Si noti che wget sta solo analizzando alcuni 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.

2
quack quixote

Ho realizzato Webtography per uno scopo simile: https://webjay.github.io/webtography/

Usa Wget e spinge il sito in un repository sul tuo account GitHub.

Io uso questi argomenti:

--user-agent=Webtography
--no-cookies
--timestamping
--recursive
--level=1
--convert-links
--no-parent
--page-requisites
--adjust-extension
--max-redirect=0
--exclude-directories=blog

https://github.com/webjay/webtography/blob/master/lib/wget.js#L15-L26

2
webjay