Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir eğitmen tarafından sunulan otomasyon konulu bir eğitim dersidir. Eğitmen, Visual Studio platformunda Winform uygulaması oluşturarak HTML Agent Pack kütüphanesinin kullanımını adım adım göstermektedir.
- Video, web sayfalarından veri çekme tekniklerini anlatmaktadır. İlk olarak HTML Agent Pack ve Selenium kütüphanelerinin tanıtımı yapılır, ardından "select single node" ve "select node" arasındaki farklar, XPath kavramı ve kullanımı detaylı şekilde gösterilir. Eğitmen, haber sitesinden son dakika haberlerini çekme örneği üzerinden HTML dokümanlarını nasıl işleyebileceğimizi, class isimlerine göre veri çekme, foreach döngüsü kullanımı ve tarih/resim URL'lerini alma gibi konuları kod örnekleriyle açıklar.
- Videoda ayrıca Selenium kullanarak HTML elementlerini bulma, attribute'ları alma ve verileri işleme teknikleri gösterilmektedir. Bazı sitelerde ayak ile yüklenen resimlerin çekilmesinde yaşanan zorluklar ve bunların çözüm yolları da ele alınmaktadır. Video, bir sonraki derslerde C ile bot yazımı ve sitelerden veri çekme konularının işleneceği bilgisiyle sonlanmaktadır.
- Otomasyonlu Ders Tanıtımı
- İlk dersimizde kütüphaneler ve kullanılacak araçlar hakkında bilgilendirme yapılacak.
- Yazılım dilini yazacağımız platform Visual Studio olacak ve community edition versiyonu yeterli olacaktır.
- Proje olarak bir WinForm uygulaması oluşturulacak ve Windows Application sürümü varsayılan olarak 4.7.2 olarak geçecek.
- 00:50Kullanılacak Kütüphaneler
- Otomasyon için iki kütüphane kullanılacak: Selenium Driver ve HTML Agent Pack.
- HTML Agent Pack ile sadece web sitesindeki veriyi alabilirsiniz, örneğin uzman kiraladığınız işleri, projeleri, bütçe, proje adı, kısa açıklama ve bütçesini çekebilirsiniz.
- Sayfa geçişleri için HTML Agent Pack, özel durumlar için ise Selenium kullanmak gerekecektir.
- 02:48Otomasyon Sistemi
- Otomasyon sistemi, manuel işlemleri otomatize yapmamızı sağlayan bir sistemdir.
- Örneğin, siteye üye girişi yaparak projeleri listeleme gibi işlemler otomasyonla gerçekleştirilebilir.
- Varsayım olarak herhangi bir haber sitesinde son dakika haberlerini çekmek için HTML Agent Pack kullanılabilir.
- 04:06Proje Oluşturma
- İlk etapta "Haber Sitesi Botu" adında bir form oluşturulacak.
- Bot, birçok sitede kullanılan bir terimdir ve WordPress botu, Twitter bot hesap oluşturucu gibi projeler Selenium ile yazılabilir.
- Selenium ile otomatik tweet atma, profil fotoğrafı yükleme gibi işlemler yapılabilir.
- 06:17Kütüphane Ekleme ve Arayüz Tasarımı
- HTML Agent Pack kütüphanesi projeye eklenecek ve projeye sağ tıklayıp Manage NuGet Packages'a girilerek kurulacaktır.
- Arayüz için site adresi, textbox ve buton eklenecek, butonun adı "btnContents" ve "Haberleri Getir" olarak ayarlanacak.
- URL textbox'a yapıştırılacak ve butona tıklandığında bu adresten veri çekilecek.
- 08:57HTML Agent Pack Kullanımı
- HTML Agent Pack'ın üç kullanım şekli vardır: from file (HTML dosyası üzerinden), string olarak (yazı olarak) ve web adresinden.
- Web adresinden veri çekmek için "HtmlWeb" sınıfı kullanılacak ve "Load" metodu ile adres ve metot bilgileri girilecek.
- Proxy ve network credential gibi ek bilgiler de gerekirse kullanılabilir.
- 12:00Veri Çekme ve Sınıf Oluşturma
- Çekilen HTML belgesinde "hbLastNews" adında bir class ve altında "hbInbox" adında div'ler bulunuyor.
- Her haber için "hbInbox" div'i içinde saat, resim ve içerik bulunuyor.
- Verileri daha kolay yönetebilmek için "Haberler" adında bir sınıf oluşturulacak ve bu sınıfta haber başlığı, açıklama, resim adresi ve saat bilgileri tutulacak.
- 14:58Dökümandan Veri Çekme Yöntemleri
- "Document note select single note" ve "select note" arasındaki fark, "select single node" ile sadece ilk eşleşen değeri alırken, "select note" ile tüm eşleşen değerleri alır.
- Döküman ağacında erişmek istediğimiz nesnenin konumunu belirtmek için XPath ifadesi kullanılır.
- XPath yazarken, nesnenin tipini biliyorsak belirtmek faydalı olur, bilmiyorsak yıldız işareti kullanabiliriz.
- 20:43XPath Kullanımı ve Doğrulama
- XPath yazarken, nesnenin class'ını belirtmek için köşeli parantez içinde "ads class" ve tek tırnak içinde class ismi yazılır.
- XPath kodunun doğruluğunu kontrol etmek için "Crop" adlı eklenti kullanılabilir.
- XPath ile 95 tane "hb inbox" elementi bulunmuştur.
- 21:43Döngü ile Veri Çekme
- "Node" ifadesi HTML node collection verir ve bu collection içinde foreach döngüsü ile dolaşılabilir.
- Her bir "hb inbox" elementinin içinden "hb in time" class'ına sahip element seçilerek tarih bilgisi alınabilir.
- Elementin altında arama yapmak için XPath ifadesine nokta işareti konulmalıdır.
- 25:15Resim Bilgilerini Çekme
- Resim bilgilerini çekmek için "hb image" altındaki "src" özelliği kullanılabilir.
- Resim linkini almak için "a" etiketinin "href" özelliği de kullanılabilir.
- 26:05HTML'den Veri Çekme
- HV image'in altındaki ağ ve image etiketlerinden src değerini almak için "src" attribute'ı kullanılıyor.
- İndeksleme sıfırdan başladığı için href ve title attribute'ları indeksleme ile bulunabilir, ancak isme göre gitmek daha faydalı olabilir.
- HTML aktivit add collection'dan value değerini almak için "value" attribute'ı kullanılıyor.
- 27:26Haber Verilerini Çekme
- Haberin içeriği için "hb in content" altındaki "hb in title" attribute'ı kullanılıyor.
- Haberin linki için "a class:bettle" etiketinin href attribute'ı alınıyor.
- Haberin açıklaması için "hb in content" altındaki paragrafın innertext'i kullanılıyor.
- 32:30Veri Çekme Sorunları
- Ders programı çalıştırıldığında "haber taytlı nesne değeri boş olamaz" hatası alınıyor.
- Hata, bazı haberlerin resimlerinin yüklenmemiş olması nedeniyle oluşuyor.
- Ayak ile yüklenen sitelerde HTML pack ile veri çekme sorunları yaşanabilir.
- 41:52Çözüm Arayışı
- HTML pack'ta "loot from browser" özelliği eklenmiş olsa da sorun çözülmemiş.
- Tarayıcının içinde açıyormuş gibi yapan özellik de sorunu çözmüyor.
- Bu tür sitelerde veri çekmek için Selenium gibi araçlar kullanılması gerekiyor.