J'essaie d'utiliser la commande wget:
wget -p http://www.example.com
pour récupérer tous les fichiers sur la page principale. Pour certains sites Web, cela fonctionne, mais dans la plupart des cas, il ne télécharge que le fichier index.html. J'ai essayé la commande wget -r mais cela ne fonctionne pas. Tout le monde sait comment récupérer tous les fichiers sur une page, ou juste me donner une liste de fichiers et les URL correspondantes sur la page
Wget est également capable de télécharger un site Web complet. Mais comme cela peut surcharger le serveur, wget obéira au fichier robots.txt.
wget -r -p http://www.example.com
Le paramètre -p indique à wget d'inclure tous les fichiers, y compris les images. Cela signifie que tous les fichiers HTML ressembleront à ce qu’ils devraient faire.
Alors que faire si vous ne voulez pas que wget obéisse à l'aide du fichier robots.txt? Vous pouvez simplement ajouter -e robots = off à la commande comme ceci:
wget -r -p -e robots=off http://www.example.com
Comme de nombreux sites ne vous laisseront pas télécharger l'intégralité du site, ils vérifieront l'identité de votre navigateur. Pour résoudre ce problème, utilisez -U mozilla comme je l'ai expliqué ci-dessus.
wget -r -p -e robots=off -U mozilla http://www.example.com
Beaucoup de propriétaires de sites Web n'aimeront pas le fait que vous téléchargiez la totalité de leur site. Si le serveur constate que vous téléchargez une grande quantité de fichiers, il peut vous ajouter automatiquement à la liste noire. La solution consiste à attendre quelques secondes après chaque téléchargement. La manière de faire ceci en utilisant wget est d’inclure --wait = X (où X est le nombre de secondes.)
vous pouvez également utiliser le paramètre: --random-wait pour laisser wget choisir un nombre aléatoire de secondes à attendre. Pour inclure ceci dans la commande:
wget --random-wait -r -p -e robots=off -U mozilla http://www.example.com
Premièrement, pour clarifier la question, l’objectif est de télécharger index.html
ainsi que toutes les parties requises de cette page (images, etc.). L'option -p
est équivalente à --page-requisites
.
Si les éléments requis pour la page ne sont pas toujours téléchargés, c'est qu'ils sont souvent hébergés sur un domaine différent de celui de la page d'origine (un CDN, par exemple). Par défaut, wget refuse de visiter d’autres hôtes , vous devez donc activer la répartition d’hôte avec l’option --span-hosts
.
wget --page-requisites --span-hosts 'http://www.Amazon.com/'
Si vous devez pouvoir charger index.html
et que toutes les conditions requises de la page soient chargées à partir de la version locale, vous devez ajouter l'option --convert-links
pour que les URL des attributs img
src (par exemple) soient réécrites en URL relatives pointant vers le versions locales.
Si vous le souhaitez, vous pouvez également enregistrer tous les fichiers dans un seul répertoire "Host" en ajoutant l'option --no-Host-directories
ou enregistrer tous les fichiers dans un seul répertoire plat en ajoutant l'option --no-directories
.
Si vous utilisez --no-directories
, de nombreux fichiers seront téléchargés dans le répertoire en cours. Vous souhaiterez donc probablement spécifier un nom de dossier pour les fichiers de sortie, en utilisant --directory-prefix
.
wget --page-requisites --span-hosts --convert-links --no-directories --directory-prefix=output 'http://www.Amazon.com/'
Le lien que vous avez fourni est la page d'accueil ou /index.html. Par conséquent, il est clair que vous obtenez uniquement une page index.html. Pour un téléchargement réel, par exemple, pour le fichier "test.Zip", vous devez ajouter le nom de fichier exact à la fin. Par exemple, utilisez le lien suivant pour télécharger le fichier test.Zip:
wget -p nomdomaine.com/test.Zip
Télécharger un site Web complet à l'aide de wget --mirror
Vous trouverez ci-dessous la ligne de commande que vous souhaitez exécuter lorsque vous souhaitez télécharger un site Web complet et mis à disposition pour un affichage local.
wget --mirror -p --convert-links -P ./LOCAL-DIR http://www.example.com
–Mirror: active les options appropriées pour la mise en miroir.
-p: télécharge tous les fichiers nécessaires pour afficher correctement une page HTML donnée.
–Convert-links: après le téléchargement, convertissez les liens dans le document Pour une visualisation locale.
-P ./LOCAL-DIR: enregistre tous les fichiers et répertoires dans le répertoire spécifié
Télécharger uniquement certains types de fichiers à l'aide de wget -r -A
Vous pouvez l'utiliser dans les situations suivantes:
Télécharger toutes les images d'un site web,
Télécharger toutes les vidéos d'un site web,
wget -r -A.pdf http://example.com/test.pdf
Un autre problème peut être que le site que vous mettez en miroir utilise des liens sans www
. Donc si vous spécifiez
wget -p -r http://www.example.com
il ne téléchargera aucune page liée (interne) car elle provient d'un domaine "différent". Si tel est le cas, utilisez
wget -p -r http://example.com
à la place (sans www
).
Je sais que ce fil est vieux, mais essayez ce qui est mentionné par Ritesh avec:
--pas de cookies
Cela a fonctionné pour moi!
Si vous recherchez index.html
dans le manuel wget vous pouvez trouver une option --default-page=name
qui est index.html
par défaut. Vous pouvez changer pour index.php
par exemple.
--default-page=index.php
Si vous obtenez uniquement le index.html
et que ce fichier a l'air de ne contenir que des données binaires (c'est-à-dire, aucun texte lisible, uniquement des caractères de contrôle), le site envoie probablement les données en utilisant la compression gzip
.
Vous pouvez le confirmer en exécutant cat index.html | gunzip
pour voir s'il génère du code HTML lisible.
Si tel est le cas, alors la fonctionnalité récursive de wget
(-r
) ne fonctionnera pas. Il existe un patch for wget
pour travailler avec les données compressées gzip, mais cela ne semble pas encore être dans la version standard.