web-dev-qa-db-fra.com

Grattez un site Web entier

Je suis à la recherche de recommandations pour un programme à gratter et à télécharger l'intégralité d'un site Web d'entreprise.

Le site est alimenté par un CMS qui a cessé de fonctionner et le faire réparer coûte cher et nous sommes en mesure de redévelopper le site Web.

Je voudrais donc simplement obtenir l'intégralité du site Web en tant que contenu brut html/css/image et y apporter des mises à jour mineures au besoin jusqu'à ce que le nouveau site arrive.

Des recommandations?

41
Dale Fraser

Considérez HTTrack . Il s'agit d'un utilitaire de navigation hors ligne gratuit et facile à utiliser.

Il vous permet de télécharger un site Web à partir d'Internet dans un répertoire local, en créant de manière récursive tous les répertoires, en obtenant du HTML, des images et d'autres fichiers du serveur vers votre ordinateur.

23
p.campbell
wget \
     --recursive \
     --no-clobber \
     --page-requisites \
     --html-extension \
     --convert-links \
     --restrict-file-names=windows \
     --domains website.org \
     --no-parent \
         www.website.com

En savoir plus ici .

58
Abhijeet Rastogi

Aucun des éléments ci-dessus n'a obtenu exactement ce dont j'avais besoin (l'ensemble du site et tous les actifs). Cela a fonctionné cependant.

Tout d'abord, suivez ceci tutoriel pour obtenir wget sur OSX.

Ensuite, exécutez cette

wget --recursive --html-extension --page-requisites --convert-links http://website.com
32
Tyler McGinnis

Je sais que c'est super vieux et je voulais juste mettre mes 2 cents.

wget -m -k -K -E -l 7 -t 6 -w 5 http://www.website.com

Une petite clarification concernant chacun des commutateurs:

-m Essentiellement, cela signifie "mettre en miroir le site", et il saisit récursivement les pages et les images pendant qu'il parcourt le site. Il vérifie l'horodatage, donc si vous exécutez wget une deuxième fois avec ce commutateur, il ne mettra à jour que les fichiers/pages plus récents que la précédente.

-k Cela modifiera les liens dans le html pour pointer vers les fichiers locaux. Si, au lieu d'utiliser des éléments tels que page2.html Comme liens dans votre site, vous utilisiez en fait un http://www.website.com/page2.html Complet, vous en aurez probablement besoin. Je l'allume juste pour être du bon côté - les chances sont qu'au moins 1 lien causera un problème sinon.

-K L'option ci-dessus (minuscule k) modifie le html. Si vous souhaitez également la version "intacte", utilisez ce commutateur et il enregistrera à la fois la version modifiée et l'original. C'est juste une bonne pratique au cas où quelque chose ne va pas et que vous souhaitez comparer les deux versions. Vous pouvez toujours supprimer celui dont vous ne vouliez pas plus tard.

-E Cela enregistre HTML et CSS avec les "extensions appropriées". Attention à celui-ci - si votre site n'avait pas d'extensions .html sur chaque page, cela l'ajoutera. Cependant, si votre site a déjà chaque fichier nommé avec quelque chose comme ".htm", vous vous retrouverez maintenant avec ".htm.html".

-l 7 Par défaut, le -m que nous avons utilisé ci-dessus recurse/spider à travers tout le site. Habituellement, ça va. Mais parfois, votre site aura une boucle infinie, auquel cas wget sera téléchargé pour toujours. Pensez à l'exemple typique de website.com/products/jellybeans/sort-by-/name/price/name/price/name/price. C'est un peu rare de nos jours - la plupart des sites se comportent bien et ne le feront pas, mais pour être sûr, déterminez le plus de clics qu'il faudrait pour obtenir n'importe où à partir de la page principale pour accéder à n'importe quelle page réelle du site Web, pad un peu (ce serait nul si vous utilisiez une valeur de 7 et découvriez une heure plus tard que votre site avait 8 niveaux de profondeur!) et utilisez ce #. Bien sûr, si vous savez que votre site a une structure qui se comportera, il n'y a rien de mal à l'omettre et à avoir le confort de savoir que la 1 page cachée de votre site qui avait 50 niveaux de profondeur a été trouvée.

-t 6 Si la tentative d'accès/de téléchargement d'une certaine page ou d'un certain fichier échoue, cela définit le nombre de tentatives avant d'abandonner ce fichier et de continuer. Vous voulez généralement qu'il --- éventuellement abandonne (définissez-le sur 0 si vous voulez qu'il essaie pour toujours), mais vous ne voulez pas non plus qu'il abandonne si le site était juste bancal pour un seconde ou deux. Je trouve que 6 est raisonnable.

-w 5 Ceci indique à wget d'attendre quelques secondes (5 secondes dans ce cas) avant de récupérer le fichier suivant. Il est souvent essentiel d'utiliser quelque chose ici (au moins 1 seconde). Laissez-moi expliquer. Par défaut, wget récupérera les pages aussi vite que possible. Il peut facilement s'agir de plusieurs requêtes par seconde, ce qui a le potentiel de mettre une charge énorme sur le serveur (en particulier si le site est écrit en PHP, effectue des accès MySQL à chaque requête et n'utilise pas de cache). Si le site Web est sur l'hébergement partagé, cette charge peut faire expulser quelqu'un de son hôte. Même sur un VPS, il peut mettre à genoux certains sites. Et même si le site lui-même survit, être bombardé d'un nombre insensé de demandes en quelques secondes peut ressembler à une attaque DOS qui pourrait très bien bloquer automatiquement votre adresse IP. Si vous ne savez pas avec certitude que le site peut gérer un afflux massif de trafic, utilisez -w # switch.5 est généralement assez sûr. Même 1 est probablement correct la plupart du temps. Mais utilisez quelque chose.

25
T0ny lombardi

La meilleure façon est de le gratter avec wget comme suggéré dans la réponse de @Abhijeet Rastogi. Si vous ne le connaissez pas, Blackwidow est un grattoir décent. Je l'ai utilisé dans le passé. http://www.sbl.net/

0
seanbreeden