Sprawienie, by `wget` nie zapisał strony

68

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ć?

Ram Rachum
źródło
Jestem nowy w systemie Linux - czy to /dev/nullzadziała?
Ram Rachum,
2
Więc po co to pobierać?
Anonimowy,
1
@Anonimowy Zakładam, że muszę podkreślić zdalny serwer .. Jeśli nie zależy ci na treści .. Prawdopodobnie użyłbym apachebench (ab).
Tom O'Connor,

Odpowiedzi:

83

Możesz przekierować wyjście wget do / dev / null (lub NUL w Windows):

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

Plik nie zostanie zapisany na dysku, ale zostanie pobrany.

Evan Anderson
źródło
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:

    wget --no-cache --spider http://your.server.tld/your/page.html
    
  • jeśli chcesz przeanalizować zwrócone przez serwer nagłówki, wykonaj następujące czynności:

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

Zobacz stronę manuala wget, aby uzyskać dalsze opcje gry.
Zobacz lynxteż, jako alternatywę dla wget.

drAlberT
źródło
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
prosimy
17

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

glin.
źródło
1
Wielkie dzięki. Ta --delete-afteropcja jest wyborem, gdy musisz pobierać rekurencyjnie, ale chcesz odrzucić rzeczywistą zawartość.
egelev,
+1 dla mnie, polecenie jest intuicyjne - na pierwszy rzut oka mogę szybciej zrozumieć, co się wydarzy-O /dev/null
fusion27
15

Jeśli chcesz również wydrukować w konsoli, możesz:

wget -qO- http://www.example.com
SCL
źródło
1
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.

natacado
źródło
4

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
Paul Tomblin
źródło
3

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ę.

Potem oczywiście

 rm --recursive --force /dev/shm/1/*
JamesThomasMoon1979
źródło
2

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.

John Gardeniers
źródło
0

Zgodnie z dokumentem pomocy (wget -h) możesz użyć opcji --spider, aby pominąć pobieranie (wersja 1.14).

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

skalista qi
źródło
Jak to dodaje się do innej odpowiedzi, która wspomina - pająka?
Totem