wget ile download

wget (GNU wget) uzun zamandır kullandığım ve internetten birşeyler indirmeyi oldukça kolaylaştıran bir araç. Temel olarak

wget [URL]

komutu ile verdiğiniz URL adresindeki bir dosyayı indirebiliyorsunuz. Ancak, her araçta olduğu gibi wget’in de hayatı pratikleştiren püf noktaları var. Bu “hayat kurtaran” özelliklerin bazılarını listeleyeyim:

  • Çoklu indirme: Elinizde onlarca farklı link var ve her bir link için ayrı ayrı komut vermek bilgisayarın başından ayrılamamak anlamına geliyor. Bu durumda, her satıra bir link gelecek şekilde bir .txt dosyasına bu linkleri yazarak işleri otomatikleştirebilirsiniz. Aşağıdaki komutu verdiğinizde wget verilen girdi dosyayı satır satır okuyacak ve her bir satırdaki bağlantı için sırayla işlem başlatacaktır. Elimizdeki bağlantıları liste.txt adlı bir dosyaya yazdığımızı düşünürsek, komut şöyle olacaktır:
wget -i liste.txt
  • HTML kodundan ayıklama: Diyelim ki bir internet sayfasında bulunan onlarca dosyayı indirmek istiyorsunuz. Elbette sayfanın kodunu açarak, düzenli ifadelerle bağlantıları ayıklamak mümkün. Ancak, bazı web sayfalarında bağlantılar, sitenin bulunduğu sunucuya göre konumlandırılmış olabilir. Örneğin sayfa içindeki bağlantı ../Upper_Folder/x.html olarak verilebilir. Bu durumda http://foo/Upper_Folder/a.html olarak bir base tanımlarsanız, html içindeki diğer adresler http://foo/Upper_Folder/x.html olarak çözümlenecektir.
wget -B http://foo/Upper_Folder/x.html -i [input_file]
  • Devam Etme: En sevdiğim özelliklerden biri. Özellikle, bir ISO kalıbı gibi büyük dosyaları indirirken bağlantının kesilmesi veya ofiste başlattığınız bir indirme işine evde devam etmek istediğinizde hayat kurtaran bir parametre var: -c Eğer komutu aşağıdaki şekilde oluşturursanız, wget yarıda kalan bir indirme işlemine, daha önce indirdiği kısmı indirdiğini bilerek kaldığı yerden devam edecektir.
wget -c http://cdimage.debian.org/debian-cd/8.6.0/amd64/iso-cd/debian-8.6.0-amd64-CD-1.iso
  • Örümcek: wget, tam anlamıyla olmasa da, içinde bir “spider” barındırıyor. –spider parametresiyle kullanılan bu fonksiyon yararlı işler de yapabiliyor. wget manual sayfasında verilen örnek üstünden gidersek, internet tarayıcınızdaki favorilerinizin hala orada olup olmadığını spider ile kontrol edebilirsiniz. Bunun için internet tarayıcınızla favorilenizi dışa aktarıp, örneğin bookmarks.html adlı bir dosyaya yazdırdığınız varsayılım. Aşağıdaki komutu çalıştırdığınızda favorilerinizin hala yerinde olup olmadığını wget kontrol edecektir.
wget --spider --force-html -i bookmarks.html

Ancak bunun bir adım ötesine gitmek de mümkün. Bildiğiniz gibi web sayfalarında verilen bağlantılar sadece size sunulan bağlantılardır. Oysa kullanıcıların görmesi istenmeyen sayfalar da bulunabilir. İşte bu noktada spider parametresiyle, bir domain altında bulunan tüm sayfaları, css dosyalarını ve diğer unsurları kontrol edebilir ve bilgisayarınıza indirebilirsiniz. Bunun için şu komut yeterli olacaktır:

 

wget -r –spider –timeout=20 -D foo.com http://foo.com

Burada –timeout=20 parameresiyle, bir bağlantı, eğer cevap vermezse, kaç saniye sonra yoksayılacağı belirtilmiş.

Bir siteyi indirmek istediğinizde işinize yarayacak bir diğer parametreyse -w. -w ile saniye cinsinden, bir bağlantıdan sonra wget’in bekleyeceği süreyi ayarlayabilirsiniz. Böylelikle, karşıdaki sunucu sizi engellemeden çalışmaya devam edebilirsiniz.

  • Karakter Kodlaması Sorunları: Özellikle Türkçe için karakter kodlaması hala sorun olmaya devam edebiliyor. Eğer indirmek istediğiniz bağlantı Türkçe karakter, boşluk vb. bir karakter içeriyorsa, wget ile dosyayı indirdiğinizde karşılaşacağınız, dosya adına eklenmiş (invalid encoding) ibaresi oldukça can sıkıcı olabilir. Bu durumda, linkteki veya dosya adındaki geçersiz karakterleri wget ile berteraf etmek mümkün.
wget -r -np -nc --restrict-file-names=nocontrol  http://foo.cm/Bu%20Hatal%C4%B1%20Bir%20D%C3%B6k%C3%BCman%20Ad%C4%B1d%C4%B1r.txt

 

 

 

This entry was posted in Linux.

Leave a Reply

Your email address will not be published. Required fields are marked *