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/
Giysi dünyasında hiçbir parça hareketi etek kadar görünür kılmaz. Pantolon bacağı sarar, elbise bütünü örter.…
Yolda kalmak, sürücüler için en stresli durumlardan biridir. Özellikle şehir dışında ya da gece saatlerinde…
Gulcaninmufftagi.com, toplu yemek üretimi ve catering hizmetlerinde lezzeti, hijyeni ve güveni bir araya getiren profesyonel…
BMW ve Mercedes yedek parça sektöründe güvenilir hizmet anlayışıyla öne çıkan Demakoto.com, kullanıcı deneyimini geliştirmek…
SQL Server 2025 Çıktı! İşte Yapay Zeka ile Gelen Dev Yenilikler 🤖 Microsoft Ignite 2024…
Veritabanı dünyasına ilk adım attığınızda mutlaka duyacağınız bir isim var: Microsoft SQL Server! Eğer ekranınızda…