Comment télécharger un site Web entier pour une visualisation hors ligne avec Wget?

Je voudrais télécharger l'intégralité d'un site Web relativement petit (~ 50 pages) pour une visualisation hors ligne.

Je pourrais ouvrir manuellement chaque page dans un navigateur et les télécharger via ctrl + s, et cela créerait le résultat souhaité. Mais cela prendrait beaucoup de temps avec un site web de cette taille, serait long à organiser, et il y aurait beaucoup de place pour l'erreur humaine (pages manquantes, pages placées dans de mauvais répertoires, etc.)

Wget et ses la fonctionnalité récursive semble être une excellente solution, mais j'ai du mal à obtenir le résultat souhaité.

Le résultat souhaité.

Chaque page sur un domaine et toutes les ressources nécessaires de chaque page (qui peuvent être sur d'autres domaines) à télécharger. Rien d'autre.

Le problème

Beaucoup de ressources nécessaires sont sur des domaines externes. Ces domaines sont nombreux, peuvent changer à tout moment et il n'est pas facile d'obtenir une liste précise de.

Ma meilleure tentative

J'ai essayé cette commande :

wget -r -k -p -H -l inf -w 1 --limit-rate=40k -H -e robots=off https://my.desired.website/

  • -r est utilisé pour télécharger des pages récursivement.
  • -k est utilisé pour convertir des liens pour une visualisation hors ligne simplifiée.
  • -p est utilisé pour dire à Wget de télécharger les ressources requises.
  • -H permet l'extension de l'hôte sans restrictions.
  • -l inf est utilisé pour être certain que chaque page du site Web souhaité sera téléchargée, quelle que soit la profondeur de la page hiérarchie peut-être.
  • -w 1 --limit-rate=40k est utilisé pour limiter le taux de téléchargement et la vitesse, afin de ne pas être impoli envers les hôtes.
  • -e robots=off indique à Wget d'ignorer "robots.fichiers txt" et liens "nofollow".

Malheureusement, en raison de l'indicateur -H, cette commande télécharge non seulement chaque page du site Web souhaité, mais elle continue à suivre tous les liens externes et à télécharger l'intégralité de chaque site Web qu'elle trouve. Cela entraînerait probablement une tentative de téléchargement de l'ensemble du public Web.

Cependant, sans l'indicateur -H, il ne télécharge pas les ressources externes nécessaires à la visualisation du site Web (images, JS, CSS, etc. qui sont hébergés sur des domaines externes)

Vous pouvez alors dire que je devrais utiliser l'indicateur -D et mettre en liste blanche tous les domaines où des ressources externes sont conservées. Ce n'est pas non plus une excellente solution, car je n'ai pas le contrôle total sur l'hébergement du site Web... la liste des domaines externes où les ressources sont hébergées peut changer à tout moment. temps, et je ne peux pas trouver de manière fiable chaque domaine manuellement sans en manquer aucun.

La "vraie" question

Donc essentiellement ma question est:

Est-il possible d'autoriser uniquement Wget à couvrir les hôtes lors du téléchargement des ressources requises ?

Sinon, existe-t-il un outil permettant ce type de téléchargement ?

demandé sur