XPath, web geliştirme alanında veri madenciliği ve web scraping gibi süreçlerde kullanılan oldukça güçlü bir araçtır. XML ve HTML belgelerinde belirli öğelere erişim sağlamak amacıyla kullanılan benzersiz bir dil ve yol ifadesi sistemidir. Bu araç, web geliştiricileri tarafından veri çekme, içerik analizi ve otomasyon gibi çeşitli alanlarda etkili bir şekilde kullanılabilir. W3C tarafından geliştirilen XPath standardı, XML içinde belirli parçaların seçilmesi ve sorgulanması için tasarlanmış olup web geliştiricileri arasında geniş kabul görmektedir.
XPath, web sayfalarında bulunan öğelerin hızlı ve etkili bir şekilde tanımlanmasına yardımcı olur. Belirli bir elemana veya eleman grubuna benzersiz şekilde erişme olanağı sağlayan bu dil, web scraping projelerinin daha düzenli ve güvenilir hale gelmesine destek olur. XPath’in esnek yapısı ve geniş kullanım alanı, çeşitli projelerde ve senaryolarda kolayca uygulanabilme avantajı sunar.
XPath; veri madenciliği, web scraping, otomasyon ve test senaryoları gibi çeşitli alanlarda yaygın bir şekilde tercih edilen bir araçtır. Örnek vermek gerekirse; web geliştiricileri, e-ticaret sitelerindeki ürün fiyatlarını çekmek veya belirli bir sayfadaki içeriği analiz etmek için XPath kullanımına başvurabilir.
XPath, web geliştirme dünyasında benzersiz bir araç olarak kabul görmektedir. Web sayfalarındaki verilere son derece hassas ve hızlı bir şekilde erişim imkanı veren bu güçlü dil, web geliştiricilerinin vazgeçilmez yardımcısıdır. XPath kullanımı, projelerin hem daha güvenli hem de daha verimli bir şekilde tamamlanmasına olanak tanır, böylece geliştiricilere önemli ölçüde zaman tasarrufu sağlar.
XPath, veri kazıma alanında oldukça yetenekli ve pratik bir sorgu dilidir. Python ve JavaScript gibi programlama dillerine kıyasla veri çekmeyi daha basit hale getirir. Bu sayede, bir web sayfasında ihtiyaç duyulan bilgilere hızla ulaşmak mümkündür. XML gibi karmaşık yapılı bir dilde kolayca gezinebilmek için tasarlanmış olan bu araç, sadece XML değil, aynı zamanda HTML içerisindeki tüm verileri de kullanıcıların hizmetine sunar.
İçindekiler
XPath Türleri Nelerdir?
Temel XML kavramlarından biri olan XPath, Python ve JavaScript gibi pek çok programlama dili içerisinde kullanılabilir.
Absolute XPath
Absolute XPath, bir web sayfasındaki belirli bir elemana tam ve kesin yol sağlayan bir tür XPath ifadesidir. Root elemandan (genellikle `<html>` etiketi) başlayarak hedeflenen elemana kadar olan hiyerarşiyi tam olarak belirtir. Bu yol, web sayfasının yapısına ve elemanların yerleşimine bağlı olarak değişebilir. Genellikle daha spesifik ve doğrudan bir yaklaşım gerektiren durumlarda kullanılır. Örneğin, bir form içindeki belirli bir giriş kutusuna veya tablodaki belirli bir hücreye erişmek için kullanılabilir.
Absolute XPath ifadeleri genellikle daha güçsüz olabilir. Çünkü sayfa yapısındaki küçük değişiklikler XPath ifadesini geçersiz kılabilir. Bu nedenle, tercih edilirlik durumu test senaryosuna, web sayfasının dinamik yapısına ve bakım gereksinimlerine göre dikkatlice değerlendirilmelidir. Sonuç olarak, Absolute XPath kullanımı, kesin ve sabit bir yol gerektiğinde faydalıdır. Ancak değişikliklere karşı hassasiyetini göz önünde bulundurmak önemlidir.
Aşağıda yer alan örneklerde olduğu gibi Absolute XPath ifadeleri root elementinden başlayarak hedeflenen elemana tam yol sağlar. Bu şekilde belirtilen XPath ifadeleri, belirli bir web sayfasındaki benzersiz öğelere doğrudan erişim sağlar.
- Sayfa başlığı XPath: `/html/body/div[1]/h1`
- Ana menü bağlantısı XPath: `/html/body/div/header/nav/a[1]`
- Ürün fiyatı XPath: `/html/body/div/main/section/div[2]/div/span`
Relative XPath
Relative XPath, bir web sayfasındaki belirli bir elemana, o elemanın bulunduğu bağlamdan hareketle yol sağlayan bir tür XPath ifadesidir. Root elemandan ziyade mevcut konumdan hedeflenen elemana kadar olan yolu belirtir. Bu tür XPath ifadeleri genellikle daha esnek ve genel kullanıma sahiptir. Çünkü belirli bir konuma bağımlı olmaksızın elemanlara erişim sağlar. Sayfa yapısındaki değişikliklere daha iyi uyum sağlayabilir ve test senaryolarında daha kararlı bir şekilde kullanılabilir.
Örneğin, bir web sayfasında bir butona tıklamak istiyorsanız ve bu butonun yeri sayfa yapısında zaman zaman değişebiliyorsa; Relative XPath ile bu butona ulaşmak daha güvenilir olabilir. Ayrıca, dinamik web uygulamalarında, elemanların sürekli olarak değiştiği durumlarda, Relative XPath kullanımı, elemanları belirlemek ve test senaryolarını yürütmek için daha uygun bir yöntem sunar. Bu, özellikle web otomasyon testlerinde, testlerin bakımını kolaylaştırır ve testlerin daha az kırılgan olmasını sağlar.
Aşağıda paylaşttığımız örneklerde olduğu gibi Relative XPath ifadeleri mevcut bağlamdan hedeflenen elemana doğru esnek bir şekilde yol sağlar. Bu tür XPath ifadeleri sayfa yapısındaki değişikliklere daha iyi uyum sağlayabilir. Böylece, belirli bir konuma bağımlı olmadan elemanlara erişim sağlamak mümkün olabilir.
- İlk bülten bağlantısı XPath: `//div[@class=‘newsletter’]/ul/li[1]/a`
- Ürün listesi bağlantısı XPath: `//div[@class=’products’]/div/div/a`
- Anasayfa slider elemanı XPath: `//div[@id=’slider’]/div[@class=’slide’][1]`
XPath’in Temel Kavramları Nelerdir?
XPath kullanımı sırasında karşınıza çıkabilecek temel kavramlar aşağıda sıralanmıştır.
Node (Düğüm)
XPath ifadelerinde node yani düğüm temel yapı taşlarından biridir. Bir XML belgesinde ya da HTML dokümanında her eleman, bir node olarak adlandırılır. Element nodes, XML veya HTML belgesindeki etiketleri temsil eder. Örneğin, `<div>`, `<p>`, `<a>` gibi elementler birer element node’dur. Text nodes ise metinsel içeriği temsil eder. Örneğin, bir elementin içindeki metinsel değerler text node olarak adlandırılır.
Node’lar, XPath ifadelerinde belirli elementlere erişmek, filtrelemek veya işlem yapmak amacıyla kullanılır. XPath ile belirli bir node’a erişmek için doğru yol ifadesi (path expression) kullanılmalıdır. Ancak bu sayede belirlenmiş olan node’a ulaşmak mümkün olur. Bu kavramlar, XPath’in XML veya HTML dokümanları üzerinde hedeflenen elementlere erişiminde temel bir role sahiptir.
Attribute
Attribute, bir XML veya HTML belgesindeki elementlere atanmış olan özellikleri temsil eder. Bu özellikler elementlerin niteliklerini belirtir ve genellikle key-value çiftleri olarak tanımlanır. Örnek olarak, bir `<a>` (link) elementinin `href` özniteliği, o linkin hedef URL’sini belirtir.
XPath’te özniteliklere erişmek için kullanılan syntax (sözdizimi) şu şekildedir:
“`plaintext element[@attribute=‘value’] “`Bu kapsamda; `element` belirli bir elementi temsil ederken, `attribute` o elementin özniteliğini ve `value` ise bu özniteliğin değerini ifade eder. Örneğin, bir `<img>` elementinin `alt` özniteliğine erişmek için kullanılabilecek XPath ifadesi şu şekildedir:
“`plaintext //img[@alt=’Örnek Resim’] “`Bu XPath ifadesi kullanılarak `alt` özniteliği değeri “Örnek Resim” olan tüm `<img>` elementlerine erişilebilir. Öznitelikler, XPath’in belirli elementlere daha spesifik bir şekilde erişim sağlayabilmesine ve belirli özelliklere sahip elementleri filtreleyebilmesine yardımcı olur.
Parent
XPath ifadelerinde belirli bir elementin üst ya da üzerinde bulunan doğrudan bir üst elemanı ifade eder. Parent kavramı, belirli bir elementin hiyerarşik olarak üstünde yer alan elemente erişimi sağlar. XPath’te parent ebeveyni temsil etmek için `..` sembolü kullanılır. Parent kavramı, XPath’in belirli bir elementin konumunu veya ilişkisini belirlemesi sürecinde son derece önemli bir rol üstlenerek hiyerarşik yapılar içerisinde kolayca gezinmeyi sağlar.
Child
Child, XPath ifadelerinde belirli bir Parent elementin içinde yer alan ve aynı seyiyeye sahip diğer elementleri ifade eder. Child kavramı, belirli bir elementin hiyerarşik olarak altındaki doğrudan bir alt elemana erişimi sağlar.