Comment télécharger tous les fichiers (mais pas HTML) à partir d'un site Web en utilisant wget?

162

Comment utiliser wgetet obtenir tous les fichiers du site Web?

J'ai besoin de tous les fichiers à l'exception des fichiers de page Web tels que HTML, PHP, ASP, etc.

Aniruddhsinh
la source
Même si vous souhaitez télécharger php, il n'est pas possible d'utiliser wget. Nous ne pouvons obtenir que du HTML brut en utilisant wget. Je suppose que vous connaissez la raison
Venkateshwaran Selvaraj
NB: Vérifiez toujours avec d' wget --spiderabord, et ajoutez toujours -w 1(ou plus -w 5) pour ne pas inonder le serveur de l'autre personne.
isomorphismes
1
Comment télécharger tous les fichiers pdf de cette page? pualib.com/collection/pua-titles-a.html
Stack Overflow est un site pour les questions de programmation et de développement. Cette question semble hors sujet car elle ne concerne ni la programmation ni le développement. Consultez la rubrique Quels sujets puis-je poser ici dans le centre d'aide. Peut-être que Super User ou Unix & Linux Stack Exchange serait un meilleur endroit pour demander. Voir également Où puis-je publier des questions sur Dev Ops?
jww

Réponses:

262

Pour filtrer des extensions de fichier spécifiques:

wget -A pdf,jpg -m -p -E -k -K -np http://site/path/

Ou, si vous préférez les noms d'options longs:

wget --accept pdf,jpg --mirror --page-requisites --adjust-extension --convert-links --backup-converted --no-parent http://site/path/

Cela reflétera le site, mais les fichiers sans extension jpgou sans pdfextension seront automatiquement supprimés.

Zsolt Botykai
la source
17
Si vous souhaitez simplement télécharger des fichiers sans architecture de répertoires entiers, vous pouvez utiliser l' option -nd .
diabloneo
4
que signifient chacun des drapeaux?
Jürgen Paul
Je pense que --acceptc'est sensible à la casse, vous devriez donc le faire--accept pdf,jpg,PDF,JPG
Flimm
8
Je ne sais pas si c'est avec une nouvelle version de wgetmais vous devez spécifier un --progresstype, par exemple--progress=dot
jamis
@Flimm vous pouvez également utiliser l' --ignore-caseindicateur pour rendre --acceptinsensible à la casse.
Rude
84

Cela a téléchargé l' intégralité du site Web pour moi:

wget --no-clobber --convert-links --random-wait -r -p -E -e robots=off -U mozilla http://site/path/
Izilotti
la source
20
+1 pour -e robots=off! Cela a finalement résolu mon problème! :) Merci
NHDaly
12
L' --random-waitoption est géniale;)
poitroae
2
@izilotti Le propriétaire du site peut-il savoir si vous WGET leurs fichiers de site avec cette méthode?
Elias7
1
@whatIsperfect C'est certainement possible.
Jack
1
@JackNicholsonn Comment le propriétaire du site le saura-t-il? L'agent utilisé était Mozilla, ce qui signifie que tous les en-têtes entreront en tant que navigateur Mozilla, il ne serait donc pas possible de détecter wget comme utilisé? Veuillez corriger si je me trompe. merci
KhoPhi
63
wget -m -p -E -k -K -np http://site/path/

La page de manuel vous dira ce que font ces options.

wgetne suivra que les liens, s'il n'y a pas de lien vers un fichier à partir de la page d'index, alors wgetne connaîtra pas son existence et ne le téléchargera donc pas. c'est à dire. cela aide si tous les fichiers sont liés dans des pages Web ou dans des index de répertoires.

Jesse
la source
Merci pour la réponse :) Il copie le site entier et je n'ai besoin que de fichiers (c'est-à-dire txt, pdf, image, etc.) dans le site Web
Aniruddhsinh
25

J'essayais de télécharger des fichiers zip liés à la page de thèmes d' Omeka - tâche assez similaire. Cela a fonctionné pour moi:

wget -A zip -r -l 1 -nd http://omeka.org/add-ons/themes/
  • -A: n'accepte que les fichiers zip
  • -r: recurse
  • -l 1: un niveau de profondeur (c'est-à-dire, uniquement les fichiers directement liés à cette page)
  • -nd: ne créez pas de structure de répertoires, téléchargez simplement tous les fichiers dans ce répertoire.

Toutes les réponses avec -k, -K, -Eetc options ont probablement pas vraiment compris la question, comme ceux que pour la réécriture des pages HTML pour faire une structure locale, renommer les .phpfichiers et ainsi de suite. Non pertinent.

Pour obtenir littéralement tous les fichiers sauf .html etc:

wget -R html,htm,php,asp,jsp,js,py,css -r -l 1 -nd http://yoursite.com
Steve Bennett
la source
2
-Aest sensible à la casse, je pense, donc vous devriez le faire-A zip,ZIP
Flimm
7

Vous pouvez essayer:

wget --user-agent=Mozilla --content-disposition --mirror --convert-links -E -K -p http://example.com/

Vous pouvez également ajouter:

-A pdf,ps,djvu,tex,doc,docx,xls,xlsx,gz,ppt,mp4,avi,zip,rar

pour accepter les extensions spécifiques ou pour refuser uniquement des extensions spécifiques:

-R html,htm,asp,php

ou pour exclure les zones spécifiques:

-X "search*,forum*"

Si les fichiers sont ignorés pour les robots (par exemple les moteurs de recherche), vous devez également ajouter: -e robots=off

Kenorb
la source
5

Essaye ça. Ça marche toujours pour moi

wget --mirror -p --convert-links -P ./LOCAL-DIR WEBSITE-URL
Suneel Kumar
la source
5
wget -m -A * -pk -e robots=off www.mysite.com/

cela téléchargera tous les types de fichiers localement et pointera vers eux à partir du fichier html et il ignorera le fichier robots

Abdalla Mohamed Aly Ibrahim
la source
2

Sur les systèmes Windows, pour obtenir wget, vous pouvez

  1. télécharger Cygwin
  2. télécharger GnuWin32
ebinx
la source