configR paketi ile R’da konfigürasyon dosyaları yazmak, okumak


Şöyle bir config dosyamız olsun, iki parametremiz var:

[max_allowed_error]
=10

[a]
=10

Bu dosyayı R’da okumak için şöyle yaparız:

library(configr)
#
config <- read.config(file="config.ini")
print(config$max_allowed_error)

Gördüğünüz gibi direkt olarak parametrlerimizi alanımıza çağırdık. Şimdi parametreleri değiştirip config.ini dosyamıza bir daha yazdıralım:

yazilacak_veriler <- list(max_allowed_error =200,a=10)
write.config(yazilacak_veriler,file="config.ini")

Bu durumda config.ini dosyamızı açınca değerlerimiz 200 ve 10 olarak görülecektir.

Bu configR paketi bizi dosya aç, oku gibi işlemler yerine config.ini dosyalarından kolayca okuma yazma yapmamızı sağlar.

INI formatı yerine YAML formatı

Daha pratik olan yaml formatını da kullanabilirsiniz

library(configr)
config <- read.config(file="config.ini",file.type = "yaml")
print(config)

yazilacak_veriler <- list(max_allowed_error =200,starting_id=10)
write.config(yazilacak_veriler,file="config.ini",write.type = "yaml")

Sadece Tek Değişkeni Değiştirikten Sonra Dosyaya Yazmak

Yukarıda her write işleminde tüm değişkenleri yeniden yazmamız gerekirdi, ama aşağıdaki gibi liste parametresini yukarıda tanımlayarak tekli parametre güncellemesinden sonra bunu konfigürasyon dosyasına yazdırabiliriz.

library(configr)

yazilacak_veriler <- list(a=10,b=20)

#ilk yazma
write.config(yazilacak_veriler,file="deneme.yaml",write.type = "yaml",)

config <- read.config(file="deneme.yaml",file.type = "yaml")
print(config)

#sadece tek değişkeni editleme
yazilacak_veriler[['a']] = 10000
write.config(yazilacak_veriler,file="deneme.yaml",write.type = "yaml",)

RCrawler ile Web Crawling İşlemi


Metin madenciliği yapabilmek için elde büyük miktarda verinin olması gereklidir. Bu miktardaki veriyi ancak ya hazır bulmak ya da web scraping adını verdiğimiz yöntemlerle web sayfalarından derlemek durumundayız. Bu durumda ise Python için kullanılacak scrapy, ve python selenium gibi kütüphanelerin yanında R için Rvest ve scrapeR gibi kütüphaneler bulunmaktadır.

R için Rcrawl adlı bir kütüphane daha bulunmaktadır. Bu kütüphaneyi yeni keşfettim. RCrawl kütüphanesinin diğerlerinden temel farkı scraping işleminde sayfa içerisinde scrape edilecek elementlerin yerlerini CSS veya XPath ile belirleme ihtiyacının olmaması. Bu durum sayfa içinde “iğne” arama külfetinden kurtarıyor. Ayrıca çok ama çok daha kısa kod ile scraping yapmayı sağlıyor.

library(Rcrawler)
Rcrawler(Website = "https://www.sayfa_adi.com/lg-mobile", 
                    no_cores = 4, 
                    no_conn = 4, 
                    crawlZoneCSSPat = c("#gridListView",".pagination"))

ASlında sadece web sayfasını parametre olarak versek de crawler sayfaları derlemeye ve bir klasöre atmaya başlıyor. Ancak bu kütüphanenin (şu adresteki https://github.com/salimk/Rcrawler ) dokümantasyonunda gördüğüm çok iyi özellikler var. Bunlardan en önemlisi no_cores ve no_conn parametreleri bu parametreler aynı anda birden fazla scraping bağlantısı ile hızı arttırıyor.

Bu crawler epey agresif. Sayfada bulduğu her bağlantıyı açarak o bağlantıyı ve altındaki bağlantıları da alıyor. Bu durum daha sonra baş edilmesi güç miktarda ilgili ilgisiz verinin gelmesine neden olabilir. Bunu engellemek için crawlZoneCSSPat parametresi mevcut, bu parametre saydada sadece ilgili CSS selectorü ile tanımlı yerdeki linkleri (mesela haber linki, yorumlar vs.) açıyor, sayfadaki diğer ilgisiz linklere izin vermiyor.

Kütüphane dokümantasyonunda ayrıca URL parametresi ile filtreleme, proxy ekleme, sadece belli bir url listesini indirme gibi özelliklerin yanında sayfalar arası bağlantıları network grafiği ile gösterme gibi harika özellikler de mevcut.

Keyifli kullanımlar…