Skip to the content.

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
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
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

Ö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