Bagaimana cara mengunduh semua gambar dari situs web (bukan halaman web) menggunakan terminal?

3

Saya ingin perintah yang saya ketik URL, misalnya photos.tumblr.com, dan itu mengunduh semua foto di situs ini dalam folder, tetapi tidak hanya gambar beranda situs. Perintah ini perlu mengunduh gambar dari semua bagian situs, seperti photos.tumblr.com/ph1/1.png / photos.tumblr.com/ph3/4.jpg.

Tolong tunjukkan saya contoh menggunakan url ini: http://neverending-fairytale.tumblr.com/ dan mengujinya sebelum menjawab pertanyaan

Zignd
sumber

Jawaban:

4

Kamu bisa memakai:

wget -r -A=.jpg,.png http://website.com

Dengan perintah ini Anda akan mendapatkan semua file JPG dan PNG, tetapi Anda dapat diblokir dari situs tersebut.

Jadi, jika Anda menggunakan:

wget --random-wait --limit-rate=100k -r -A=.jpg,.png http://website.com

Anda akan mendapatkan gambar Anda menunggu waktu acak antara unduhan dan menetapkan batas kecepatan.

Vic Abreu
sumber
perintahmu tidak berfungsi
Zignd
silakan periksa kembali posnya, saya mengeditnya
Zignd
Mungkin Anda sudah dilarang.
Vic Abreu
tumblr adalah jenis situs yang kemungkinan besar akan melarang skrip skrap ini.
heltonbiker
1

Kamu bisa unduh seluruh situs web (Saya akan menggunakan wget -r -p -l inf -np ), lalu (atau secara bersamaan) menjalankan skrip shell untuk menghapus semua file non-gambar (the file perintah dapat digunakan untuk memeriksa apakah file adalah gambar).

(Itu -A/-R opsi wget tidak dapat diandalkan; mereka hanya memeriksa ekstensi URL (sehingga Anda dapat memfilter menurut .jpg, .jpeg, .png, dll.), tetapi tidak ada persyaratan untuk ini hadir.)

Ankur
sumber
1

Anda hampir tidak bisa mendapatkan hasil yang baik dengan menggunakan pendekatan brute force yang diberikan sebagian besar perintah satu-liner (meskipun saya menggunakan opsi wget untuk mendapatkan seluruh situs banyak)

Saya menyarankan Anda untuk membuat skrip yang menggunakan beberapa bentuk seleksi bersyarat dan loop untuk benar-benar cocok dan mengikuti jenis tautan yang membawa Anda ke gambar yang Anda inginkan.

Strategi yang biasanya saya ikuti:

  • Di browser, buka halaman pertama yang diminati dan perlihatkan kode sumber;
  • Klik kanan gambar - & gt; "Properti gambar" - & gt; temukan atribut 'src =' dan tag gambar.
  • Dapatkan pola keseluruhan dari tag / tautan / href ini, dan gunakan beberapa regex ( grep -o ) untuk mem-parsing tautan;
  • Gunakan tautan ini dengan beberapa perintah untuk mengunduh gambar;
  • Dapatkan juga tautan pada halaman yang menuju ke halaman lain;
  • Ulangi.

Ini memang jauh lebih rumit daripada satu-liner yang mengambil semuanya, tetapi pengalaman itu mencerahkan. Webscraping adalah seni tersendiri.

Untuk itu, saya juga akan merekomendasikan Python, walaupun sangat mungkin untuk melakukannya dengan Shell Script (bash) jika Anda suka, atau bahasa scripting apa pun (Ruby, PHP, perl, dll.).

Semoga ini membantu.

heltonbiker
sumber