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?


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

Apakah itu mengunduh CSS, gambar, dll. Dengan URL yang diperbarui?
brandizzi


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.

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.


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.


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

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.