Web sayfalarını parse etmek istediğimizde internette bir çok kaynak mevcut. Fakat bunu daha kolay olarak yapmak için geliştirilen Html Agility Pack ile dakikalar içerisinde istediğiniz web sayfasını parse etmeniz mümkün. Bunun için yeni bir Windows Application oluşturup Nuget Package Manager HtmlAgilityPack paketini projemize referans olarak eklememiz gerekiyor. Tabi siz ben dll olarak eklemek istiyorum diyor iseniz buradan indirip referans olarak ekleyebilirsiniz.
Parse etmek istediğimiz sayfayı belirledikten sonra, sayfa içerisinde hangi bilgiyi parsing ile almak istediğimizi de belirlemeliyiz. Ben bu örnekte http://www.mobiletisim.com/haberler/ sayfasında başlıkların listesini alacak şekilde kodlarımı yazacağım.
Sayfasının kaynak koduna baktığımızda başlıkların a etiketi içerisinde class=”haberbas” olarak belirtildiğini görüyoruz. Bizim program içerisinde sadece yapmamız gereken bu alanı belirtmek.
Şimdi forma tıklayarak aşağıdaki kodu içerisine yazalım.
Uri url = new Uri("http://www.mobiletisim.com/haberler/");
WebClient client = new WebClient();
string html = client.DownloadString(url); // html kodları indiriyoruz.
HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
document.LoadHtml(html); // html kodlarını bir HtmlDocment nesnesine yüklüyoruz.
HtmlNodeCollection titles = document.DocumentNode.SelectNodes("//a[@class='haberbas']"); // a etiketlerinin içerisinden class haberbas olanları seçiyoruz.
foreach (var title in titles)
{
listBox1.Items.Add(title.InnerText); // aldığımız bu bölümlerini listbox'a ekliyoruz.
}
Kod satırlanın sonuna açıklamalarını eklediğim için tekrar açıklamayacağım. Ama burada asıl önemli olan şey hangi etiketin hangi özellikte olduğunu bilmeniz. Mesela html kodunda class olan özellik id şeklinde de olabilirdi.
