Saya ingin mengunduh secara rekursif, tetapi saya tidak ingin mengikuti semua tautan

10

Saya mencoba membuat mirror situs web menggunakan wget, tetapi saya tidak ingin mengunduh banyak file, jadi saya menggunakan --rejectopsi wget untuk tidak menyimpan semua file. Namun wget masih akan mengunduh semua file dan kemudian menghapus file setelahnya jika cocok dengan opsi tolak saya.

Apakah ada cara untuk memberitahu wget untuk tidak mengikuti tautan tertentu jika mereka cocok dengan beberapa wildcard shell? Jika wget tidak dapat melakukan ini, apakah ada perintah linux umum lainnya yang dapat melakukan ini?

Rory
sumber
3
Silakan kirim seluruh perintah Anda. Itu membuatnya lebih mudah untuk memecahkan masalah.
Joseph Kern

Jawaban:

9

Anda juga dapat mencoba HTTrack yang memiliki, termasuk IMO, lebih fleksibel dan intuitif termasuk / tidak termasuk logika. Sesuatu seperti ini...

httrack "https://example.com" -O ExampleMirrorDirectory \
"-*" \
"+https://example.com/images/*" \
"-*.swf"

Aturan akan diterapkan secara berurutan, dan akan menggantikan aturan sebelumnya ...

  1. Kecualikan semuanya
  2. Tetapi sertakan https://example.com/images/ *
  3. Tetapi mengecualikan apa pun yang berakhiran swf
lukecyca
sumber
Apakah itu mengunduh CSS, gambar, dll. Dengan URL yang diperbarui?
brandizzi
6

Sepertinya ini tidak mungkin di wget

Rory
sumber
1

Di bawah --reject bagian 'man wget':

"Perhatikan bahwa jika salah satu karakter wildcard, *,?, [Atau], muncul di elemen daftar masuk atau daftar ulang, itu akan diperlakukan sebagai pola, bukan sufiks."

Jika Anda melakukan ini, Anda mungkin ingin memberikan contoh pola yang Anda gunakan dan apa yang menurut Anda cocok, dan itu tidak cocok. Anda mengatakan mereka cocok, tetapi apakah Anda yakin?

Juga, pastikan Anda memasukkan daftar ini dalam tanda kutip, sehingga shell tidak memperluas wildcard itu sebelum meneruskan argumennya menjadi wget.

Bahkan jika sistem Anda tidak memiliki versi 1.12, baca bagian Jenis File dari manual di sini . Menurut log perubahan, pengelola menambahkan beberapa peringatan:

* NEWS: Added documentation change re: --no-parents, and various
caveats on accept/reject lists behavior. Rearranged some items in
order of priority.
Kyle Brandt
sumber
Opsi --reject ada dalam tanda kutip. Saya dapat melihat bahwa file tersebut cocok dengan file yang benar karena setelah file diunduh, wget menghapus file tersebut. Saya hanya ingin menghentikannya mengunduh file di tempat pertama
Rory
Apakah ini file htm (l)? Menurut manual, ini diunduh apa pun yang terjadi.
Kyle Brandt
Iya. file yang ingin saya tolak adalah file HTML. Saya tahu mereka diunduh apa pun yang terjadi. Apakah ada cara untuk mencegahnya?
Rory
1

Anda dapat membatasi tingkat rekursi dengan -l NUMBERopsi, jika itu membantu (tidak mengikuti pola regex tertentu).

Tingkat unduhan "2" index.html, subsitus / gambar / etc dan tautan di subsitus.

PEra
sumber
tidak ada yang tidak akan membantu dalam hal ini
Rory
1

bagaimana Anda menggunakan wget? coba gunakan dengan cara ini:

wget -r --reject=gif,jpg,swf http://norc.aut.ac.ir/

perintah ini akan mengabaikan file gif dan jpg dan swf.

orezvani
sumber
File yang ingin ditolak oleh Rory McCann adalah file HTML, tetapi ia ingin menyimpan file HTML lainnya, jadi sintaks ini tidak berlaku untuk pertanyaannya.
Royce Williams
1

Salah satu solusinya adalah menjalankan wget melalui server proxy. Setel proxy Anda untuk melarang pola tertentu. Ini akan memblokir wget dari pernah mengunduhnya di tempat pertama.

wget akan mengunduh dan menghapus file yang cocok dengan pola -R. itu juga bisa cocok dengan pola, bukan hanya ekstensi atau bagian dari nama file. Namun itu tidak berhenti wget dari mengunduh dulu dan menghapusnya nanti.

httrack memang memiliki beberapa fitur bagus tetapi dalam pengalaman saya cara menyimpan "file" mungkin agak aneh misalnya jika httrack datang di index.asp? Tipe = BASIC & PAGEID = 2234234
dapat menyimpannya tetapi Anda harus mengatakannya untuk melestarikan bagian dari kueri
misalnya% h% p /% n% [TIPE: @TYPE = ::]% [PAGEID: PAGEID = ::].% t
@ adalah tempat penampung untuk tanda tanya, Anda dapat mengganti nama file nanti, atau mungkin luput dari tanda tanya? masalahnya adalah.% t akan menambahkan '.html' ke bagian akhir URI Anda yang awalnya tidak memiliki '.html' Dan jika Anda melepasnya, gambar yang diunduh httrack akan kekurangan ekstensi file.

Lebih baik menggunakan IMHO wget

cparod
sumber