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
- RStudio ve ChatGPT ile Büyük SEO Veri Kümelerini Kümeleme
- Semrush Kullanım Rehberi: Anahtar Kelime ve Rakip Denetimi
- Canonical Etiketi Kullanımı: Yinelenen İçerik ve URL Yönetimi
- Ahrefs Kullanımı: İleri Düzey SEO ve Rakip Analizi Rehberi
- Screaming Frog SEO Spider: İleri Düzey Tarama ve Analiz Rehberi
Daha kapsamlı destek için: SEO Danışmanlığı hizmetimize göz atın.