Linux Komut Satırı Yardımı İle Veri Toplama
Bu sunum sırasında bir siteden döviz kurlarını çekme örneği, bir sitedeki bazı fotoğrafların indirilmesi örneği, bir eticaret sitesinden bazı ürün fiyatlarının çekilmesi örnekleri yapıldı.
Video: Linux Komut Satırı Yardımı İle Veri Toplama
Öğrendiğimiz Komutlar
Komut | Açıklama |
---|---|
mkdir |
Klasör oluşturur |
cd |
Klasör değiştirir |
ls |
Klasördeki dosyaları listeler |
mv |
Dosyaları başka bir hedefe taşır. Dosya adı değiştirmek için de kullanılır |
wget |
Bir internet sayfasının kaynak kodunu indirir. Dosya ise, dosyayı indirir |
cat |
Dosya içeriğini ekrana gösterir |
grep |
Dosya içinden istediğimiz satırları süzer |
sed |
Dosya içinden istediğimiz ifadeyi bir diğer ifade ile değiştirir |
wc |
Dosyanın satır, kelime ve harf sayısını verir |
tr |
Karakter silme veya değiştirme işini yapar |
head |
Dosyanın sadece ilk N satırının alınmasını sağlar |
cut |
Dosya içeriğini belirli ayıraçlara göre böler ve istenilen sutunları alır |
rm |
Dosya ve dizin siler |
paste |
Birden fazla dosyayı YAN YANA birleştirip tek dosya yapar |
crontab |
Sistemin belirli zamanlarda belirli komutları çalıştırmasını sağlar |
seq |
İstenilen aralıkta sayı üretir |
xargs |
Bir önceki komutun her bir çıktısını almak ve kullanmak işlevini görür |
ÖRNEK 1; Döviz Kurlarını çekme
wget -O kur.txt https://kur.doviz.com/serbest-piyasa
cat kur.txt | tr -d '\r' | tr -d '\n' | sed "s|</table>|\n\n|g" | sed "s/<tr/\n\n<tr/g" | grep "time" | sed -e 's/<[^>]*>/\t/g' | tr -s ' ' | cut -f 6,9,11,19 | tr '\t' ';' > kurlar.txt
ÖRNEK 2; eTicaret Sitesinden ürün adı ve fiyatlarını çekme
wget -O 1.txt https://www.migros.com.tr/ariel-b-35f/camasir-yikama-c-86
cat 1.txt | grep "data-product-name" | sed $'s/data-product-name/\\\nXXX/g' | grep "XXX" | cut -d \" -f 2 > AD.txt
cat 1.txt | grep "data-monitor-name" | sed $'s/data-monitor-price/\\\nXXX/g' | grep "XXX" | cut -d \" -f 2 > FIYAT.txt
paste FIYAT.txt AD.txt
ÖRNEK 3; Duvarkağıdı sitesinden resim indirme
wget -O 1.txt https://www.hdwallpapers.in/flowers-desktop-wallpapers/page/1
cat 1.txt | grep "t1.jpg" | cut -d \" -f 2 | sed "s|/thumbs|https://www.hdwallpapers.in/thumbs|g" | sed "s/t1.jpg/t2.jpg/g" > resimler.txt
wget -i resimler.txt
- Bu komut (1)
SON=$(cat 1.txt | grep "t1.jpg" | cut -d \" -f 2 | sed "s|/thumbs|https://www.hdwallpapers.in/thumbs|g" | sed "s/t1.jpg/t2.jpg/g")
echo $SON
# 123
seq $SON | xargs -I{} wget https://www.hdwallpapers.in/flowers-desktop-wallpapers/{} >>toplu.txt
- ve bu komut (2)
seq $(cat 1.txt | grep "t1.jpg" | cut -d \" -f 2 | sed "s|/thumbs|https://www.hdwallpapers.in/thumbs|g" | sed "s/t1.jpg/t2.jpg/g") | xargs -I{} wget https://www.hdwallpapers.in/flowers-desktop-wallpapers/{} >>toplu.txt
- aynı işlevi görür. İkisi de bir siteden fotoğrafları indirip toplu.txt adlı dosyaya yazma işini yapar.
seq 123
yazmak ile bu iki komut arasındaki fark ise bu iki komuttan birini yazdığımızda internet sitesine yeni bir sayfa eklendiği durumda yazdığımız komut bu değişimi otomatik olarak algılar.
ÖRNEK 4; Duvarkağıdı sitesinden resim indirme (Paralel Görev)
33 Sayfadaki resimlerin 15 koldan paralel zamanlı çalışma ile indirilmesi örneği
seq 1 33 | xargs -P 15 -I{} wget -q -O {}.html https://www.hdwallpapers.in/flowers-desktop-wallpapers/page/{}
cat *.html > TOPLU.txt
cat TOPLU.txt | grep "t1.jpg" | cut -d \" -f 2 | sed "s|/thumbs|https://www.hdwallpapers.in/thumbs|g" | sed "s/t1.jpg/t2.jpg/g" > resimler.txt
cat resimler.txt | xargs -P 15 -I{} wget -q {}
Ref: https://github.com/nuriakman/PHP-Egitimi/blob/master/konular/linux.video.1.md
Herhangi bir siteyi indirip çevrimdışı görüntüleyebilmek için:
wget --mirror --convert-links --adjust-extension --page-requisites --no-parent https://aybu.edu.tr/insaatmuh/
--mirror – İndirme işlemini tekrarlanan hale getirir (diğer şeylerin yanı sıra)
--convert-links – Tüm bağlantıları (ayrıca CSS stil sayfaları gibi şeylere) göreceli hale getirir, böylece çevrimdışı görüntüleme için uygun olacaktır
--adjust-extension – İçerik türlerine bağlı olarak dosya adlarına (html veya css) uygun uzantılar ekler
--page-requisites – Sayfayı çevrimdışı olarak düzgün bir şekilde görüntülemek için gereken CSS stil sayfaları ve resimler gibi şeyleri indirir
--no-parent – Yineleme yaparken üst dizine yükselmeyin. İndirmeyi sitenin yalnızca bir bölümüyle sınırlamak için kullanılır
Alternatif olarak, yukarıdaki komut saşağıdaki gibi kısaltılabilir:
wget -mkEpnp http://example.org
Not: Komutun sonundaki p, np (–no parent) nin bir parçasıdır ve bu nedenle komutta iki kez p görürsünüz.
Ref: https://www.guyrutenberg.com/2014/05/02/make-offline-mirror-of-a-site-using-wget/
Ekstra Not: Aynı işlevi gören iki farklı seq
kullanımı
seq 10 | xargs -I{} wget -O {}.txt site.com/{}.txt
seq 10 | xargs -I{} wget site.com/{}.txt > {}.txt