Ich benutze das wget
Programm, möchte aber nicht, dass es die heruntergeladene HTML-Datei speichert. Ich möchte, dass es verworfen wird, nachdem es empfangen wurde. Wie mache ich das?
Ich benutze das wget
Programm, möchte aber nicht, dass es die heruntergeladene HTML-Datei speichert. Ich möchte, dass es verworfen wird, nachdem es empfangen wurde. Wie mache ich das?
Antworten:
Sie können die Ausgabe von wget nach / dev / null (oder NUL unter Windows) umleiten:
wget http://www.example.com -O /dev/null
Die Datei wird nicht auf die Festplatte geschrieben, sondern heruntergeladen.
Wenn Sie möchten , um die Datei nicht speichern, und Sie haben die Lösung von dem Herunterladen der Seite in akzeptiert /dev/null
, nehme ich Sie wget nicht verwenden zu erhalten und die Seiteninhalte zu analysieren .
Wenn Sie wirklich eine Remote-Aktion auslösen müssen, überprüfen Sie, ob die Seite vorhanden ist, und so weiter. Ich denke, es ist besser, das Herunterladen der HTML-Textseite überhaupt zu vermeiden.
Spielen Sie mit wget
Optionen, um nur das abzurufen, was Sie wirklich benötigen, z. B. HTTP-Header, Anforderungsstatus usw.
Vorausgesetzt, Sie müssen überprüfen, ob die Seite in Ordnung ist (dh der zurückgegebene Status ist 200), können Sie Folgendes tun:
wget --no-cache --spider http://your.server.tld/your/page.html
Wenn Sie die vom Server zurückgegebenen Header analysieren möchten, gehen Sie wie folgt vor:
wget --no-cache -S http://your.server.tld/your/page.html
Weitere Optionen zum Spielen finden Sie auf der wget-Manpage .
Siehe lynx
auch als Alternative zu wget.
--no-cache
In der Manpage heißt es, dass wget "dem Remote-Server eine entsprechende Anweisung ('Pragma: no-cache') sendet, um die Datei vom Remote-Dienst
$ wget http://www.somewebsite.com -O foo.html --delete-after
--delete-after
Option ist die Wahl, wenn Sie rekursiv herunterladen müssen, aber den eigentlichen Inhalt verwerfen möchten.
-O /dev/null
Wenn Sie das Ergebnis auch in der Konsole drucken möchten, können Sie Folgendes tun:
wget -qO- http://www.example.com
q
leise (sie geben keinen Fortschritt und keine anderen Informationen aus) und O-
(schreiben Sie das abgerufene Dokument in die Konsole).
Schauen Sie sich die Option "-spider" an. Ich stelle damit sicher, dass meine Websites online sind, und sende mir eine E-Mail, falls dies nicht der Fall ist. Dies ist ein typischer Eintrag von meiner Crontab:
46 */2 * * * if ! wget -q --spider http://www.rochesterflyingclub.com/ >/dev/null 2>&1; then echo "Rochester Flying Club site is down" ; fi
Für eine * NIX-Box und mit wget
schlage ich vor, das Schreiben in eine Datei zu überspringen. Auf meiner Ubuntu 10.04-Box ist mir aufgefallen, wget -O /dev/null
dass wget nach dem ersten Download den Downloadvorgang abgebrochen hat.
Mir ist auch aufgefallen, wget -O real-file
dass wget dazu führt, die eigentlichen Links auf der Seite zu vergessen. Es besteht darauf index.html
, auf jeder Seite präsent zu sein. Solche Seiten sind möglicherweise nicht immer vorhanden und wget merkt sich keine Links, die es zuvor gesehen hat.
mkdir /dev/shm/1
cd /dev/shm/1
wget --recursive --relative --no-parent ...
Beachten Sie, dass es keine -O file
Option gibt. wget schreibt in das $ PWD-Verzeichnis. In diesem Fall handelt es sich um ein Nur-RAM- tmpfs- Dateisystem. Wenn Sie hier schreiben, sollten Sie die Festplattenabwanderung umgehen (abhängig vom Swap-Speicher) UND alle Links im Auge behalten. Dies sollte die gesamte Website erfolgreich crawlen.
Danach natürlich
rm --recursive --force /dev/shm/1/*
Verwenden Sie die Option --delete-after, mit der die Datei nach dem Download gelöscht wird.
Edit: Ups, mir ist gerade aufgefallen, dass das schon beantwortet wurde.
Laut Hilfedokument (wget -h) können Sie die Option --spider verwenden, um den Download zu überspringen (Version 1.14).
Download:
-S, --server-response print server response.
--spider don't download anything.
/dev/null
Ding funktionieren?