Faire `wget` pas sauvegarder la page

68

J'utilise le wgetprogramme, mais je ne veux pas qu'il enregistre le fichier html que je télécharge. Je veux qu'il soit jeté après sa réception. Comment je fais ça?

Ram Rachum
la source
Je suis nouveau sur Linux - La /dev/nullchose fonctionnerait-elle?
Ram Rachum
2
Alors, quel est le point de le télécharger alors?
Anonyme
1
@Anonymous Je suppose que vous devez stresser le serveur distant .. Si vous ne vous souciez pas du contenu .., j'utiliserais probablement apachebench (ab) cependant.
Tom O'Connor

Réponses:

83

Vous pouvez rediriger la sortie de wget vers / dev / null (ou NUL sous Windows):

wget http://www.example.com -O /dev/null

Le fichier ne sera pas écrit sur le disque, mais il sera téléchargé.

Evan Anderson
la source
Cela n'enregistre pas la page, mais m'envoie un courrier électronique. Est-il également possible de désactiver l'envoi de courrier électronique?
Trante
32

Si vous ne souhaitez pas enregistrer le fichier et que vous avez accepté la solution de téléchargement de la page /dev/null, je suppose que vous utilisez wget pour ne pas obtenir et analyser le contenu de la page .

Si votre besoin réel est de déclencher une action à distance, vérifiez que la page existe, etc. Je pense qu’il serait préférable d’éviter de télécharger la page de corps html.

Jouez avec les wgetoptions afin de récupérer uniquement ce dont vous avez vraiment besoin, à savoir les en-têtes http, l'état de la demande, etc.

  • en supposant que vous deviez vérifier que la page est correcte (le statut retourné est 200), vous pouvez effectuer les opérations suivantes:

    wget --no-cache --spider http://your.server.tld/your/page.html
    
  • Si vous souhaitez analyser les en-têtes renvoyés par le serveur, procédez comme suit:

    wget --no-cache -S http://your.server.tld/your/page.html
    

Reportez-vous à la page de manuel wget pour connaître les autres options pour jouer.
Voir lynxaussi, comme alternative à wget.

drAlberT
la source
Je suis confus. --no-cachedans la page de manuel, il est indiqué que wget "envoie au serveur distant une directive appropriée (" Pragma: no-cache ") pour obtenir le fichier du service distant"
Gaia
Il dit au serveur que votre client ne veut pas de version en cache du fichier .. nous voulons obtenir la toute dernière version de la ressource pour laquelle nous
demandons
17

$ wget http://www.somewebsite.com -O foo.html --delete-after

Al.
la source
1
Merci beaucoup. L' --delete-afteroption est le choix lorsque vous devez télécharger de manière récursive mais que vous souhaitez supprimer le contenu réel.
egelev
+1 pour moi, la commande est intuitive - en un coup d'œil, je peux comprendre plus rapidement ce qui va se passer que-O /dev/null
fusion27
15

Si vous souhaitez également imprimer dans la console le résultat que vous pouvez obtenir:

wget -qO- http://www.example.com
SCL
la source
1
J'aime mieux cette option. Cela me permet de voir ce que ça donne mais ne le sauve pas. Les commutateurs sont spécifiquement en qmode silencieux (il n’affiche pas la progression ni d’autres informations), et O-(écrit le document récupéré sur la console).
Octopus
9

Une autre alternative consiste à utiliser un outil du type curlqui, par défaut, renvoie le contenu distant au stdoutlieu de l'enregistrer dans un fichier.

natacado
la source
4

Découvrez l'option "-spider". Je l'utilise pour m'assurer que mes sites Web sont en ligne et m'envoyer un courrier électronique s'ils ne le sont pas. Voici une entrée typique de ma crontab:

46 */2 * * * if ! wget -q --spider http://www.rochesterflyingclub.com/ >/dev/null 2>&1; then echo "Rochester Flying Club site is down" ; fi
Paul Tomblin
la source
3

Si vous avez besoin d'explorer un site Web à l'aide de wget et que vous souhaitez réduire au minimum le roulement du disque ...

Pour une boîte * NIX et son utilisation wget, je suggère de ne pas écrire dans un fichier. J'ai remarqué sur ma boîte Ubuntu 10.04 que wget -O /dev/nullwget avait interrompu les téléchargements après le premier téléchargement.
J'ai également remarqué que wget -O real-filewget oublie les liens réels sur la page. Il insiste index.htmlpour être présent sur chaque page. De telles pages peuvent ne pas toujours être présentes et wget ne se souviendra pas des liens qu’il a vus précédemment.

Pour explorer sans écrire sur le disque, voici ce que je propose de mieux

 mkdir /dev/shm/1   
 cd /dev/shm/1
 wget --recursive --relative --no-parent ...

Notez qu'il n'y a pas d' -O fileoption. wget écrira dans le répertoire $ PWD. Dans ce cas, il s’agit d’un système de fichiers tmpfs réservé à la RAM . Ecrire ici devrait éviter le désabonnement du disque (selon l’espace de permutation) ET garder une trace de tous les liens. Cela devrait explorer l'ensemble du site Web avec succès.

Après, bien sûr,

 rm --recursive --force /dev/shm/1/*
JamesThomasMoon1979
la source
2

Utilisez l'option --delete-after, qui supprime le fichier après son téléchargement.

Edit: Oups, je viens de remarquer que cela a déjà été répondu.

John Gardeniers
la source
0

Selon la documentation d'aide (wget -h), vous pouvez utiliser l'option --spider pour ignorer le téléchargement (version 1.14).

Download:
  -S,  --server-response         print server response.
       --spider                  don't download anything.

qi rocheux
la source
Comment cela ajoute-t-il à l'autre réponse qui mentionne --spider?
Quartier