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
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
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
.
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.
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