ASP.NET ile Google sonuçlarını Html Parse etmek ve Arama Merkezi yapmak |
||||||||||||||||||||||||
Google sonuçlarını Html parse etmek sanıldığından daha basit bir iş. Tek yapmamız gereken Google sonuçlarını parse etmek için kullanışlı bir API (kütüphane) kullanmak
ve ASP.NET'de Google sonuçlarını Html formatında almak için .NET HttpWebRequest nesnesinden yararlanmak.
Ayrıca bu API ve HttpWebRequest nesnesini kullanarak basit bir arama merkezi yapabiliriz. Uygulamamızda Google'dan gelen sonuçları
seçeneklere göre ayarlayacağız. Uygulamanın çalışır haline
asp.net-ile-google-arama-merkezi
linkinden ya da aşağıdaki resimden bakabilirsiniz:
![]() Google'dan gelen sonuçları Html parse edeceğimiz için kullacağımız API HtmlAgilityPack olacak. HtmlAgilityPack kütüphanesini asp-net-html-parser-htmlagilitypack linkinden indirin. Ardından aşağıdaki resimde gösrerildiği gibi web projenizin App_Code klasörüne HtmlAgilityPack kütüphanesini ekleyin: ![]() Şimdi projemize yeni bir .aspx sayfası ekeyelim (mesela googlearama.aspx) ve arama parametreleni kullanıcıdan almak için aşağıdaki gibi asp.net sunucu kontrollerini ekleyelim: <form id="form1" runat="server"> <div> Aranacak Kelime : <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:Button ID="Button1" runat="server" Text="ara" onclick="Button1_Click" /> <br /> <br /> Aranacak seçenkleri : <asp:CheckBoxList ID="CheckBoxList1" runat="server"> <asp:ListItem Selected="True"> English </asp:ListItem> <asp:ListItem> Türkçe </asp:ListItem> </asp:CheckBoxList> Sonuç Sayısı : <asp:DropDownList ID="DropDownList1" runat="server"> <asp:ListItem Value="10"> 10 </asp:ListItem> <asp:ListItem Value="20"> 20 </asp:ListItem> <asp:ListItem Value="30"> 30 </asp:ListItem> <asp:ListItem Value="40"> 40 </asp:ListItem> <asp:ListItem Value="50"> 50 </asp:ListItem> </asp:DropDownList> <br /> <br /> <asp:Label ID="Label1" runat="server" Text=""></asp:Label> </div> </form>Kullanıcadan parametreleri aldıktan sonra sunucu tarafında Google.com ile bağlantı kurup arama sonuçlarını alacağız ve Html parse edeceğiz. Tabii bunun için sayfaya bazı isim uzaylarını eklememiz gerek: using System.Net; // HttpWebRequest objesini kullanmak için using System.IO; // Stream işlemleri için using HtmlAgilityPack; // Html parse için using System.Text; // Encoding (karakter kodlamak için)Şimdu Google arama merkezinin asıl işini yapacak kodlarını ekleyelim. Her satırı yorumlayarak açıkça anlatmaya çalıştım. googlearama.aspx sayfasında ara buttonuna click olayını eklemiştik. Bu olayın fonksiyonunu yazacağız. Aşağıdaki kodun uzunluğuna aldanmayın. Asıl işi yapan satırlar 10'u geçmez. Codebehind (googlearama.aspx.cs) dosyasına ekleyeceğimiz c sharp kodumuz: protected void Button1_Click(object sender, EventArgs e) { Uri ur = null ; Label1.Text = ""; // Bu kısımda sonuçları google.com'den alıyoruz // English seçeneğinin check edip edilmediğini kontrol ediyoruz. if (CheckBoxList1.Items[0].Selected) { // Google'a yollayacağımız sorguyu hazırlıyoruz string google = "http://www.google.com/search?num="+DropDownList1.SelectedValue+"&q="; // Aranacak kelimeyi sorguya ekliyoruz ur = new Uri(google + TextBox1.Text); // Burada hazırladığımız soruguyu Google'a yolluyoruz HttpWebRequest istek = (HttpWebRequest)WebRequest.Create(ur); // Google'dan gelen cevabı alıyoruz HttpWebResponse cevap = (HttpWebResponse)istek.GetResponse(); // Google'dan gelen cevabı encode edereken karakter sorununun // önüne geçmek için gelen cevabın karaktersetine göre ayarlıyoruz. Encoding cevapKodlama = Encoding.GetEncoding(cevap.CharacterSet); // Google cevabını özel encode ayarıyla birikte okuyoruz. StreamReader akis = new StreamReader(cevap.GetResponseStream(), cevapKodlama); // Burada Google'dan aldığımız html sunucunu string olarak kaydediyoruz. string html = akis.ReadToEnd(); // Bu kısımda Google'dan aldığımız sonucu html parse ediyoruz. // Html parse ederken C SHARP HtmkAgilityPack API'sinden yararlanıyoruz. HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(html); // Google'dan dönen linkler class özniteliği r olan h3 elemanların içinde saklanıyor. // Google bunu değiştirene kadar böyle yapacağız. HtmlNodeCollection linkler = doc.DocumentNode.SelectNodes("//h3[@class='r']"); // Label nesnemize sonuçları (linkleri) teker teker ekliyoruz. Label1.Text += "Results in English :<br />"; // saymayı unutmamak için int i = 1; try { foreach (HtmlNode link in linkler) { if (i == Convert.ToInt32(DropDownList1.SelectedValue) + 1) break; Label1.Text += (i++) + " - " + (link.InnerHtml + "<br />"); } Label1.Text += "<br /><br />"; } catch (Exception exp) { Label1.Text += "<font color=\"red\"> Sonuç bulunamadı ! </font> <br /><br />"; } } // Bu kısmın üstekinden tek farkı sonuçların google.com.tr'den alınması, diğer herşey aynı. // Türkçe seçeneğinin check edip edilmediğini kontrol ediyoruz. if (CheckBoxList1.Items[1].Selected) { string google = "http://www.google.com.tr/search?num=" + DropDownList1.SelectedValue + "&q="; ur = new Uri(google + TextBox1.Text); HttpWebRequest istek = (HttpWebRequest)WebRequest.Create(ur); HttpWebResponse cevap = (HttpWebResponse)istek.GetResponse(); Encoding cevapKodlama = Encoding.GetEncoding(cevap.CharacterSet); StreamReader akis = new StreamReader(cevap.GetResponseStream(), cevapKodlama); string html = akis.ReadToEnd(); HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(html); HtmlNodeCollection linkler = doc.DocumentNode.SelectNodes("//h3[@class='r']"); int i = 1; Label1.Text += "Türkçe Sonuçlar : <br />"; try { foreach (HtmlNode link in linkler) { if (i == Convert.ToInt32(DropDownList1.SelectedValue) + 1) break; Label1.Text += (i++) + " - " + (link.InnerHtml + "<br />"); } Label1.Text += "<br /><br />"; } catch (Exception exp) { Label1.Text += "<font color=\"red\"> Sonuç bulunamadı ! </font> <br /><br />"; } } }Asp.net ile Google sonuçlarını html parse etme uygulamasını bitirdik. Bu uygulumayı değiştirerek kendi ihtiyaçlarını doğrultusunda yararlanabilirsiniz. Mesela Html parse ettiğimiz linkler içinde kendi sitenizin ismini arayarak kaçıncı sırada olduğunu bulabilirsiniz. Görsellik katmak amacıyla Ajax ile bu uygulamayı donatmak daha çekici kılacaktır uygulamayı. Fakat sizden ricam eğer bu yazıdan yararlanıp bir yazı yazacak olursanız bu kaynağı belirtmeniz. Uygulamanın kodlarını asp.net-google-arama-merkezi-uygulaması linkinden indirebilirsiniz. Umarım yazı sizlere faydalı olmuştur. |
||||||||||||||||||||||||
|
||||||||||||||||||||||||
|
May 2013 (1)
July 2010 (1)
April 2010 (4)
March 2010 (1)
February 2010 (3)
December 2009 (2)
November 2009 (1)
October 2009 (4)
September 2009 (16)
August 2009 (21)
July 2009 (4)
July 2010 (1)
April 2010 (4)
March 2010 (1)
February 2010 (3)
December 2009 (2)
November 2009 (1)
October 2009 (4)
September 2009 (16)
August 2009 (21)
July 2009 (4)
Sitenizin arama motorl ..
Jquery ile çek bırak R ..
Mysql veritabanında St ..
ASP.NET ile Google son ..
PHP 5 ile OOP ( Object ..
Mysql View Kullanımı
Web programlamayla ilg ..
Jquery ile dinamik tab ..
ASP.NET'de sunucu kont ..
FireFox User Agent Swi ..
Jquery ile çek bırak R ..
Mysql veritabanında St ..
ASP.NET ile Google son ..
PHP 5 ile OOP ( Object ..
Mysql View Kullanımı
Web programlamayla ilg ..
Jquery ile dinamik tab ..
ASP.NET'de sunucu kont ..
FireFox User Agent Swi ..
Etiketler
| Button | Class | Class-oluşturma | Command-prompt | Css | Div | Hareket | Hareketli | Httpreferer | Ip | Java | Java-se | Jquery | Nesne-tabanlı | Netbeans | Object-oriented | Oop | Php | Programlama | Session | Sınıf | Site-haritası | Sitemap | Style | Url | Visitorip | Visitors | Ziyaret |arama
Loading
sosyal




