82 votes

Enregistrer une seule page web (avec des images d'arrière-plan) avec Wget

Je veux utiliser Wget pour sauvegarder des pages web individuelles (pas de manière récursive, pas de sites entiers) pour référence. Un peu comme la fonction "Page Web, complète" de Firefox.

Mon premier problème est le suivant : je n'arrive pas à faire en sorte que Wget enregistre les images d'arrière-plan spécifiées dans le CSS. Même s'il enregistrait les fichiers d'images d'arrière-plan, je ne pense pas que --convert-links convertirait les URL d'images d'arrière-plan dans le fichier CSS pour pointer vers les images d'arrière-plan enregistrées localement. Firefox a le même problème.

Mon deuxième problème est le suivant : si la page que je veux sauvegarder contient des images hébergées sur un autre serveur (comme des publicités), celles-ci ne seront pas incluses. --span-hosts ne semble pas résoudre ce problème avec la ligne ci-dessous.

Je l'utilise : wget --no-parent --timestamping --convert-links --page-requisites --no-directories --no-host-directories -erobots=off [http://domain.tld/webpage.html](http://domain.tld/webpage.html)

120voto

Andalur Points 2411

De la Page de manuel Wget :

En fait, pour télécharger une seule page et tous ses éléments (même si ils existent sur des sites web séparés), et s'assurer que le lot s'affiche s'affiche correctement localement, cet auteur aime utiliser quelques options en plus de à '-p' :

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

Également dans le cas robots.txt vous empêche d'ajouter -e robots=off

7voto

Ernie Dunbar Points 707

El wget offre l'option --mirror qui fait la même chose que :

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

Vous pouvez également ajouter -x pour créer une hiérarchie de répertoires complète pour le site, y compris le nom d'hôte.

Vous n'avez peut-être pas pu le trouver si vous n'utilisez pas la toute dernière version de wget cependant.

2voto

user12786 Points 454

On dirait que wget et Firefox n'analysent pas les CSS des liens pour inclure ces fichiers dans le téléchargement. Vous pouvez contourner ces limitations en téléchargeant ce que vous pouvez, et en créant un script pour l'extraction des liens à partir de tout CSS ou Javascript dans les fichiers téléchargés afin de générer une liste des fichiers que vous avez manqués. Ensuite, une deuxième exécution de wget sur cette liste de liens pourrait saisir ce qui a été manqué (utiliser la fonction -i pour spécifier un fichier listant les URLs).

Si vous aimez Perl, il y a une CSS::Parser sur CPAN qui peut vous donner un moyen facile d'extraire des liens de cette manière.

Notez que wget n'analyse que certaines balises html ( href / src ) et les uris css ( url() ) pour déterminer quels sont les requis de la page à obtenir. Vous pouvez essayer d'utiliser les modules complémentaires de Firefox comme DOM Inspector ou Firebug pour déterminer si les images tierces que vous n'obtenez pas sont ajoutées par Javascript. Si c'est le cas, vous devrez recourir à un script ou à un plugin Firefox pour les obtenir également.

2voto

webjay Points 131

J'ai créé Webtography dans un but similaire : https://webjay.github.io/webtography/

Il utilise Wget et pousse le site vers un dépôt sur votre compte GitHub.

J'utilise ces arguments :

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X