Cara mengunduh dengan wget tanpa mengikuti tautan dengan parameter

7

Saya mencoba mengunduh dua situs untuk dimasukkan dalam CD:

http://boinc.berkeley.edu/trac/wiki
http://www.boinc-wiki.info

Masalah yang saya alami adalah keduanya wiki. Jadi saat mengunduh dengan mis:

wget -r -k -np -nv -R jpg,jpeg,gif,png,tif http://www.boinc-wiki.info/

Saya mendapatkan banyak file karena ia juga mengikuti tautan seperti ...? Action = edit ...? Action = diff & versi = ...

Apakah ada yang tahu cara untuk mengatasi ini?

Saya hanya ingin halaman saat ini, tanpa gambar, dan tanpa perbedaan dll.

PS:

wget -r -k -np -nv -l 1 -R jpg,jpeg,png,gif,tif,pdf,ppt http://boinc.berkeley.edu/trac/wiki/TitleIndex

Ini berfungsi untuk berkeley tetapi boinc-wiki.info masih memberi saya masalah: /

PPS:

Saya mendapatkan halaman yang paling relevan dengan:

wget -r -k -nv  -l 2 -R jpg,jpeg,png,gif,tif,pdf,ppt http://www.boinc-wiki.info
Pengikat dasi
sumber
Tidak perlu melintasi pos antara superuser dan serverfault superuser.com/questions/158318/…
Bryan
Di mana saya harus mempostingnya?
Pejuang Tie

Jawaban:

7
wget --reject-regex '(.*)\?(.*)' http://example.com

( --reject-type posixsecara default). Hanya berfungsi untuk versi terbaru (> = 1.14) wget, menurut komentar lain.

Hati-hati karena tampaknya Anda --reject-regexhanya dapat menggunakan satu kali per wgetpanggilan. Artinya, Anda harus menggunakan |dalam satu regex jika Anda ingin memilih pada beberapa regex:

wget --reject-regex 'expr1|expr2|…' http://example.com
Skippy le Grand Gourou
sumber
2
Regex di wget tidak berlabuh di awal atau akhir, jadi pada contoh pertama Anda wget --reject-regex '\?' http://example.comsudah cukup.
Stéphane Gourichon
4

The dokumentasi untuk wget mengatakan:

Perhatikan juga bahwa string kueri (string di akhir URL yang dimulai dengan tanda tanya ('?') Tidak dimasukkan sebagai bagian dari nama file untuk aturan terima / tolak, meskipun ini sebenarnya akan berkontribusi pada nama yang dipilih untuk file lokal. Diharapkan bahwa versi Wget di masa depan akan memberikan opsi untuk memungkinkan pencocokan dengan string kueri.

Sepertinya fungsi ini sudah di atas meja untuk sementara dan tidak ada yang dilakukan dengan itu.

Saya belum pernah menggunakannya, tetapi httrack sepertinya memiliki fitur penyaringan yang lebih kuat daripada wget dan mungkin lebih cocok untuk apa yang Anda cari (baca tentang filter di sini http://www.httrack.com/html /fcguide.html ).

Evan Anderson
sumber
+1 untuk mengarahkan saya ke httrack. Terlihat lebih baik daripada wget, dan wget terlihat stagnan.
Stefan Lasiewski
Saya sudah mencoba Winhttrack tetapi berperilaku lucu. Ia mengunduh file dan melintasi direktori yang seharusnya tidak: /
Tie-fighter
Mungkin suatu hari wget akan diperbaiki. Untuk saat ini httrack dan pavuk keduanya terlihat bagus.
joeytwiddle
3

Versi baru wget (v.1.14) menyelesaikan semua masalah ini.

Anda harus menggunakan opsi baru --reject-regex=....untuk menangani string kueri.

Perhatikan bahwa saya tidak dapat menemukan manual baru yang menyertakan opsi-opsi baru ini, jadi Anda harus menggunakan perintah bantuan wget --help > help.txt

pengguna3133076
sumber
1

Pavuk harus dapat melakukannya:

http://pavuk.sourceforge.net/man.html#sect39

Contoh mediawiki:

[...]

-skip_url_pattern ' oldid = , action = edit , aksi = sejarah , diff = , limit = , [/ =] Pengguna: , [/ =] User_talk: , [^ p] / Khusus: , = khusus: [^ R] , php / Khusus: [^ LUA] [^ onl] [^ nul] , MediaWiki: , Cari: , Bantuan: '

[...]

Pengikat dasi
sumber
1

Sepertinya Anda mencoba menghindari mengunduh halaman khusus MediaWiki. Saya memecahkan masalah ini setelah menghindari index.phphalaman:

wget  -R '*index.php*'  -r ... <wiki link>

Namun, wiki menggunakan URL seperti yang terlihat di Wikipedia ( http://<wiki>/en/Theme) dan bukan pola yang saya lihat di tempat lain ( http://<wiki>/index.php?title=Theme). Karena tautan yang Anda berikan menggunakan URL dalam pola Wikipedia, saya pikir solusi ini juga dapat bekerja untuk Anda.

brandizzi
sumber
0

'-R rejlist - rej rejlist' Tentukan daftar sufiks atau pola nama file yang dipisahkan koma untuk menerima atau menolak (lihat Jenis File). Perhatikan bahwa jika salah satu karakter wildcard, '*', '?', '[' Atau ']', muncul dalam elemen daftar masuk atau bergabung kembali, itu akan diperlakukan sebagai pola, bukan sufiks.

Pola mungkin yang Anda inginkan. Saya tidak yakin seberapa canggih polanya, tetapi Anda bisa mencoba menerima hanya file atau blokir tertentu:

wget -r -k -np -nv -R jpg,jpeg,gif,png,tif,*\? http://www.boinc-wiki.info/

Menerima:

wget -r -k -np -nv -R jpg,jpeg,gif,png,tif -A [a-zA-Z.] http://www.boinc-wiki.info/

Edit: nvm dalam terang dari posting lain.

Joshua Enfield
sumber
Ini berfungsi pada string kueri? Setiap versi wget yang saya gunakan hanya menerapkan pola daftar menolak untuk bagian file dari URL. Saya akan mencobanya dan melihat.
Evan Anderson
Saya belum mengujinya. Saya baru saja melihat dokumentasinya. Saya memang menemukannya menggunakan konvensi shell, tetapi pengalaman Anda akan berbicara lebih banyak dari saya sehubungan dengan fungsi kerja yang cocok.
Joshua Enfield
Melarikan diri dari "?" sepertinya tidak mendapatkan wget untuk melakukan apa yang OP inginkan pada kotak CentOS 5.3 saya menjalankan wget 1.11.4.
Evan Anderson