Ekşi Sözlük’ten Veri Kazıma – Bir Turizm Başlığı Örneği

4 0
Yaklaşık Okuma Süresi:2 Dakika, 19 Saniye

R programı özellikle istatistik ve veri madenciliği uygulamaları için oldukça gelişmiş seçenekler sunan bir program olma özelliği taşımaktadır. R programı aracılığıyla herhangi bir web sitesinde yer alan sayfalardaki verilerin belirli bir formatta indirilmesi mümkündür.
Bu kapsamda R programı kullanarak, turizm alanında akademik çalışma yapanlar için Ekşi Sözlük örneği üzerinden kısa bir veri madenciliği çalışmasını aktarma niyetindeyim.
Bu yazımda paylaşacağım kodlarla kısa bir süre içerisinde 1422 gönderi, bu gönderileri paylaşan kullanıcı isimleri ve tarihlerden oluşan bir tabloyu birkaç dakika içiresinde indirmeyi anlatmak istiyorum. Aslında veri madenciliği uygulamalarına hakim olmak, R programlama dilinde belirli bir düzeyin üzerinde bilgi birikimine sahip olmayı gerektirmektedir. Hatta veri madenciliği uygulamalarını web siteleri üzerinden gerçekleştirmek kimi zaman API kullanımını, kimi zaman HTML, CSS gibi farklı web programlama dillerini okumayı da içerir. Ayrıca bu sayfada paylaşılan kodlar farklı sitelerdeki farklı verileri elde etmek için doğrudan kullanılamaz. Aşağıda paylaşılan kodlar üzerinde ilgili sayfaya göre değişiklikler yapmak zorunludur. Bu yazımda hangi kısımların nasıl değiştirileceğine sadece kısa metrikler üzerinden değinmek istiyorum. Zira veri madenciliği ve özellikle veri kazıma/çekme işlemleri karmaşık ve can sıkıcı uğraşlar gerektirebilmektedir ve herhangi bir site için tek bir kod veya doğru yol mevcut değildir. Üstelik incelenen sitelerin alt yapılarında, kodlarında yapılacak revizyonlar veri çekme işleminin gerçekleşmesini engelleyebilir. Bazen sitelerin sunucuları verilerin çekilmesine izin vermeyebilir. Belki de en önemlisi bu verilerin kullanımıyla ilgili çeşitli yasal kısıtlar bulunabilir.

Bu hatırlatmaların ardından Ekşi Sözlük’te yer alan 2020 Turizm Krizi adlı başlıktaki 143 sayfada yer alan gönderileri çekmek istiyorum.

Verilerin Çekilmesi
Birinci Adım – Paketlerin Yüklenmesi ve Kütüphanelerin Çağırılması

#Kütüphanelerin çağırılması (Eğer kütüphaneler yüklü değilse, yüklemek gerekir)
library(rlang)
library(rvest)
library(purrr)
library(openxlsx)
library(dplyr)

İkinci Adım – Temel Adresin Tanıtılması

Adresi tanımlarken ? işaretine kadar olan kısmı kendi istediğiniz adres ile değiştirmelisiniz. Değiştirdiğiniz adres de örnekte olduğu gibi (5140567) bir numara ile bitmelidir.

#2023 Turizm Krizi Başlığını En çok beğenilen gönderiden en az beğenilen gönderiye doğru çekmek işlemi
temel_sayfa <- "https://eksisozluk.com/2020-turizm-krizi--5140567?a=nice&p=%d"

Üçüncü Adım – Sayfa Yapısının Tanıtılması

Aşağıdaki kod bloğunda from=1 sayfa 1 den başla, to=143 ise 143. sayfaya kadar sayfaları tara demek. Dolayısıyla siz kendinize uygun şekilde kodları revize etmelisiniz.

map_df(seq(from=1, to=143, by=1), function(i) {
  cat(".")
  syf <- read_html(sprintf(temel_sayfa, i))
  kullanicilar <- html_text(html_nodes(syf,'.entry-author'))
  gonderiler <- html_text(html_nodes(syf,'.content'))
  tarih <- html_text(html_nodes(syf,'.entry-date'))
 data.frame(kullanicilar, gonderiler, tarih, stringsAsFactors = FALSE) })-> eksi_turizm

Verilerin Tabloya Aktarılması

dplyr::glimpse(eksi_turizm)
write.xlsx(eksi_turizm, "eksiveriler.xlsx")

Bu işlemlerin tamamlanmasının ardından Kullanıcı Adı, Gönderi ve Gönderi Tarihinden oluşan üç değişkene sahip bir Excel dosyası elde edilecektir.

Ayrıca indirilen verilerden analizlere devam etmek isterseniz https://app.eniser.info/eksi adresinden Excel verisi yükle kısmını kullanabilirsiniz.

Subscribe
Bildir
guest
0 Yorum
Eskiler
En Yeniler Beğenilenler
Inline Feedbacks
View all comments