Buat wget mengonversi tautan HTML menjadi relatif setelah mengunduh jika -k tidak ditentukan

32

The -kpilihan (atau --convert-link) akan mengkonversi link di halaman web Anda untuk relatif setelah selesai download, seperti halaman man mengatakan:

Setelah pengunduhan selesai, konversikan tautan dalam dokumen agar cocok untuk dilihat secara lokal. Ini tidak hanya memengaruhi hyperlink yang terlihat, tetapi bagian mana pun dari dokumen yang menautkan ke konten eksternal, seperti gambar yang disematkan, tautan ke style sheet, hyperlink ke konten non-HTML, dll.

Jadi, jika saya tidak menentukan -k, dapatkah saya menjalankan wgetlagi setelah mengunduh dan memperbaikinya, dan jika demikian, apa yang akan menjadi perintah yang tepat? Dugaan saya adalah wget -c [previous options used] [url]dan jalankan di direktori kerja yang sama dengan file diunduh.

Nathaniel
sumber
1
Anda tentu saja dapat memposting proses file setelah diunduh, tetapi saya tidak tahu apakah wgetini bisa dilakukan. ide Anda untuk mencobanya -cadalah yang bagus. saatnya bereksperimen!
quack quixote,
Mungkinkah ada utilitas yang berguna untuk mengubah tautan? Berjalan di Windows, omong-omong ...
Nathaniel
perl... tidak ada naskah prewritten, tapi jika saya ingin solusi DIY itulah yang saya akan menggunakan
dukun quixote
Oke terima kasih. Jangan memasang Perl dan perlu waktu terlalu lama untuk meraihnya. Untungnya, saya menemukan cara membuat wget melakukan pekerjaan itu. Saya mengirim jawaban.
Nathaniel
btw, ActivePerl ada sebagai windows perl port; ini adalah penginstal yang cukup kecil, dan saya cukup yakin sebagian besar modul CPAN bekerja dengannya. activestate.com/activeperl
quack quixote

Jawaban:

23

Ya, Anda bisa wgetmelakukannya. Saya akan mengatakan gunakan wget -nc -k [previous options] [previous url]. -ncadalah no-clobber. Dari halaman manual:

Ketika −ncditentukan, perilaku ini ditekan, dan Wget akan menolak untuk mengunduh salinan file yang lebih baru.

Dan -kopsi apakah tautannya mengonversi. Jadi, wget mulai menggali di server jauh, melihat semua file yang sudah Anda miliki, menolak untuk mengunduh ulang, dan kemudian mengedit tautan HTML ke relatif ketika selesai. Bagus.

Nathaniel
sumber
3
Tidak, ini tidak berhasil untuk saya. Dia mengunduh file pertama (mis. Index.html), lihat bahwa semuanya sudah diunduh. Jika Anda ingin wget bekerja rekursif, Anda harus menggunakan opsi timestamp (-K). Jadi wget harus meminta semua tajuk agar sesuai jika file lebih baru atau tidak.
12
GNU Wget 1.13.3 dibangun di atas darwin11.1.0. Mencoba menggunakan kedua opsi pada saat yang sama memberiBoth --no-clobber and --convert-links were specified,only --convert-links will be used.
Ludovic Kuty
2
bukankah pertanyaan Anda diajukan tanpa -k?
barlop
8
Lih Komentar @ LudovicKuty - pada wget 1.13 --no-clobbertidak berfungsi --convert-links. Lihat http://savannah.gnu.org/bugs/?31781 untuk detailnya.
David Moles
1
Jika ada yang peduli, saya membuat gambar buruh pelabuhan untuk wget 1.12: hub.docker.com/r/berezovskyi/wget1.12
berezovskyi