Meloloskan string kueri dengan wget --mirror

15

Saya menggunakan wget --mirror --html-extension --convert-linksuntuk mirror situs, tetapi saya berakhir dengan banyak nama file dalam format post.php?id=#.html. Ketika saya mencoba untuk melihatnya di browser gagal, karena browser mengabaikan string kueri saat memuat file. Apakah ada cara untuk mengganti ?karakter dalam nama file dengan sesuatu yang lain?


Jawabannya --restrict-file-names=windowsbekerja dengan benar. Dalam hubungannya dengan bendera --convert-linksdan --adjust-extension/ -E(sebelumnya bernama --html-extension, yang juga berfungsi tetapi sudah usang) itu menghasilkan cermin yang berperilaku seperti yang diharapkan.

wget  --mirror --adjust-extension --convert-links --restrict-file-names=windows http://www.example
ABANDON STACK - Jeremy Banks
sumber

Jawaban:

16

Lihat --restrict-file-namesopsi. Meskipun tidak sepenuhnya ditujukan untuk tujuan khusus ini, --restrict-file-names=windowsmungkin akan membantu Anda:

--restrict-file-names = mode

Ubah karakter mana yang ditemukan di URL jarak jauh harus diloloskan selama pembuatan nama file lokal. [...]

Ketika "windows" diberikan, Wget lolos dari karakter \, |, /,:,?, ", *, <,>, Dan karakter kontrol dalam rentang 0--31 dan 128--159. Selain itu , Wget dalam mode Windows menggunakan + bukannya: untuk memisahkan host dan port dalam nama file lokal, dan menggunakan @ bukannya? Untuk memisahkan bagian permintaan nama file dari yang lain. Oleh karena itu, URL yang akan disimpan sebagai www. xemacs.org:4300/search.pl?input=blah dalam mode Unix akan disimpan sebagai www.xemacs.org+4300/search.pl@input=blah dalam mode Windows.

peth
sumber
2

Browser Anda akan melihatnya dengan baik jika Anda menggunakan URL suka

file:///tmp/example.com/post.php%3Fid=1.html

dari pada

file:///tmp/example.com/post.php?id=1.html

Catatan: jika Anda mengalami masalah dengan tautan internal dari file yang diunduh, itu karena Anda menghentikan wget sebelum selesai mengunduh. Karena Anda menentukan --convert-links dan --html-extension (hanya berlaku saat itu diberikan), wget biasanya akan memperbaiki tautan untuk menggunakan% 3F alih-alih?; namun, hal ini dilakukan pada akhirnya, setelah selesai mengunduh; jika telah terputus, itu tidak akan memperbaiki tautan apa pun, dan Anda berada dalam kesulitan ini. Tentu saja, Anda selalu dapat menulis skrip untuk melalui dan memperbaiki tautan, tetapi ...

Micah Cowan
sumber
ini tidak sepenuhnya benar, wget, tanpa gangguan, karena URL seperti http://site.com/article.cgi?25akan disimpan seperti article.cgi?25.htmllihat bagian 2.7 di gnu.org/software/wget/manual/wget.html#HTTP-Options
Tzury Bar Yochay
-2

wget tidak memiliki opsi untuk mengubah nama yang disimpan. Apa yang mungkin perlu Anda lakukan adalah membuat skrip untuk melewati dan mengganti? dengan _ atau yang serupa. Wget sendiri tidak bisa melakukan ini.

8BitsOfGeek
sumber