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/
Despacito ne demek sorusu, 2017 yılından bu yana milyonları merak ettiren bir sorudur. Luis Fonsi'nin…
Uzun tunik, tesettür modası için vazgeçilmez bir parça olarak günümüzde birçok kadının gardırobunda yer almaktadır.…
OpenAI, yeni nesil yapay zekâ modeli GPT-6 Astra'yı 3 Eylül 2026 tarihinde duyurdu. Yeni model…
Yapay zekâ dünyasında 2026 yılının en önemli satın alma anlaşmalarından biri açıklandı. NVIDIA, Hugging Face'i…
GitHub Copilot kullanan geliştiricilerin model seçim ekranında bugün önemli değişiklikler gerçekleşiyor. GitHub'ın daha önce duyurduğu…
📦 Android’de ücretsiz Evindeki eşyaları saniyeler içinde bul. Dolap Hafızası ile eşyalarını oda, dolap ve…