XPath (XML Path Language), bir XML belgesinin parçalarını adresleme ve seçme için W3C ifade dilidir ve HTML'yi de gezinebilir. Tanımlayıcı özelliği, //a/@href gibi, belge ağacında elemanlara, niteliklere veya metne ulaşmak için yürüyen yol ifadesidir. Scrapy gibi kazıma araçları, indirilen sayfalardan veri çekmek için XPath'i destekler.

Mevcut sürüm olan XPath 3.1, 21 Mart 2017'de W3C Tavsiyesi haline geldi. XML üzerinde çalışır ve bu sürümde JSON verilerini de destekler.

XPath Söz Dizimi Temelleri

  • Yol: //title belgedeki her title elemanını seçer.
  • Metin: //title/text() bu elemanların içindeki metni döndürür.
  • Nitelikler: @ bir niteliği seçer, böylece //a/@href bağlantı hedeflerini döndürür.
  • Koşullar: Kare parantezler sonuçları filtreler, böylece //div[@class="price"] yalnızca o sınıfa sahip div elemanlarını tutar.

Web Kazıma'da XPath

Scrapy seçicileri hem XPath hem de CSS'i kabul eder ve Scrapy, CSS sorgularını dahili olarak cssselect kütüphanesini kullanarak XPath'e çevirir. Seçicileri, arka planda lxml kütüphanesini kullanır. Tarayıcılarda, XPath, XPathExpression arayüzü aracılığıyla HTML ve SVG belgelerinin DOM'unu gezinebilir; bu, querySelectorAll() gibi yöntemlere alternatif olarak kullanılabilir.

XPath Fonksiyonları ve XSLT

XPath, XSLT gibi bir ana dilin içine yerleştirilmek üzere tasarlanmıştır. W3C, XPath, XQuery ve XSLT için fn ad alanında bir fonksiyon kütüphanesi tanımlar. Kazıma için yararlı olan fonksiyonlar şunlardır:

  • contains() ve starts-with(): Alt dize eşleştirme.
  • normalize-space() ve string-length(): Dize değerleri üzerinde çalışır.
  • count(): Öğeleri sayar.

Örneğin, //a[contains(@href, "product")] yalnızca URL'si "product" içeren bağlantıları tutar.

İlgili Terimler