Menggunakan Wget untuk Merayapi Situs secara Rekursif dan Mengunduh Gambar


13

Bagaimana Anda menginstruksikan wget untuk merayapi situs web secara rekursif dan hanya mengunduh jenis gambar tertentu?

Saya mencoba menggunakan ini untuk menjelajah situs dan hanya mengunduh gambar Jpeg:

wget --no-parent --wait=10 --limit-rate=100K --recursive --accept=jpg,jpeg --no-directories http://somedomain/images/page1.html

Namun, meskipun page1.html berisi ratusan tautan ke subhalaman, yang memiliki tautan langsung ke gambar, wget melaporkan hal-hal seperti "Menghapus subhalaman13.html karena harus ditolak", dan tidak pernah mengunduh gambar apa pun, karena tidak ada yang langsung terhubung dengan gambar dari halaman awal.

Saya berasumsi ini karena --accept saya digunakan untuk mengarahkan perayapan dan memfilter konten untuk diunduh, sedangkan saya ingin itu digunakan hanya untuk mengarahkan pengunduhan konten. Bagaimana saya bisa membuat wget merangkak semua tautan, tetapi hanya mengunduh file dengan ekstensi tertentu seperti * .jpeg?

EDIT: Juga, beberapa halaman bersifat dinamis, dan dihasilkan melalui skrip CGI (mis. Img.cgi? Fo9s0f989wefw90e). Bahkan jika saya menambahkan cgi ke daftar penerimaan saya (misalnya --accept = jpg, jpeg, html, cgi) ini masih selalu ditolak. Apakah ada jalan keluarnya?

Jawaban:


5

Mengapa Anda tidak mencoba menggunakannya wget -A jpg,jpeg -r http://example.com?


Pertanyaannya menyatakan bahwa beberapa gambar berbentuk /url/path.cgi?query, jadi saran Anda tidak akan mengambilnya.
Charles Stewart

1

Bagaimana Anda berharap wget mengetahui isi dari subpage13.html (dan jpg-nya yang terhubung) jika tidak diizinkan untuk mengunduhnya. Saya sarankan Anda mengizinkan html, dapatkan yang Anda inginkan, lalu hapus yang tidak Anda inginkan.


Saya tidak begitu yakin tentang mengapa cgi Anda ditolak ... apakah ada kesalahan output oleh wget? Mungkin membuat wget verbose ( -v) dan lihat. Mungkin lebih baik sebagai pertanyaan terpisah.

Yang mengatakan, jika Anda tidak peduli tentang bandwidth dan unduh lot kemudian hapus apa yang tidak Anda inginkan setelahnya, itu tidak masalah.


Lihat juga --html-extension

Dari halaman manual:

-E

--html-extension

Jika file jenis aplikasi / xhtml + xml atau teks / html diunduh dan URL tidak diakhiri dengan regexp. [Hh] [Tt] [Mm] [Ll] ?, opsi ini akan menyebabkan akhiran .html menjadi ditambahkan ke nama file lokal. Ini berguna, misalnya, ketika Anda membuat mirror situs remote yang menggunakan halaman .asp, tetapi Anda ingin halaman yang dicerminkan dapat dilihat di server Apache stock Anda. Kegunaan lain yang baik untuk ini adalah ketika Anda mengunduh materi yang dihasilkan CGI. URL seperti http://site.com/article.cgi?25 akan disimpan sebagai article.cgi? 25.html.

Perhatikan bahwa nama file yang diubah dengan cara ini akan diunduh ulang setiap kali Anda melakukan mirror ulang sebuah situs, karena Wget tidak dapat mengatakan bahwa file X.html lokal sesuai dengan URL X jarak jauh (karena belum tahu bahwa URL menghasilkan output dari jenis. teks / html atau aplikasi / xhtml + xml. Untuk mencegah mengunduh ulang ini, Anda harus menggunakan -k dan -K sehingga versi asli file akan disimpan sebagai X.orig.


--restrict-file-names=unix mungkin juga berguna karena url cgi ...


Saya harus berhenti menautkan opsi wget .. hendak ditunjukkan --no-parenttetapi saya akan berhenti di situ.
Pricey

0

Anda juga dapat menggunakan MetaProducts Offline Explorer tanpa pemrograman


-1

Coba tambahkan --page-requisitesopsi


Itu mengunduh semua media yang tertaut. Satu-satunya cara menggunakan wget untuk mengunduh gambar adalah dengan mengunduh SEMUA konten di halaman ?!
Cerin
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.