Imaginez que je voulais une simple copie de page à télécharger sur mon disque dur pour une conservation permanente. Je ne recherche pas un get récursif profond, juste une seule page, mais aussi des ressources chargées par cette page à télécharger également.
Exemple: https://www.tumblr.com/
Attendre:
- L'index.html
- Toutes les images chargées
- Tous les fichiers JS chargés
- Tous les fichiers CSS chargés
- Toutes les images chargées dans le fichier CSS
- liens pour les ressources de la page localisées pour fonctionner avec les copies téléchargées (pas de dépendance Web)
Je suis intéressé de savoir si vous pouvez m'aider à trouver la meilleure syntaxe wget ou un autre outil qui le fera. Les outils que j'ai essayés ne parviennent généralement pas à charger les images par CSS, de sorte que la page ne semble jamais correcte lorsqu'elle est chargée localement. Je vous remercie!
Solution tangente
J'ai trouvé un moyen de le faire en utilisant FireFox. La sauvegarde par défaut est interrompue et il existe un module complémentaire appelé "Save Complete" qui peut apparemment faire un bon travail avec cela. Cependant, vous ne pouvez pas le télécharger car il indique qu'il n'est pas pris en charge dans la version actuelle de FireFox. La raison en est qu'il a été intégré à cet addon: "Mozilla Archive Format". Installez-le, puis lorsque vous utilisez Fichier> "Enregistrer la page sous ..", il y a une nouvelle option appelée "Page Web, complète" qui est essentiellement l'ancien addon, qui corrige l'implémentation de stock utilisée par FireFox (ce qui est terrible). Ce n'est pas une solution WGET mais elle fournit une solution viable.
EDIT: Un autre problème ridicule pour quiconque pourrait suivre cette question à l'avenir, en essayant de le faire. Assurez-vous que l'addon fonctionne correctement, vous devez Outils> Format d'archive Mozilla et modifiez le paramètre par défaut (terrible) de "prendre un instantané fidèle de la page" pour "préserver les scripts et la source à l'aide de Save Complete", sinon l'addon videra tout vos fichiers de script et remplacez-les par le texte "/ * Script supprimé par snapshot save * /".
Réponses:
wget -p -k http://ExampleSite.com
Le -p vous obtiendra tous les éléments nécessaires pour visualiser correctement le site (css, images, etc.). Le -k changera tous les liens (pour inclure ceux pour CSS et les images) pour vous permettre d'afficher la page hors ligne telle qu'elle est apparue en ligne.
Mise à jour: Ceci est spécifique à votre exemple de site: tumblr.com
La panne:
-H = Permet à wget d'aller s'étendre sur un hôte étranger. Obligatoire puisque tumblr n'a pas ses images en première page sur la même adresse, il utilise secure.assets.tumblr.com voir la note sur l'exclusion de domaines
-N = ne récupérera que les fichiers plus récents que ceux que vous possédez actuellement, au cas où vous téléchargeriez à nouveau la même page au fil du temps
-k = convertir vos liens pour les visualiser correctement hors ligne
-p = récupère tous les éléments nécessaires pour l'afficher correctement (css, images, etc.)
--exclude-domaines = puisque la page d'accueil tumblr.com a un lien pour quantserve.com et je suppose que vous ne voulez pas ce genre de choses, vous devez l'exclure de votre téléchargement wget. Remarque : Ceci est assez important que vous devez utiliser avec -H parce que si vous allez sur un site et qu'ils ont plusieurs liens pour des hôtes externes (pensez aux annonceurs et aux analyses), vous allez également saisir ces informations!
--no-check-certificate requis car tumblr utilise https
-U change l'agent utilisateur. Pas vraiment nécessaire dans ce cas car il autorise l'agent utilisateur wget par défaut mais je sais que certains sites le bloqueront. Je viens de le jeter ici, donc au cas où vous rencontriez des problèmes sur d'autres sites. Dans l'exemple d'extrait que j'ai donné, il apparaît comme Mozilla Firefox 6.02a
enfin vous avez le site: https://www.tumblr.com
la source
Pour le site spécifique que vous avez mentionné et beaucoup d'autres codés comme ça, wget (et curl) ne fonctionneront tout simplement pas. Le problème est que certains des liens d'actifs requis pour afficher la page dans un navigateur sont eux-mêmes créés via javascript. Wget a une demande de fonctionnalité en attente pour exécuter javascript:
http://wget.addictivecode.org/FeatureSpecifications/JavaScript
Cependant, tant que cela n'est pas terminé, les sites qui créent des liens d'actifs à l'aide de javascript ne seront pas clonables à l'aide de wget. La solution la plus simple consiste à trouver un outil qui construit réellement un DOM et analyse le javascript comme un moteur de navigateur (c'est-à-dire la méthode firefox que vous avez mentionnée).
la source
Vous pouvez également le faire automatiquement (ou par programmation si vous faites du codage) en émettant une commande via shell à l'aide de wget:
Il télécharge la page et les fichiers internes et rend les liens locaux.
la source
Je pense que ça va tout saisir, mais essayez-le et découvrez.
la source
$ ( homme wget ):
la source