Extraire un site Web via HTTP pour télécharger des images, HTML et CSS


22

J'ai besoin d'extraire un site via HTTP. J'ai besoin de télécharger les images, HTML, CSS et JavaScript ainsi que de l'organiser dans un système de fichiers.

Est-ce que quelqu'un sait comment faire ça?


2
Vous devez mentionner que vous n'allez pas utiliser ce logiciel pour violation de droits d'auteur. Sinon, nous supposons simplement que vous souhaitez refléter le contenu de quelqu'un d'autre afin que vous puissiez en tirer de l'argent.
belgariontheking

Nous avons déjà eu un client qui voulait partir, mais prendre la version HTML statique de son site, abandonnant le CMS. J'ai utilisé HTTrack pour générer le site statique. Cela fonctionne bien sur Windows et Ubuntu.
TRiG

4
@belgariontheking: Intéressant, vous supposez le pire. Nous utilisons également WinHTTrack pour télécharger une version HTML statique de notre propre site Web dynamique.
Umber Ferrule

Réponses:


40
wget -erobots=off --no-parent --wait=3 --limit-rate=20K -r -p -U "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" -A htm,html,css,js,json,gif,jpeg,jpg,bmp http://example.com

Cela fonctionne dans la console.

cela saisira un site, attendra 3 secondes entre les demandes, limitera la vitesse de téléchargement pour ne pas tuer le site et se masquera de manière à ce qu'il semble être simplement un navigateur afin que le site ne vous coupe pas utilisant un mécanisme anti-sangsue.

Notez le -Aparamètre qui indique une liste des types de fichiers que vous souhaitez télécharger.

Vous pouvez également utiliser une autre balise, -D domain1.com,domain2.compour indiquer une série de domaines que vous souhaitez télécharger s'ils ont un autre serveur ou autre pour héberger différents types de fichiers. Il n'y a aucun moyen sûr d'automatiser cela dans tous les cas, si vous n'obtenez pas les fichiers.

wgetest généralement préinstallé sur Linux, mais peut être compilé de manière triviale pour d'autres systèmes Unix ou téléchargé facilement pour Windows: GNUwin32 WGET

Utilisez-le pour le bien et non pour le mal.


1
wget -erobots = off --no-parent --wait = 3 --limit-rate = 50K -r -p -U "Mozilla / 4.0 (compatible; MSIE 7.0; Windows NT 5.1)" -k --directory-prefix "C: \ rip" - page-requisites -A htm, aspx, php, jsp, asp, zip, png, html, css, js, json, gif, jpeg, jpg, bmp domain.com
Chris S

Est-ce que cela fonctionnerait sur les "URL personnalisées"? Je m'inquiète pour mon contenu (OK, chansons) écrit sur un site de réseautage social et je veux le sauvegarder localement. Le site est "www.example.com" mais il y a une URL personnalisée avec mon nom d'utilisateur "avi.example.com". Je ne veux pas télécharger tout le site, juste mon contenu!
Avi

Sous Linux, vous souhaiterez peut-être installer wget à partir des sources. La version Ubuntu, par exemple, n'analyse pas CSS alors que wget en amont le fait.
RDA

16

Bonne solution gratuite: HTTrack

HTTrack est un utilitaire de navigation hors ligne gratuit (GPL, libre / free) 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. HTTrack organise la structure de liens relative du site d'origine. Ouvrez simplement une page du site Web "en miroir" dans votre navigateur et vous pouvez parcourir le site de lien en lien, comme si vous le consultiez en ligne. HTTrack peut également mettre à jour un site miroir existant et reprendre les téléchargements interrompus. HTTrack est entièrement configurable et dispose d'un système d'aide intégré.


7

Sur les systèmes Linux, «wget» le fait à peu près.

Il a également été porté sur plusieurs autres plateformes, comme plusieurs des autres réponses le mentionnent.



Puisque c'est Linux, je créerais probablement une machine virtuelle Ubuntu, exécuter wget et transférer les fichiers sur mon ordinateur hôte. Il semble que cela serait plus rapide que le portage vers Windows. :) (Accordé, le portage vers Windows est probablement un bon exercice de toute façon!)
JMD

Je lance Debian sur ma machine. Puis-je dire à wget de récupérer les sous-répertoires / javascript / css / images associés en lui donnant uniquement le domaine racine http?
damon

# Téléchargez l'intégralité du contenu de example.com wget -r -l 0 example.com

Ouais ... ou utilisez le port natif de Windows, ou utilisez Cygwin ...
Tmdean

2

De toute évidence, WGet a été mentionné à plusieurs reprises. La meilleure interface utilisateur que j'ai trouvée est

Il y a d'autres interfaces utilisateur pour WGet, dont certaines sont des candidats pour la pire question d' interface utilisateur


1

Regardez l'extension Scrapbook pour Firefox. Il fait un travail incroyable à ce sujet et s'intègre également à Firebug et vous permet de supprimer des éléments du DOM avant d'enregistrer si vous le souhaitez.


1

Vous devez utiliser wget - qui est disponible pour la plupart des plateformes. curl ne demandera pas de documents de manière récursive, ce qui est l'une des principales forces de wget.

Linux: (généralement inclus dans la distribution) http://www.gnu.org/software/wget/
Windows: http://gnuwin32.sourceforge.net/packages/wget.htm
Mac: http: //www.geekology. co.za/blog/2009/02/macports-compile-and-install-open-source-software-on-mac-os-x/

S'IL VOUS PLAÎT assurez-vous que vous ne martelez pas le site Web - définissez des délais appropriés entre les demandes et assurez-vous qu'il respecte les conditions d'utilisation du site.

-Adam


en fait, ce sont nos serveurs que nous martelons. le site est généré dynamiquement via PHP et le CMS / DB a été en quelque sorte mutilé. c'est une histoire compliquée, je suis le développeur qui vient d'arriver. mais nous construisons tout dans django maintenant, donc ne vous inquiétez pas.
damon

1

En fait, suite à mon commentaire dans le post de GWLlosa, je viens de me rappeler que j'ai installé GnuWin32, et bien sûr, il contient un port Windows de wget.

http://sourceforge.net/projects/gnuwin32/

GnuWin32 provides Win32-versions of GNU tools,
or tools with a similar open source licence.
The ports are native ports, that is they rely
only on libraries provided with any 32-bits
MS-Windows operating system, such as
MS-Windows 95 / 98 / 2000 / NT / XP


1

wget --random-wait -r -p -e robots=off -U "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" --limit-rate=20k -b http://www.example.com

  • -p : le paramètre indique à wget d'inclure tous les fichiers, y compris les images.
  • -e robots=off : ignorer les règles des sites robots.txt
  • -U "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" : chaîne d'agent utilisateur
  • --random-wait : éviter d'être mis sur liste noire
  • --limit-rate=20k : limite la vitesse à laquelle il télécharge les fichiers.
  • -b : continue wget après la déconnexion.

Ce sont les paramètres que j'utilise. J'ajoute également l' option -c(ou --continue) lorsque les choses tournent mal et je dois redémarrer le processus.
kub1x


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.