icon Blog

Asp.Net Mvc ile Google Sıra Bulucu Yapımı

Asp.net Mvc ile Google de kaçıncı sırada olduğumuzu bulmak aslında o kadar da zor bir olay değil.

Google sıra bulucuyu hazırlamak için yapmamız gerekenleri aşağıda tek tek yazdım.Umarım faydalı bir döküman olmuştur.

Controller sayfamıza 

public ActionResult GoogleSiraBulma()

{

       return View();

}

Ekliyoruz ve bu Action Resultumuza View tanımlıyoruz.
Ben view sayfasını kendime göre tasarladım. Siz istediğiniz gibi değiştirebilirsiniz.

View sayfamıza aşağıda verdiğim kodları yapıştırıyoruz.

@using (Ajax.BeginForm(new AjaxOptions() { HttpMethod = "POST", OnSuccess = "Success" }))

{

<div class="row">

    <div class="main-content span10">

        <h3>Google arama sonuçlarında, web sitenizin seçtiğiniz anahtar kelimede, kaçıncı sayfa ve sırada olduğunu öğrenebilirsiniz.</h3>        

        <fieldset>

 

            <table width="600" border="0">

                <tr>

                    <td width="150" height="25">Aradığınız Kelime</td>

                    <td width="10">:</td>

                    <td><input type="text" name="Keywords" id="Keywords" /></td>

                </tr>

                <tr>

                    <td height="25">Web Sitesi</td>

                    <td width="10">:</td>

                    <td><input type="text" name="WebSitesi" id="WebSitesi" /></td>

                </tr>

                <tr>

                    <td height="25">Aranacak Web Sitesi</td>

                    <td width="10">:</td>

                    <td><select name="Site" id="Site">

    <option value="google.com.tr">google.com.tr</option>

    <option value="google.com">google.com</option>

</select></td>

                </tr>

                <tr>

                    <td height="25">Sayfa</td>

                    <td width="10">:</td>

                    <td><select name="Sayfa" id="Sayfa">

    <option value="0">1-10(1 Sayfa)</option>

    <option value="5">1-50(5 Sayfa)</option>

    <option value="10">1-100(10 Sayfa)</option>

    <option value="20">1-200(20 Sayfa)</option>

    <option value="30">1-300(30 Sayfa)</option>

    <option value="40">1-400(40 Sayfa)</option>

    <option value="50">1-500(50 Sayfa)</option>

</select></td>

                </tr>

                <tr>

                    <td height="25" colspan="3"></td>

                </tr>

                <tr>

                    <td height="25" colspan="3"><input type="submit" value="<< Arama Yap >>" class="submit" /></td>

                </tr>

                <tr>

                    <td height="25"></td>

                    <td width="10"></td>

                    <td>@Html.Raw(ViewBag.Sonuc)</td>

                </tr>

            </table>

 

        </fieldset>

    </div>

</div>

Sonrasında yine controller sayfamıza 

        [HttpPost]

        public ActionResult GoogleSiraBulma(FormCollection frm)

        {

            if (ModelState.IsValid)

            {

                string WebSitesi = Request.Form["WebSitesi"].ToString().TrimEnd('/');

                string SearchUri = "www." + Request.Form["Site"].ToString();

 

                string Keywords = Request.Form["Keywords"].ToString();

                string Sayfa = Request.Form["Sayfa"].ToString();

 

                int Sonucumuz = GetPosition(SearchUri, WebSitesi, Keywords, Sayfa);

 

                ViewBag.Sonuc = "<br /><p style=\"font-size:16px;color:Green;font-weight:bold;\">Web siteniz aranan kelimede toplamda <b>" + Sonucumuz + "</b> kez bulundu.</p>";

            }

            return View();

        }

Yukarıda verdiğim kodları yazıyoruz.

Ve son olarak;

        public static int GetPosition(string SearchUrl, string AranacakSite, string Keywords, string Sayfa)

        {

            string raw = "https://" + SearchUrl + "/search?num=" + Sayfa + "&q=" + Keywords + "&btnG=Search#q=" + Keywords + "&start=" + Sayfa + "";

            string search = string.Format(raw, HttpUtility.UrlEncode(Keywords));

 

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(search);

            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())

            {

                using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.ASCII))

                {

                    string html = reader.ReadToEnd();

                    return FindPosition(html, AranacakSite);

                }

            }

        }

        private static int FindPosition(string html, string url)

        {

            //string lookup = "(<a href=\")(\\w+[a-zA-Z0-9.-?=/]*)\" class=l";

            string lookup = "(<h3 class=\"r\"><a href=\"/url\\?q=)(\\w+[a-zA-Z0-9.\\-?=/:]*)";

            MatchCollection matches = Regex.Matches(html, lookup);

            bool DurumKontrol = false;

            int say = 0;

            for (int i = 0; i < matches.Count; i++)

            {

                string match = matches[i].Groups[2].Value;

                DurumKontrol = match.Contains(url);

                if (DurumKontrol == true)

                {

                    say++;

                }

            }

            return say;

        }

Yukarıda ki kodları yazdığınız zaman controller sayfamıza problem olmadan google de kaçıncı sırada olduğunuzu bulabilecek bir scripti hazırlamış oluyorsunuz.


Yorumlar (2)

  1. Image

    script çalışmıyor.

  2. Image

    Script çalısmıyor derken tam olarak hata nedir acaba?



Yorum Yaz