Membuat `wget` tidak menyimpan halaman

68

Saya menggunakan wgetprogram ini, tetapi saya ingin tidak menyimpan file html yang saya unduh. Saya ingin itu dibuang setelah diterima. Bagaimana aku melakukan itu?

Ram Rachum
sumber
Saya baru mengenal Linux - Apakah /dev/nullmasalahnya berfungsi?
Ram Rachum
2
Jadi apa gunanya mengunduhnya?
Anonim
1
@ Anonim Saya berasumsi untuk menekankan server jauh .. Jika Anda tidak peduli tentang konten .. Saya mungkin akan menggunakan apachebench (ab).
Tom O'Connor

Jawaban:

83

Anda dapat mengarahkan output wget ke / dev / null (atau NUL di Windows):

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

File tidak akan ditulis ke disk, tetapi akan diunduh.

Evan Anderson
sumber
Ini tidak menyimpan halaman, tetapi mengirim email kepada saya. Mungkinkah menonaktifkan email?
trante
32

Jika Anda tidak ingin menyimpan file, dan Anda telah menerima solusi mengunduh halaman /dev/null, saya kira Anda menggunakan wget untuk tidak mendapatkan dan mem-parsing konten halaman .

Jika kebutuhan Anda yang sebenarnya adalah untuk memicu beberapa tindakan jarak jauh, periksa apakah halaman itu ada dan seterusnya saya pikir akan lebih baik untuk menghindari mengunduh halaman tubuh html sama sekali.

Mainkan dengan wgetopsi untuk mengambil hanya apa yang benar-benar Anda butuhkan, yaitu header http, status permintaan, dll.

  • dengan asumsi Anda perlu memeriksa halaman itu ok (yaitu, status yang dikembalikan adalah 200) Anda dapat melakukan hal berikut:

    wget --no-cache --spider http://your.server.tld/your/page.html
    
  • jika Anda ingin mengurai server kembali header lakukan hal berikut:

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

Lihat halaman manual wget untuk opsi lebih lanjut untuk bermain.
Lihat lynxjuga, sebagai alternatif untuk wget.

drAlberT
sumber
Saya bingung. --no-cachedi halaman manual mengatakan itu menyebabkan wget untuk "mengirim direktif remote server yang sesuai ('Pragma: no-cache') untuk mendapatkan file dari layanan remote"
Gaia
Dikatakan kepada server klien Anda tidak ingin versi cache file .. kami ingin mendapatkan rilis terakhir dari sumber daya yang kami minta
drAlberT
17

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

Al.
sumber
1
Terima kasih banyak. The --delete-afterpilihan adalah pilihan ketika Anda harus men-download secara rekursif tetapi Anda ingin membuang konten yang sebenarnya.
egelev
+1 untuk saya, perintahnya intuitif - sekilas, saya bisa lebih cepat memahami apa yang akan terjadi daripada-O /dev/null
fusion27
15

Jika Anda juga ingin mencetak di konsol hasil yang dapat Anda lakukan:

wget -qO- http://www.example.com
SCL
sumber
1
Saya suka opsi ini yang terbaik. Mari saya lihat apa yang didapat tetapi tidak menyimpannya. Switch adalah qmode khusus yang diam, (tidak menampilkan progres dan info lainnya), dan O-(menulis dokumen yang diambil ke konsol).
Octopus
9

Alternatif lain adalah dengan menggunakan alat seperti curl, yang secara default menampilkan konten jarak jauh stdoutdaripada menyimpannya ke file.

natacado
sumber
4

Periksa opsi "-spider". Saya menggunakannya untuk memastikan situs web saya aktif dan mengirimi saya email jika tidak. Ini adalah entri khas dari crontab saya:

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
sumber
3

Jika Anda perlu merayapi situs web menggunakan wget dan ingin meminimalkan ...

Untuk kotak * NIX dan penggunaannya wget, saya sarankan melompati penulisan ke file. Saya perhatikan pada kotak Ubuntu 10,04 saya yang wget -O /dev/nullmenyebabkan wget untuk membatalkan unduhan setelah unduhan pertama.
Saya juga memperhatikan bahwa wget -O real-filemenyebabkan wget untuk melupakan tautan yang sebenarnya pada halaman. Itu bersikeras index.htmluntuk hadir di setiap halaman. Halaman seperti itu mungkin tidak selalu ada dan wget tidak akan mengingat tautan yang telah dilihat sebelumnya.

Untuk merangkak tanpa menulis ke disk, yang terbaik yang saya hasilkan adalah sebagai berikut

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

Perhatikan tidak ada -O fileopsi. wget akan menulis ke direktori $ PWD. Dalam hal ini, itu adalah sistem file tmpfs RAM saja . Menulis di sini harus memintas churn disk (tergantung ruang swap) DAN melacak semua tautan. Ini harus merayapi seluruh situs web dengan sukses.

Setelah itu tentu saja

 rm --recursive --force /dev/shm/1/*
JamesThomasMoon1979
sumber
2

Gunakan opsi --delete-after, yang menghapus file setelah diunduh.

Sunting: Ups, saya baru tahu bahwa sudah dijawab.

John Gardeniers
sumber
0

Menurut doc bantuan (wget -h), Anda dapat menggunakan opsi --spider untuk melewati unduhan (versi 1.14).

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

qi berbatu
sumber
Bagaimana ini menambah jawaban lain yang menyebutkan --spider?
Ward