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:
//titlebelgedeki hertitleelemanı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/@hrefbağlantı hedeflerini döndürür. - Koşullar: Kare parantezler sonuçları filtreler, böylece
//div[@class="price"]yalnızca o sınıfa sahipdivelemanları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()vestarts-with(): Alt dize eşleştirme.normalize-space()vestring-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.