selenium C#

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?

 

selenium element bulma yöntemleri

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)

selenium veri okuma

Karşımıza aşağıdaki gibi bir ekran gelecektir. Buradan kopyalaya gelip Xpath’i seçiyoruz

selenium xpath bulma

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.

selenium ile sayfadaki başlıkları alma

 

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;
            }
        }
    }

 

Bunlara Göz Atmak İsteyebilirsiniz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir