XPath Nedir ? Web Sitelerinde Nasıl Kullanabiliriz?

XPath, XML içeresinde yer alan belli kısımları seçmek veya sorgulamak amacı ile programlama dillerinden bağımsız olarak W3C tarafından geliştirilmiş bir standarttır. Bu yazımda da sizlere hem genel olarak XPath hakkında bilgi verip hem de örnek birkaç kod yazacağım.

Yazıya başlamadan belirteyim şuana kadar XPath hem C# tarafında hem de browser üzerinde sık sık kullandım fakat en başta belirttiğim gibi XPath programlama dillerinden bağımsız olması sebebi ile diller arasında ufak farklılıklar olabilir örneğin web üzerinde çift tırnak (“) kullanıyorken C# tarafında  tek tırnak () kullanılıyor.

Web sitesinden istediğimiz kısımları çekmek amacı ile kullanacağımız XPath dom üzerinde çalışmakta ve dom elemanlarını seçmemize imkan sunmaktadır. Bu noktada örnekler ile ilerleyelim.

  1.  HTML Etiket Seçmek

Örneğin bir web sitesinde yer alan tüm div elamanlarını seçmek isteyelim, bunun için kodumuz;

artık sitede dom üzerindeki tüm div etiketlerini seçtik, fakat genelde bu şekilde sitede ki tüm elamanları seçmek yerine belli özelliklere sahip HTML etiketlerini seçmek isteriz.

2. HTML Etiketleri Özelliklere Göre Seçmek

Bir web sitesinde ki tüm divleri değilde sadece belli bir özelliğe sahip olanı seçelim. Bunun için class name, id, og:name,style gibi özellikleri kullanabiliriz.

Örneklerde 3 farklı özelliğe sahip div nasıl seçilir onu gösterdim, bir div hem id hem de class name ‘e sahip olabilir, yazarken burada istediğiniz özelliği kullanabilirsiniz, benim şahsi tecrübemden yola çıkarak eğer çekmek istediğiniz alanda id mevcut ise onu kullanmanız. Çünkü ilerleyen süreçte site içeresinde aynı class ile yeni kısımlar eklenebilir ama id sayfada bir tane olmak zorunda.

3. XPath ile Child Seçimi

Bir div altında yer alan P etiketini seçmek isteyelim, bunun için tek yapmamız gereken div tanımından sonra // ekleyerek P etiket özelliklerini yazmak. Örneğin ;

artık bir div için deki tüm P etiketlerini seçtim ama ben div için de yer alan tek bir P etiketini seçmek istiyorum, o zaman ;

artık div içeresinde yer alana title class name’e sahip olan P etiketini seçtim.

4. Ardışık XPath Yazımı

Bir sitede sadece X yerini çekmek istemeyebilirsiniz bu yüzden ardışık XPath yazmak gerekiyor, bunun için de tek yapılması gereken | işaretini kullanmak.

5. XPath Dizi Kullanımı

Sitede aynı class name ile iki adet HTML etiketi olduğunu düşünelim ve bunlardan sadece birini seçmek istiyorsunuz, bu noktada diziler özelliğini kullanabilirsiniz.

Bu örnekte shortTitle özelliğine sahip 2. elemanı seçtik, çünkü diziler 0’dan başlıyor. 

6. XPath ile Belirli Bir Text Seçme

Sitede bir text bulmak istediğiniz  zaman ise aşağıdaki kodu kullanabilirsiniz.

 

Chrome Üzerinde XPath Yazalım

Tarayıcı üzerinde direkt XPath yazabilirsiniz, bunun için yapmanız gereken istediğiniz internet sitesini açtıktan sonra Ctrl + Shift + C ile veya sayfaya sağ tıklayıp incele diyerek Chrome Developer Tools’u açmanız.

Örneğin ben kendi sitemin blog başlıkları kısmını seçtim, siz de bu yöntem ile istediğiniz sayfada test edebilirsiniz.

Soru 1 : XPath Doğru Fakat İçerik Gelmiyor

Bazı internet siteleri içeriklerin kopyalanmasını engellemek amacı ile XPath ve benzeri yöntemleri bloklayabiliyorlar, bu yüzden her siteden mutlaka XPath ile içerik çekebileceğinizi söyleyemem.

Ayrıca son dönemlerde oldukça popüler olan client side rendering internet sitelerinde de içerikleri çekebilmeniz için sayfanın tamamen yüklenmesini beklemeniz gerekmekte.

Özet

XPath en baştada belirttiğim gibi dil bağımsız XML içeresinde sorgulama yapmamızı sağlayan bir standart. Bu yazıda en temel XPath komutlarını ve genel olarak mantığından bahsetmeye çalıştım, çok daha ileri seviye sorgular yapmak isterseniz W3Schools sitesinde ki bu dokümantasyonu inceleyebilirsiniz.

Ayrıca Web Teknolojileri ile ilgili daha önce ürettiğim tüm içeriklere buraya tıklayarak ulaşabilirsiniz.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir