• 25-02-2014, 17:57:34
    #1
    Merhabalar,
    C# ile google sıra bulucu aracı yapmak istiyorum nasıl ayarlayabilirim acaba ?
  • 26-02-2014, 00:27:58
    #2
    uzun 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;
            }
  • 28-02-2014, 23:30:56
    #3
    yok mu hiç bilen ?
  • 28-02-2014, 23:57:38
    #4
    kodun doğruysa

    int I = GetPosition(newUri, txtKeyword.Text);

    buradaki satır sana veriyor kaçıncı olduğunu..
    mesela şu şekilde gösterebilirsin yukardaki satırdaki kodun hemen altına

    MessageBox.Show("Sıra: " + I.ToString() );
  • 01-03-2014, 00:03:51
    #5
    Bugun bende baktım google apileri kullanıbilir.Ama ingilizce sonuçları listeliyordu.Biraz karıştırırsan sonuçları çekerken numaralandırıp sırabulucu yapabilirsin
  • 01-03-2014, 01:42:45
    #6
    ertan2002 adlı üyeden alıntı: mesajı görüntüle
    kodun doğruysa

    int I = GetPosition(newUri, txtKeyword.Text);

    buradaki satır sana veriyor kaçıncı olduğunu..
    mesela şu şekilde gösterebilirsin yukardaki satırdaki kodun hemen altına

    MessageBox.Show("Sıra: " + I.ToString() );
    Evet hocam onuda denedim ama hep 0 olarak dönüyor projeyi göndermemi istermisiniz incelerseniz çok sevinirim.
    Misafir adlı üyeden alıntı: mesajı görüntüle
    Bugun bende baktım google apileri kullanıbilir.Ama ingilizce sonuçları listeliyordu.Biraz karıştırırsan sonuçları çekerken numaralandırıp sırabulucu yapabilirsin
    apiler genel olarak asp.net ve php olarak. Ayrıca kendi google hesabından arama yapıyorsun günlük limiti var hocam :/
  • 01-03-2014, 13:06:31
    #7
    projeyi 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:43
    #8
    https://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:41
    #9
    VoyL adlı üyeden alıntı: mesajı görüntüle
    https://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.
    teşekkürler hocam birşey farkettim bazı domainleri aramıyor r10 hepsine sonuç veriyor ama çoğu sitede sonuç vermiyor sizce neden olabilir.