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)
-
Script çalısmıyor derken tam olarak hata nedir acaba?
script çalışmıyor.