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?

damon
la source
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.

DéveloppeursDéveloppeursDéveloppeurs
la source
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é.

slhck
la source
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.

GWLlosa
la source
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

Chris S
la source
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.

GBa
la source
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

Adam Davis
la source
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
JMD
la source
1

Je l'ai utilisé il y a quelques années et cela a bien fonctionné. Windows uniquement. Autrefois adware, mais plus, apparemment:

http://www.webreaper.net/

Odilon Redo
la source
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.
davidcondrey
la source
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
0

Je pense que la capture de site IDM est la meilleure solution, il y a aussi Teleport pro

Marwan Aouida
la source