İçeriğe geç
SEO

R Dili ile Site Haritası Tarama ve XPath Veri Çekimi

Yayın tarihi 6 Eylül 2026 Yazar Kerem Kırbıyık 3 dk okuma
R programlama dili ile XML site haritası ayrıştırma ve XPath veri kazıma mimarisi şeması

Büyük web sitelerinde ve e-ticaret portallarında sayfaların başlık (title), meta açıklama, H1 ve kanonik (canonical) etiketlerini denetlemek için harici araçların yanı sıra veri bilimi dillerinden de yararlanılabilir. İstatistiksel veri analizi dili R, xml2 ve rvest paketleri ile birleştiğinde XML site haritasındaki URL listesini ayrıştıran ve XPath ile DOM’u denetleyen pratik bir teknik SEO betiğine dönüşür.

R dili ile XML site haritası ayrıştırma (Sitemap Parsing) ve kontrollü XPath veri çekimi adımları aşağıda açıklanmaktadır.


1. Gerekli R Paketlerinin Kurulumu

RStudio konsolunda veri manipülasyonu ve HTML ayrıştırma için gerekli kütüphaneleri yükleyin:

install.packages(c("xml2", "rvest", "tidyverse"))
  • xml2: XML ve HTML ağaçlarını okumak için.
  • rvest: XPath ve CSS seçicileriyle DOM’dan veri çekmek için.
  • tidyverse: Veri tablolarını (Tibble / DataFrame) filtrelemek ve işlemek için.

2. XML Site Haritasından URL’leri Çekme

Aşağıdaki R kodu, doğrudan sayfa adreslerini içeren bir sitemap.xml dosyasını indirip içindeki <loc> ve <lastmod> değerlerini veri tablosuna dönüştürür:

library(xml2)
library(tidyverse)

# Not: sitemap-index.xml kullanılıyorsa önce alt sitemap URL'leri ayrıştırılmalıdır.
sitemap_url <- "https://seobify.com/sitemap.xml"

# XML dosyasını oku
sitemap_xml <- read_xml(sitemap_url)

# XML isim alanını (namespace) tanımla
urls <- xml_find_all(sitemap_xml, ".//d1:loc", xml_ns(sitemap_xml)) %>% xml_text()
lastmods <- xml_find_all(sitemap_xml, ".//d1:lastmod", xml_ns(sitemap_xml)) %>% xml_text()

sitemap_df <- tibble(
  URL = urls,
  LastModified = if(length(lastmods) == length(urls)) lastmods else NA
)

print(paste("Toplam Keşfedilen URL Sayısı:", nrow(sitemap_df)))
head(sitemap_df)

3. XPath ile Her Sayfadan Title, H1 ve Canonical Kazıma

Site haritasından elde edilen URL listesine tek tek istek atıp XPath ile SEO etiketlerini çeken fonksiyon:

library(rvest)

scrape_seo_tags <- function(target_url) {
  tryCatch({
    page <- read_html(target_url)
    
    title <- page %>% html_node(xpath = "//title") %>% html_text() %>% str_trim()
    h1 <- page %>% html_node(xpath = "//h1") %>% html_text() %>% str_trim()
    canonical <- page %>% html_node(xpath = "//link[@rel='canonical']") %>% html_attr("href")
    meta_desc <- page %>% html_node(xpath = "//meta[@name='description']") %>% html_attr("content")
    
    return(tibble(
      URL = target_url,
      Title = ifelse(is.na(title), "EKSİK", title),
      H1 = ifelse(is.na(h1), "EKSİK", h1),
      Canonical = ifelse(is.na(canonical), "EKSİK", canonical),
      MetaDescription = ifelse(is.na(meta_desc), "EKSİK", meta_desc),
      Status = "200 OK"
    ))
  }, error = function(e) {
    return(tibble(URL = target_url, Title = NA, H1 = NA, Canonical = NA, MetaDescription = NA, Status = "HATA"))
  })
}

# İlk 10 sayfayı test amaçlı tara
audit_results <- map_dfr(sitemap_df$URL[1:10], scrape_seo_tags)
print(audit_results)

4. Eksik ve Hatalı Etiketlerin R ile Raporlanması

# H1 etiketi eksik veya başlığı 60 karakterden uzun sayfaları filtrele
broken_pages <- audit_results %>%
  filter(H1 == "EKSİK" | nchar(Title) > 60 | Canonical == "EKSİK")

write_csv(broken_pages, "seo_hatali_sayfalar_raporu.csv")

Sıkça Sorulan Sorular

R ile tarama yaparken sunucuyu kilitlememek için ne yapılmalıdır?

İsteklerin arasına Sys.sleep(0.5) gecikmesi eklenmeli veya polite paketi kullanılarak sunucunun robots.txt kurallarına ve tarama hız sınırlarına saygı gösterilmelidir.

Sayfalar JavaScript ile render ediliyorsa R ile kazınabilir mi?

Saf rvest yalnızca sunucudan dönen statik HTML’i okur. İstemcide çalışan React/Vue sayfaları için R’da chromote veya seleniumPipes paketleriyle Chromium motoru tetiklenmelidir.


Stratejik Sonuç

R dili ile otomatik sitemap taraması ve XPath veri çekimi, kurumsal web projelerinde teknik SEO denetimlerini tamamen kodlanabilir ve tekrarlanabilir bir otomasyona dönüştürür. İleri düzey teknik SEO süreçleri için SEO danışmanlığı çözümlerimizi inceleyin.

İlgili Yazılar

Daha kapsamlı destek için: SEO Danışmanlığı hizmetimize göz atın.

Bu yazı faydalı oldu mu?