XPath Test Aracı

Belgeniz ve ifadeniz bu tarayıcıda kalır.

En fazla 1.000.000 karakterlik XML veya HTML yapıştırın. Değerlendirme bu tarayıcıda XPath 1.0 ile yapılır.

Mutlak veya göreli XPath 1.0 ifadesi. Belgede bildirilen önekler otomatik olarak kaydedilir; varsayılan ad alanı d öneki altında kullanılabilir.

Canlı bir deneme ortamınız yoksa scraping veya XSLT için XPath yazmak deneme yanılmaya dönüşür. Bu test aracı bir panele XML veya HTML’inizi, diğerine ifadenizi alır, XPath 1.0’ı tarayıcınızın kendi motoruyla değerlendirir ve eşleşen her düğümü türü, öznitelikleri, metin içeriği ve serileştirilmiş işaretlemesiyle listeler. count(//book) gibi skaler ifadeler değerini doğrudan döndürür; belgede bildirilen ad alanı önekleri sizin için otomatik kaydedilir. Her şey tarayıcınızda çalışır: belge hiçbir zaman yüklenmez.

Bir XPath ifadesi nasıl test edilir

  1. 1

    XML veya HTML yapıştırın

    Otomatik algılama, bir HTML doctype'ı veya HTML kök öğesi gördüğünde esnek HTML ayrıştırmaya geçer; XML veya HTML modunu kendiniz de zorlayabilirsiniz.

  2. 2

    XPath'inizi girin

    Mutlak (`/library/book`) veya göreli (`//div[@class='card']`), herhangi bir XPath 1.0 ifadesi.

  3. 3

    Değerlendirin

    Sorguyu tarayıcınızın XPath motoru yerel olarak çalıştırır; hiçbir şey bir sunucuya gönderilmez.

  4. 4

    Sonuçları inceleyin

    Her eşleşme düğüm türünü, öznitelikleri, kırpılmış metni ve serileştirilmiş işaretlemeyi gösterir; en fazla 200 eşleşme listelenir.

XPath 1.0’ın temelleri

İfade Neyi eşleştirir
/books/book Kök <books> öğesinin <book> çocukları
//book Belgenin herhangi bir yerindeki her <book>
//book[@id='42'] id özniteliği 42 olan <book> öğeleri
//book[1] Her üst öğedeki ilk <book> (belgedeki değil)
(//book)[1] Tüm belgedeki ilk <book>
//book[title='1984'] <title> metni “1984” olan <book> öğeleri
//book/@id Tüm <book> öğelerinin id öznitelikleri
//book[position() > 1] İlki dışındaki tüm <book> öğeleri
//book[last()] Her üst öğedeki son <book>

Skaler ifadeler de çalışır: count(//book) bir sayı, string(//title) bir dize, boolean(//book[@id]) doğru veya yanlış döndürür. Test aracı bu değerleri düğüm listesi yerine doğrudan gösterir.

child dışındaki yaygın eksenler

  • ancestor::, tüm atalar
  • following-sibling::, geçerli düğümden sonraki kardeşler
  • preceding-sibling::, öncekiler
  • descendant::, tüm alt düğümler
  • attribute:: (kısaltması @), geçerli düğümün öznitelikleri
  • parent:: (kısaltması ..), üst öğe

HTML’nin tuhaflıkları

HTML katı XML değildir; bu yüzden test aracı onu katı XML ayrıştırıcısı yerine tarayıcınızın HTML ayrıştırıcısıyla esnek biçimde ayrıştırır. HTML modu <!DOCTYPE html> veya <html> kök öğesinden otomatik algılanır; belge modu seçicisiyle iki moddan birini zorlayabilirsiniz. HTML modunda etiket ve öznitelik adları küçük harfe çevrilir, bu yüzden XPath’inizi küçük harfle yazın: //DIV[@CLASS] değil, //div[@class].

Ad alanları

Ad alanı içeren XML, öneklerin kaydedilmesini gerektirir:

<rss xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <item>
    <content:encoded>...</content:encoded>
  </item>
</rss>

Test aracı belgeyi xmlns bildirimleri için tarar ve her öneki otomatik kaydeder; böylece //content:encoded doğrudan çalışır. Varsayılan ad alanının (yalın xmlns="...") belgede öneki yoktur; bu yüzden test aracı onu d önekine bağlar: varsayılan ad alanı kullanan bir akıştaki <item> öğelerini //d:item ile seçin. Kayıtlı ad alanları sonuçların yanında listelenir.

Bu test aracının değerlendirmediği şeyler

Tarayıcılar, çoğu scraping aracının kullandığı lehçe olan XPath 1.0’ı değerlendirir. XPath 2.0 ve sonrasına ait matches(string, regex), tokenize(string, delimiter), for ... return ifadeleri ve dizi operatörleri gibi özellikler bunun parçası değildir; onları XSLT 2.0/3.0 araç zincirlerinde bulursunuz. Web scraping için en taşınabilir seçenek hâlâ XPath 1.0’dır.

Test ipuçları

  • Geniş başlayın, daraltın. Önce //div, sonra //div[@class], en sonunda sınıfın tam değeri.
  • Ad alanı bildirimlerini kontrol edin. “XPath’im neden hiçbir şey döndürmüyor?” hatalarının çoğu ad alanlarından kaynaklanır; kayıtlı ad alanları listesine bakın.
  • Büyük/küçük harfe dikkat edin. XML büyük/küçük harfe duyarlıdır. HTML modu adları küçük harfe çevirir.
  • Metin çıkarırken string() deneyin. İç içe işaretleme olduğunda //p/text() ile string(//p) farklı sonuç verir.

Sık Sorulan Sorular

Hayır, yalnızca XPath. Çoğu tarayıcı ikisini de destekler: document.querySelectorAll (CSS) ve document.evaluate (XPath). Görev için hangisi daha netse onu kullanın.

HTML ayrıştırması etiket ve öznitelik adlarını küçük harfe çevirir. XPath’inizin küçük harf kullandığından emin olun: //DIV[@CLASS] değil, //div[@class]. Modu da kontrol edin: özensiz HTML üzerinde XML’i zorlamak ayrıştırma hatasıyla sonuçlanır; HTML modu ise onu esnek biçimde ayrıştırır.

Belgede bildirilen önekler ifadeniz için otomatik kaydedilir. Varsayılan ad alanı d önekine bağlanır; böylece //d:item, varsayılan ad alanlı bir belgedeki <item> öğelerini seçer. Etkin bağlamalar sonuçlarla birlikte listelenir.

Hayır. Belge ve ifade, tarayıcınızın kendi XPath motoru tarafından değerlendirilir; sunucumuza gönderilmez, saklanmaz ve sayfa adresine eklenmez. Yalnızca bu tarayıcı oturumunda tutulurlar; böylece çok adımlı görünüm sonuçlarınızı gösterebilir.

İlgili Araçlar