Wenn Sie `wget` machen, wird die Seite nicht gespeichert
68
Ich benutze das wgetProgramm, 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?
Dadurch wird die Seite nicht gespeichert, aber es wird eine E-Mail an mich gesendet. Ist es auch möglich, das Versenden von E-Mails zu deaktivieren?
Trante
32
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 wgetOptionen, 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:
Ich bin verwirrt. --no-cacheIn der Manpage heißt es, dass wget "dem Remote-Server eine entsprechende Anweisung ('Pragma: no-cache') sendet, um die Datei vom Remote-Dienst
Diese Option gefällt mir am besten. Mal sehen, was es bringt, aber nicht speichert. Die Schalter sind besonders qleise (sie geben keinen Fortschritt und keine anderen Informationen aus) und O-(schreiben Sie das abgerufene Dokument in die Konsole).
Octopus
9
Eine andere Alternative besteht darin, ein Tool wie curldas zu verwenden , das standardmäßig den Remote-Inhalt ausgibt, stdoutanstatt ihn in einer Datei zu speichern.
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
Wenn Sie eine Website mit wget crawlen müssen und die Festplattenabwanderung minimieren möchten ...
Für eine * NIX-Box und mit wgetschlage ich vor, das Schreiben in eine Datei zu überspringen. Auf meiner Ubuntu 10.04-Box ist mir aufgefallen, wget -O /dev/nulldass wget nach dem ersten Download den Downloadvorgang abgebrochen hat.
Mir ist auch aufgefallen, wget -O real-filedass 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.
Das Beste, was ich mir für das Crawlen ohne Schreiben auf die Festplatte ausgedacht habe, ist das Folgende
mkdir /dev/shm/1
cd /dev/shm/1
wget --recursive --relative --no-parent ...
Beachten Sie, dass es keine -O fileOption 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.
/dev/null
Ding funktionieren?Antworten:
Sie können die Ausgabe von wget nach / dev / null (oder NUL unter Windows) umleiten:
Die Datei wird nicht auf die Festplatte geschrieben, sondern heruntergeladen.
quelle
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:
Wenn Sie die vom Server zurückgegebenen Header analysieren möchten, gehen Sie wie folgt vor:
Weitere Optionen zum Spielen finden Sie auf der wget-Manpage .
Siehe
lynx
auch als Alternative zu wget.quelle
--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
quelle
--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:
quelle
q
leise (sie geben keinen Fortschritt und keine anderen Informationen aus) undO-
(schreiben Sie das abgerufene Dokument in die Konsole).Eine andere Alternative besteht darin, ein Tool wie
curl
das zu verwenden , das standardmäßig den Remote-Inhalt ausgibt,stdout
anstatt ihn in einer Datei zu speichern.quelle
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:
quelle
Wenn Sie eine Website mit wget crawlen müssen und die Festplattenabwanderung minimieren möchten ...
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 daraufindex.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.Das Beste, was ich mir für das Crawlen ohne Schreiben auf die Festplatte ausgedacht habe, ist das Folgende
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
quelle
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.
quelle
Laut Hilfedokument (wget -h) können Sie die Option --spider verwenden, um den Download zu überspringen (Version 1.14).
quelle