Korzystam z wgetprogramu, ale chcę, aby nie zapisywał pliku HTML, który pobieram. Chcę, aby została odrzucona po otrzymaniu. W jaki sposób mogę to zrobić?
To nie zapisuje strony, ale wysyła do mnie e-mail. Czy można również wyłączyć wysyłanie wiadomości e-mail?
trante
32
Jeśli nie chcesz zapisać pliku i zaakceptowałeś rozwiązanie pobierania strony /dev/null, to chyba używasz wget, aby nie pobierać i analizować zawartości strony .
Jeśli twoją prawdziwą potrzebą jest uruchomienie jakiejś zdalnej akcji, sprawdź, czy strona istnieje i tak dalej. Myślę, że lepiej byłoby w ogóle nie pobierać strony HTML.
Graj z wgetopcjami, aby odzyskać tylko to, czego naprawdę potrzebujesz, tj. Nagłówki http, status żądania itp.
zakładając, że musisz sprawdzić, czy strona jest w porządku (tzn. zwracany status to 200), możesz wykonać następujące czynności:
Jestem zmieszany. --no-cachena stronie podręcznika mówi, że powoduje, że wget „wysyła zdalnemu serwerowi odpowiednią dyrektywę („ Pragma: no-cache ”), aby pobrać plik ze zdalnej usługi”
Gaia,
Mówi serwerowi, że Twój klient nie chce buforowanej wersji pliku. Chcemy uzyskać ostatnią wersję zasobu, o który
Najbardziej podoba mi się ta opcja. To pozwala mi zobaczyć, co dostaje, ale go nie zapisuje. Przełączniki działają w qtrybie cichym (nie wyświetla postępu i innych informacji) oraz O-(zapisują pobrany dokument na konsoli).
Ośmiornica
9
Inną alternatywą jest użycie takiego narzędzia curl, które domyślnie wyświetla zdalną zawartość stdoutzamiast zapisywać ją w pliku.
Sprawdź opcję „-spider”. Używam go, aby upewnić się, że moje strony internetowe działają, i jeśli nie, wyślą mi e-mail. To typowy wpis z mojego crontab:
46 */2 * * * if ! wget -q --spider http://www.rochesterflyingclub.com/ >/dev/null 2>&1; then echo "Rochester Flying Club site is down" ; fi
Jeśli musisz zaindeksować witrynę za pomocą programu wget i chcesz zminimalizować liczbę operacji dyskowych ...
W przypadku pola * NIX i używania wgetsugeruję pominięcie zapisu do pliku. Zauważyłem na moim urządzeniu Ubuntu 10.04, które wget -O /dev/nullspowodowało , że wget przerwał pobieranie po pierwszym pobraniu.
Zauważyłem również, że wget -O real-filepowoduje to, że wget zapomina o rzeczywistych linkach na stronie. Nalega na index.htmlobecność na każdej stronie. Takie strony nie zawsze mogą być obecne i wget nie pamięta linków, które widział wcześniej.
Do przeszukiwania bez zapisywania na dysk najlepiej wymyśliłem następujące rzeczy
mkdir /dev/shm/1
cd /dev/shm/1
wget --recursive --relative --no-parent ...
Zauważ, że nie ma -O fileopcji. wget zapisze w katalogu $ PWD. W tym przypadku jest to system plików tmpfs zawierający tylko pamięć RAM . Pisząc tutaj, należy ominąć rezygnację z dysku (w zależności od przestrzeni wymiany) ORAZ śledzić wszystkie linki. To powinno zindeksować całą stronę.
/dev/null
zadziała?Odpowiedzi:
Możesz przekierować wyjście wget do / dev / null (lub NUL w Windows):
Plik nie zostanie zapisany na dysku, ale zostanie pobrany.
źródło
Jeśli nie chcesz zapisać pliku i zaakceptowałeś rozwiązanie pobierania strony
/dev/null
, to chyba używasz wget, aby nie pobierać i analizować zawartości strony .Jeśli twoją prawdziwą potrzebą jest uruchomienie jakiejś zdalnej akcji, sprawdź, czy strona istnieje i tak dalej. Myślę, że lepiej byłoby w ogóle nie pobierać strony HTML.
Graj z
wget
opcjami, aby odzyskać tylko to, czego naprawdę potrzebujesz, tj. Nagłówki http, status żądania itp.zakładając, że musisz sprawdzić, czy strona jest w porządku (tzn. zwracany status to 200), możesz wykonać następujące czynności:
jeśli chcesz przeanalizować zwrócone przez serwer nagłówki, wykonaj następujące czynności:
Zobacz stronę manuala wget, aby uzyskać dalsze opcje gry.
Zobacz
lynx
też, jako alternatywę dla wget.źródło
--no-cache
na stronie podręcznika mówi, że powoduje, że wget „wysyła zdalnemu serwerowi odpowiednią dyrektywę („ Pragma: no-cache ”), aby pobrać plik ze zdalnej usługi”$ wget http://www.somewebsite.com -O foo.html --delete-after
źródło
--delete-after
opcja jest wyborem, gdy musisz pobierać rekurencyjnie, ale chcesz odrzucić rzeczywistą zawartość.-O /dev/null
Jeśli chcesz również wydrukować w konsoli, możesz:
źródło
q
trybie cichym (nie wyświetla postępu i innych informacji) orazO-
(zapisują pobrany dokument na konsoli).Inną alternatywą jest użycie takiego narzędzia
curl
, które domyślnie wyświetla zdalną zawartośćstdout
zamiast zapisywać ją w pliku.źródło
Sprawdź opcję „-spider”. Używam go, aby upewnić się, że moje strony internetowe działają, i jeśli nie, wyślą mi e-mail. To typowy wpis z mojego crontab:
źródło
Jeśli musisz zaindeksować witrynę za pomocą programu wget i chcesz zminimalizować liczbę operacji dyskowych ...
W przypadku pola * NIX i używania
wget
sugeruję pominięcie zapisu do pliku. Zauważyłem na moim urządzeniu Ubuntu 10.04, którewget -O /dev/null
spowodowało , że wget przerwał pobieranie po pierwszym pobraniu.Zauważyłem również, że
wget -O real-file
powoduje to, że wget zapomina o rzeczywistych linkach na stronie. Nalega naindex.html
obecność na każdej stronie. Takie strony nie zawsze mogą być obecne i wget nie pamięta linków, które widział wcześniej.Do przeszukiwania bez zapisywania na dysk najlepiej wymyśliłem następujące rzeczy
Zauważ, że nie ma
-O file
opcji. wget zapisze w katalogu $ PWD. W tym przypadku jest to system plików tmpfs zawierający tylko pamięć RAM . Pisząc tutaj, należy ominąć rezygnację z dysku (w zależności od przestrzeni wymiany) ORAZ śledzić wszystkie linki. To powinno zindeksować całą stronę.Potem oczywiście
źródło
Użyj opcji --delete-after, która usuwa plik po pobraniu.
Edycja: Ups, właśnie zauważyłem, że odpowiedź została już udzielona.
źródło
Zgodnie z dokumentem pomocy (wget -h) możesz użyć opcji --spider, aby pominąć pobieranie (wersja 1.14).
źródło