Wget ile sorgu dizelerinden kaçış --mirror


15

wget --mirror --html-extension --convert-linksBir siteyi yansıtmak için kullanıyorum , ancak sonunda birçok dosya adı var post.php?id=#.html. Bunları bir tarayıcıda görüntülemeye çalıştığımda başarısız oluyor, çünkü tarayıcı dosyayı yüklerken sorgu dizesini yok sayar. ?Dosya adlarındaki karakteri başka bir şeyle değiştirmenin bir yolu var mı ?


Cevabı --restrict-file-names=windowsdoğru çalıştı. Bayraklar --convert-linksve --adjust-extension/ -E(önceden isimlendirilen --html-extension, aynı zamanda çalışır, ancak kullanımdan kaldırılmıştır) ile birlikte, beklendiği gibi davranan bir ayna üretir.

wget  --mirror --adjust-extension --convert-links --restrict-file-names=windows http://www.example

Yanıtlar:


16

Seçeneğe bakın --restrict-file-names. Bu özel amaç için tam olarak tasarlanmamış olsa da --restrict-file-names=windows, muhtemelen size yardımcı olacaktır:

--restrict-file-isimler = modları

Yerel dosya adlarının oluşturulması sırasında uzak URL'lerde bulunan karakterlerin kaçması gerektiğini değiştirin. [...]

"Windows" verildiğinde, Wget \, |, /,:,?, ", *, <,> Karakterlerinden ve 0-31 ve 128-159 aralığındaki kontrol karakterlerinden kaçar. , Windows modunda Wget, yerel dosya adlarında anasistem ve bağlantı noktasını ayırmak için + yerine + kullanır ve dosya adının sorgu kısmını diğerlerinden ayırmak için? Yerine @ kullanır. Bu nedenle, www olarak kaydedilecek bir URL. Unix modunda xemacs.org:4300/search.pl?input=blah Windows modunda www.xemacs.org+4300/search.pl@input=blah olarak kaydedilir.


2

Şunun gibi bir URL kullanırsanız tarayıcınız iyi görüntüleyecektir

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

onun yerine

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

Not: İndirilen dosyalardan dahili bağlantılarla ilgili sorun yaşıyorsanız, bunun nedeni indirme işlemi yapılmadan önce wget'i sonlandırmanızdır. --Convert-links ve --html-extension (yalnızca bunlar verildiğinde geçerlidir) belirttiğiniz için, wget normalde? Yerine% 3F kullanmak için bağlantıları düzeltir. ancak, indirme bittikten sonra bunu sonunda yapar; kesintiye uğradıysa, bağlantıların hiçbirini düzeltmeyecek ve bu çıkmazda kalacaksınız. Tabii ki, linkleri düzeltmek ve düzeltmek için her zaman bir komut dosyası yazabilirsiniz, ancak ...


Böyle bir URL için, hiçbir kesinti olmaksızın, wget oldukça doğru değil http://site.com/article.cgi?25olarak kaydedilecek article.cgi?25.htmlde bkz bölüm 2.7 gnu.org/software/wget/manual/wget.html#HTTP-Options
Tzury Bar Yochay

-2

wget'in kaydedilmiş adı değiştirme seçeneği yoktur. Muhtemelen yapmanız gereken, geçip değiştirmek için bir komut dosyası oluşturmak mı? _ veya benzeri bir şeyle. Wget tek başına bunu yapamaz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.