Merhaba arkadaşlar, bu yazımda selenium ile bir web sayfasına girip oradaki bir veriyi nasıl okuyoruz onu anlatacağım.
Önceki yazımda Selenium bot nasıl kurulur ve çalıştırılır anlatmıştım. Bu yazımda ise bir veriyi nasıl okuruz bunu anlatacağım. Bunun için kendi sayfamı kullanıp kendi sayfamdaki makale başlıklarını nasıl çekeriz buna bakacağız.
Önceki yazıma buradan ulaşabilirsiniz.
Önceki proje üzerinden aynen devam edip SayfadanVerileriAl adında bir metot oluşturuyorum. Bu metot içerisinde element yakalamak için kullanılan driver.FindElement metotunu kullanacağım.
driver.FindElement(By.XPath(“”));
Kırmızı olarak işaretlediğim kısım neye göre element bulacağınızı göstermektedir. Burada ClassName, Name ve Id gibi farklı yollar da kullanabilirsiniz. Peki ama bu Xpath nedir?
XPATH: Aslında Path yol demektir. Biz başlıkları alacağımız için, başlığın bir yolunu bu metot içerisine vermemiz gerekmektedir. Bunun için başlığı seçip farenin sağ tıkına basıp denetle-öğeyi denetle-incele seçeneklerine girelim.(F12 de kullanılabilir)
Karşımıza aşağıdaki gibi bir ekran gelecektir. Buradan kopyalaya gelip Xpath’i seçiyoruz
Buradan kopyaladığımız kod aşağıdaki gibi olacaktır.
/html/body/div[1]/div[2]/div[1]/main/div/article[1]/div/header/h1/a
Bunu Xpath içerisine yazıyoruz ve Text’ini istiyoruz. Text özelliği bize bir string döndürdüğü için bunu da bir string tipinde değişkene atıyorum.
string baslik = driver.FindElement(By.XPath(“/html/body/div[1]/div[2]/div[1]/main/div/article[1]/div/header/h1/a”)).Text;
Bu bize sadece bir tane başlığı verecektir.
ikinci başlık için de aynı şekilde Xpath’i alalım.
/html/body/div[1]/div[2]/div[1]/main/div/article[2]/div/header/h1/a
bir de ikinci sıradan bir başlığın xpath’ini alıyorum.
/html/body/div[1]/div[2]/div[1]/main/div/article[6]/div/header/h1/a
Şimdi dikkat etti iseniz sadece kırmızı ile işaretlediğim kısım değişiyor diğer kısımlar sabit.
Bunu bir for içerisine alırsak ve sadece işaretlediğim kısmı değiştirirsek bir sayfadaki tüm başlıkları bulmuş oluruz.
Tüm kodlar ise aşağıdaki gibidir.
public class Bot { IWebDriver driver; public void SayfayaGiris() { // Chrome driver yolu ChromeDriverService service = ChromeDriverService.CreateDefaultService(@"C:/Program Files/Google/Chrome"); service.HideCommandPromptWindow = true; driver = new ChromeDriver(service); //driver nesnesi türetme driver.Navigate().GoToUrl("https:\\muhammeddincer.com"); // gidilecek sayfa SayfadanVerileriAl(); } private void SayfadanVerileriAl() { try { for (int i = 1; i <= 9; i++) { string baslik = driver.FindElement(By.XPath("/html/body/div[1]/div[2]/div[1]/main/div/article["+i+"]/div/header/h1/a")).Text; Console.WriteLine(baslik); } } catch (Exception ex) { throw ex; } } }