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?


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.


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.


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


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

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.


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

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/*

2

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

Sunting: Ups, saya baru tahu bahwa sudah dijawab.


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.


Bagaimana ini menambah jawaban lain yang menyebutkan --spider?
Ward
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.