C# Html Agility Pack Kullanımı - Bot Yazma
C# Html Agility Pack Kullanımı – Bot Yazma
Arkadaşlar herkese merhaba,
Bu yazımızda sizlerle birlikte C# ile Visual Studio da Web sayfalarından istediğimiz tabloları, resimleri, yani kısacası web sayfalarının tüm içeriğini nasıl parse edebiliriz bunun üzerine konuşucağız.
Öncelikle arkadaşlar temel yöntem ve kodları göstermeye çalışıcağım istediğiniz içeriği bu yöntemle deneyerek araştırarak kendinizi geliştirerek çekebilirsiniz unutmayın. Kullanacağımız kütüphane Html Agility Pack kütüphanesidir. Bu kütüphane ile istediğiniz içeriği kolayca çekebilirsiniz.Bir tane örnek proje yapalım ve kütüphanenin nimetlerinden faydalanalım.Hadi Başlayalım.
string link = "http://emreakkaya.com.tr/"; //link değişkenine çekeceğimiz web sayafasının linkini yazıyoruz.
Uri url = new Uri(link); //Uri tipinde değişeken linkimizi veriyoruz.
WebClient client = new WebClient(); // webclient nesnesini kullanıyoruz bağlanmak için.
client.Encoding = Encoding.UTF8; //türkçe karakter sorunu yapmaması için encoding utf8 yapıyoruz.
string html = client.DownloadString(url); // siteye bağlanıp tüm sayfanın html içeriğini çekiyoruz.
HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument(); //kütüphanemizi kullanıp htmldocument oluşturuyoruz.
document.LoadHtml(html);//documunt değişkeninin html ine çektiğimiz htmli veriyoruz
var secilenhtml = @"//*[@id=""categories-3""]/ul"; // veriyi çekeceğimiz div alanı kategori listesi xpath adresi
StringBuilder st = new StringBuilder(); //veriyi atacağımız stringbuilder
var secilenHtmlList = document.DocumentNode.SelectNodes(secilenhtml); //selectnodes methoduyla verdiğimiz xpathin htmlini getiriyoruz.
foreach (secilenHtmlList'teki var öğeler)
{
foreach (var innerItem in items.SelectNodes("li"))//her ul un içindeki li de dön
{
foreach (var item in innerItem.SelectNodes("a//span")) // her li nin içindeki a elementinin altındaki spanlarda dön
{
var classValue = item.Attributes["class"] == null ? null : item.Attributes["class"].Value;//spanların value su null değilse classvalue değişkenine at.Burdaki amaç ikinci classtaki sayı değerini almamak.Sadece kategori adını alma
if (classValue == "category-text")//class değeri category-text olanları al
{
st.AppendLine(item.InnerText); // gelen değeri ekle ve bir altsatıra geç v
}
}
}
}
txtResults.Text = st.ToString();//textboxa tüm değerleri yaz Evet arkadaşlar Html Agility Pack ile veri çekmek ve bunları istediğiniz şekilde dizayn etmek tamamen sizin hayal güzücünüze kalmış, küçük formlar hazırlayarak bu kütüphaneyi kullanma becerinizi geliştirebilirsiniz. Sağlıcakla kalın…
İlginizi çekebilecek bir konu ; https://www.erkeklernedio.com/
OpenAI, uzun süredir birçok production uygulamasının temelinde kullanılan GPT-4o ve GPT-4.1 ailesindeki belirli API modellerini…
OpenAI, 6 Ekim 2026 tarihinde geliştiriciler için yeni Decisions API hizmetini public beta olarak kullanıma…
OpenAI, GPT-6.1 Sol için en hızlı API çalışma katmanı olan Ultrafast modunu genel kullanıma açtı.…
Çemişgezek Rehberi Google Play’de yayında. Dolap Hafızası ile başladığım bağımsız Android uygulama geliştirme yolculuğunda bu…
OpenAI, GPT-6 model ailesini GPT-6 Sol ve GPT-6 Luna ile genişletti. 22 Eylül 2026 tarihinde…
Marketten eve geldiniz, aldığınız ürünü dolaba yerleştirirken aynı üründen evde zaten iki tane daha olduğunu…