wget memiliki opsi untuk -np
menonaktifkan file dari direktori induk mana pun. Saya membutuhkan sesuatu yang serupa tetapi sedikit lebih fleksibel. Mempertimbangkan:
www.foo.com/bar1/bar2/bar3/index.html
Saya ingin mendapatkan segalanya tetapi tidak "lebih tinggi" (dalam hierarki pohon) daripada bar2
(!). Jadi bar2
juga harus diambil tetapi tidak bar1
.
Apakah ada cara untuk membuat wget lebih selektif?
Latar Belakang: Saya mencoba membuat mirror situs web, dengan struktur logis yang serupa - titik awal, lalu naik, lalu turun. Jika ada alat lain selain wget
, lebih cocok untuk tata letak seperti itu, beri tahu saya juga.
Memperbarui
Atau alih-alih menentukan kedalaman yang mungkin, mungkin sesuatu seperti "tidak ada orang tua, kecuali mereka cocok dengan URL ini atau itu".
Perbarui 2
Ada beberapa struktur di server, bukan? Anda dapat memvisualisasikannya sebagai pohon. Jadi biasanya dengan "--tidak ada orang tua" Anda mulai dari beberapa titik A dan hanya turun.
Harapan saya, adalah kemampuan untuk naik - diekspresikan dengan mengatakan, diizinkan naik ke X node, atau (yang setara 100%) sehingga diizinkan naik ke B node (di mana jarak BA = X).
Dalam semua kasus, aturan untuk turun tetap seperti yang ditentukan oleh pengguna (misalnya - turun hanya berdasarkan level Y).
Bagaimana cara menyimpannya? Sebenarnya itu bukan pertanyaan yang sebenarnya - wget
secara default membuat ulang struktur server, tidak ada yang perlu ditakutkan, atau tidak perlu untuk memperbaiki apa pun. Jadi, dalam 2 kata - seperti biasa.
Perbarui 3
Struktur direktori di bawah ini - mari kita asumsikan bahwa dalam setiap direktori hanya ada satu file, dalam R - R.html dan seterusnya. Ini tentu saja disederhanakan karena Anda dapat memiliki lebih dari satu halaman.
R
/ \
B G
/ \
C F
/ \
A D
/
E
A (A.html) adalah titik awal saya, X = 2 (jadi B adalah simpul level paling atas yang ingin saya ambil). Dalam contoh khusus ini berarti mengambil semua halaman kecuali R.html dan G.html. A.html disebut "titik awal" karena saya harus memulainya, bukan dari B.
Perbarui 4
Penamaan digunakan dari Pembaruan 3.
wget OPSI www.foo.com/B/C/A/A.html
Pertanyaannya adalah apa saja pilihan untuk mendapatkan semua halaman dari direktori B dan di bawah (mengetahui bahwa Anda harus mulai dari A.html).
bar2
mengambil tetapi tidakbar1
? Di manabar2
akan tinggal? Bagaimana jika dua atau lebih dir yang tidak Anda inginkan memiliki subdirama bernama identik, haruskah kontennya digabungkan? Ini hampir pasti lebih mudah untuk hanya mendapatkan seluruh situs sialan dan kemudian memangkas / memindahkan hal-hal di sekitar yang Anda inginkan.bar2
direktori dan semua isinya. Jika bukan itu, mohon klarifikasi.Jawaban:
Saya belum mencobanya, tetapi menggunakan -I dan -X dapat memberikan apa yang Anda inginkan. Percobaan pertama saya adalah di sepanjang garis
Penjelasan opsi:
sumber
Anda perlu menambahkan final / ke URL, kalau tidak Anda tidak akan mendapatkan yang Anda inginkan.
Jika Anda ingin mendapatkan semua konten di www.myhostname.com/somedirectory maka sintaks seharusnya berbunyi seperti:
Cobalah tanpa akhir / dan lihat apa yang terjadi. Kemudian coba dengan /.
sumber
Saya pikir jawaban yang tepat di sini adalah
--no-parent
pilihan:sumber
Mungkin saya kehilangan sesuatu, tetapi jika itu yang Anda inginkan maka
bekerja untuk saya (menggunakan contoh Anda). Tentu saja, dengan opsi-opsi itu Anda akan mendapatkan semua struktur direktori di atas itu juga, dari
www.foo.com
atas ke bawah. Jika Anda hanya inginbar2
di tingkat atas, maka lakukanlah-nH
menyingkirkanwww.foo.com
, dan--cut-dirs=1
menghilangkanbar1
, sehingga Anda akan mendapatkanbar2
dan subdirektori yang diunduh ke direktori saat ini. Untuk informasi lebih lanjut, lihatman wget
, yang cukup mudah dibaca dan memiliki contoh.sumber
np
), tetapi saya mencari solusi umum, ketika tingkat atas berada di atas titik awal.B
(sesuai contoh Anda), melainkanA
? Jika demikian, mengapa? Apakah ini karena Anda ingin mengotomatiskan beberapa skrip atau karena alasan lain? Saya juga tidak yakin apa yang Anda maksud dengan X = 2. Apakah itu berarti level 2? Jika Anda mencoba untuk mengambil direktori lebih bawah di pohon, aku tidak yakin bagaimana Anda membedakanB
dariG
.