Merhabalar,
C# ile google sıra bulucu aracı yapmak istiyorum nasıl ayarlayabilirim acaba ?
C# ile Google Sıra Bulucu
8
●2.575
- 26-02-2014, 00:27:58uzun araştırmalarım sonucu aşağıdaki kodları buldum hata almadan çalıştırdım fakat kaçınca sırada olduğumun çıktısını alamadım yardım ederseniz birlikte bulsak çok sevinirim.
private void btnSubmit_Click_Click(object sender, EventArgs e) { string strUrl = txtUrl.Text; Uri newUri = new Uri("http://www.yahoo.com"); int I = GetPosition(newUri, txtKeyword.Text); } public static int GetPosition(Uri url, string searchTerm) { string raw = "http://www.google.com.tr/search?num=39&q={0}&btnG=Search"; string search = string.Format(raw, HttpUtility.UrlEncode(searchTerm)); 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, url); } } } private static int FindPosition(string html, Uri url) { //string lookup = "(<a href=\")(\\w+[a-zA-Z0-9.-?=/]*)\" class=l"; string lookup = "(<h3 class=\"r\"><a href=\")(\\w+[a-zA-Z0-9.\\-?=/]*)"; MatchCollection matches = Regex.Matches(html, lookup); for (int i = 0; i < matches.Count; i++) { string match = matches[i].Groups[2].Value; if (match.Contains(url.Host)) return i + 1; } return 0; } - 01-03-2014, 01:42:45Evet hocam onuda denedim ama hep 0 olarak dönüyorertan2002 adlı üyeden alıntı: mesajı görüntüle
projeyi göndermemi istermisiniz incelerseniz çok sevinirim.
apiler genel olarak asp.net ve php olarak. Ayrıca kendi google hesabından arama yapıyorsun günlük limiti var hocam :/Misafir adlı üyeden alıntı: mesajı görüntüle - 01-03-2014, 13:06:31projeyi inceleyecek zamanım yok hocam maalesef, zaten windows kullanmıyorum. eğer 0 dönüyorsa kodlarında bir sıkıntı var, programın bazı yerlerine break pointler koyarak değişkenleri takip ederek, dönen değerlerden bir şeyler çıkarabilirsin belki..
regex kullanmak yerine html agility pack kullanıp google sonuçlarını divler şeklinde alarak sıralamayı daha kolay bulabilirsin.
ayrıca çekmiş olduğun get her zaman doğru sonucu vermez, çünkü google belli bir süre sonra banlar ip yi. bunun yerine en mantıklısı google search api sini kullanmaktır. belirli bir sorgulamaya kadar ücretsiz, ondan sonra kredi kartı onayı istiyorlar, eğer çok daha fazla ise sorgular, makul bir ücretle bu işi yapabilirsin. (google search için %100 emin değilim ama maps sorgulamada işleyiş bu)
edit: google api nin asp.net olması önemli değil, c#*a kullanabilrisin.. vardır örnekleri internette..
kolay gelsin - 01-03-2014, 13:49:43https://www.google.com.tr/search?num...#q=kus&start=0
start=0 yazan yer ilk sayfa. kaç sayfa arayacaksan 10ar 10ar arttırıp her birine request atabilirsin. start=10 2.sayfa start=20 3. sayfa gibi.
kus yazdığım yer de aradığın şey. daha sonra geriye sayfa verilerine bakmak kalıyor. örneğin;
webmaster forumu yazdım aradım 3.sırada r10 var. sayfanın kaynağında
<h3 class="r"><a href="
bu değerlerden bölme yaparsan sayfa kaynağında, 3. sırada r10 un olduğunu görürsün hocam. regex bilmem ben bana kolay gelen yöntemi kullanırım her zaman. böyle bulabilirsin.
http://speedyshare.com/2MGuY/GoogleSearch1.rar üzerinde oynadım azıcık sonuçta istediğin şeyi verdi buyur. - 01-03-2014, 16:41:41teşekkürler hocam birşey farkettim bazı domainleri aramıyor r10 hepsine sonuç veriyor ama çoğu sitede sonuç vermiyor sizce neden olabilir.VoyL adlı üyeden alıntı: mesajı görüntüle
projeyi göndermemi istermisiniz incelerseniz çok sevinirim.