Websitenizin, google aramalarında hangi anahtar kelimenin kaçıncı sırada çıktığını öğrenmek için, sade bir uygulama demosu geliştirelim. Google Api kaynağı ile CURL metodu ile web search sistemini çalıştırıp, JSON formatında dönen listeyi; istenen domainin kaçıncı sırada bulunduğunu bulmak için kullanacağız.
Öncelikle, api ve sorgular için kullanacağımız, GPositionFinder class (sınıf)’ı ve ajax ile bağlantı kurulan post.php dosyasını aşağıda yazıyorum.
post.php
<?php ob_start(); class GPositionFinder { private $_keyword; private $_page; private $_offset = 0; private $_apiUrl = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&amp;amp;hl=tr&amp;amp;lr=tr&amp;amp;rsz=large&amp;amp;q="; private $_referer = "http://demo.serpito.com"; private $_results; private $_position = 0; private $_output; private $_outputMethod = 'json'; private $_liste = array(); private $_htmlist; public function __construct($keyword=null, $page=null) { $this->setKeyword($keyword); $this->setPage($page); } public function setReferer($value) { if ($value) { $this->_referer = $value; return true; } return false; } public function setKeyword($value) { if ($value) { $this->_keyword = urlencode($value); return true; } return false; } public function setPage($value) { if ($value) { $this->_page = basename($value); return true; } return false; } public function setOutputMethod($value) { switch ($value) { case 'json': $this->_outputMethod = 'json'; break; case 'text': $this->_outputMethod = 'text'; break; default: return false; } return true; } public function getPosition() { return $this->_position; } public function getOutput() { return $this->_output; } public function go() { $this->_offset=0; if (!$this->_setApiUrl()) { trigger_error('You must set a valid keyword before calling go().', E_USER_ERROR); } if (!$this->_page) { trigger_error('You must set a valid page to check before calling go().', E_USER_ERROR); } while(!$this->_position &amp;amp;&amp;amp; $this->_offset < 40) { $this->_getNextResultSet(); if (empty($this->_results) || !is_object($this->_results)) { break; } $this->_checkPosition(); } $output = null; switch ($this->_outputMethod) { case 'json': $output = json_encode(array( 'position' => $this->_position, 'keyword' => urldecode($this->_keyword), 'page' => $this->_page )); break; case 'text': $output = "position={$this->_position}&amp;amp;keyword=" . rawurldecode($this->_keyword) . "&amp;amp;page={$this->_page}"; break; } return $this->_output = $output; } public function liste() { $this->_offset=0; if (!$this->_setApiUrl()) { trigger_error('You must set a valid keyword before calling go().', E_USER_ERROR); } if (!$this->_page) { trigger_error('You must set a valid page to check before calling go().', E_USER_ERROR); } $this->_getNextResultSet(); $this->_htmlist="<ul>"; foreach ($this->_results->responseData->results as $key => $result) { if(strpos($result->unescapedUrl , $this->_page) !== false){ $this->_htmlist.="<li class='buu'><a href='".$result->unescapedUrl."'>".$result->unescapedUrl."</a></li>"; }else{ $this->_htmlist.="<li><a href='".$result->unescapedUrl."'>".$result->unescapedUrl."</a></li>"; } } $this->_htmlist.="<ul>"; return $this->_htmlist; } private function _setApiUrl($url=null) { if (!$this->_keyword) { return false; } $this->_apiUrl = $this->_apiUrl.$this->_keyword; return true; } private function _getNextResultSet() { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $this->_apiUrl . "&amp;amp;start={$this->_offset}"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_REFERER, $this->_referer); $body = curl_exec($ch); curl_close($ch); $this->_results = json_decode($body); } private function _checkPosition() { foreach ($this->_results->responseData->results as $key => $result) { if(strpos($result->unescapedUrl , $this->_page) !== false){ $this->_position = $this->_offset + 1; } else { $this->_offset++; } } return; } } function GetDomain($url) { $nowww = ereg_replace('www\.','',$url); $domain = parse_url($nowww); if(!empty($domain["host"])) { return $domain["host"]; } else { return $domain["path"]; } } $url=GetDomain($_POST['url']); $keyword=$_POST['keyword']; $posFinder = new GPositionFinder($keyword, $url); $sonuc=$posFinder->go(); $xml=json_decode($sonuc); ?> <div style="width:99%; padding:5px; border:#060 solid 1px; background:#E2FCE9; margin-bottom:12px; font-size:12px;"> <?php if($xml->position >0){ ?> <strong><a href="http://www.google.com.tr/search?q=<?=urlencode($xml->keyword)?>"><?=$xml->keyword ?></a></strong> aramasında, <span style="font-size:28px;"><?=$xml->position?></span>. sıradasınız <?php }else{ ?> <a href="http://www.google.com.tr/search?q=<?=urlencode($xml->keyword)?>"><?=$xml->keyword ?></a> arama sonuçlarında bulunmuyor.</strong></center> <?php } ?> </div>
Uygulamanın arayüzü ve ajax kodlarının çalıştığı index.php kodları aşağıda:
index.php
<h2><span class="red">G</span>oogle <span class="red">S</span>ıra <span class="red">B</span>ulucu</h2> <form action="" method="post" name="shrt" id="shrt"> <div style="width:99%; margin:0; padding:0; min-height:70px;" align="center"> <input type="text" id="url" class="comment-form-author" value="http://www." placeholder="website URL"/> </div> <div style="width:99%; margin:0; padding:0; min-height:70px;" align="center"> <input type="text" id="keyword" class="comment-form-author" style="width:300px;" placeholder="anahtar kelimeler - keywords..." value=""/> <button type="submit" id="submit" style="cursor:pointer; margin-top:7px; margin-left:35px;">Google Sıralamayı Göster</button> </div> </form> <div style="width:95%; float:left; margin-top:10px; padding:0;" id="response"></div>
Demo ve kaynak kodları aşağıdan bulabilirsiniz.
yazı için teşekkürler. çok arama yapınca google bot muamelesi yapıyor mu?
güzel paylaşım olmuş teşekkürler..
yazı güzel olmuş paylaşım için teşekkürler
Bir sorun var, google reklamlarını da sıralamaya ekliyor. 2 reklam varsa üstte, 1. sıradakini 3. sıra olarak gösteriyor…
Merhaba. Acaba bununla direk sonuçları listeleyebilirmiyiz arama yapmadan.
Yanii direk sayfada
XXX kelimesinde siteniz 5.sırada
XXX kelimesinde siteniz 8.sırada
XXX kelimesinde siteniz 10.sırada
XXX kelimesinde siteniz 48.sırada
gibi listeleyebilirmiyiz.
@Mersin
Dediğiniz olay yapılabilir..Sayfanın url adresini basit php bir kodla alabilirsiniz.Kelime olarak sayfanın başlığını yani titlesini alırsınız.Url ve Title kodlarını sıra bulucu kodlarda gerekli yerlere eklersiniz.Footer kısmına elinizdeki kodları eklersiniz otomatik olarak her sayfanın google sıranızı yazdırırsınız.Mantık yolunu yazdım umarım anlamışsınızdır.
çok teşekkür ederim gerçekten çok yadımcı oldu yazınız
Çok tşkler. Baya yardımcı oldu.
Biz denedik çok başarılı her zaman bekleriz
Çok teşekkür ederiz arkadaşlara ve site sahibi arkadaşa..
Denedim gayet güzel çalışıyor. Google sıra bulucu ile serp sıralamamızı takip edebiliriz. birde listeleme yapsa tadın dan yenmez. geliştirmeniz umuduyla
Bu kodlar 40 sayfa içinde arama yapıyor. Kodun içinde 40 rakkamını 70′ e çıkardığımda daha fazla sayfada sorgulama yapıyor.
Fakat kelime 70’in içinde yok ise
döngü hatası oluşuyor ve sayfa cevap vermiyor.
Daha fozla sayfada arama yapmak için ne yapmalıyız. mesela ilk 100 sayfada
Sizin demo sayfası üzerinde çalışıyor ama localde denediğimde çalışmıyor.
ilk önce ereg_replace te hata verdi ilgili satırı kaldırdım ve değişkenleri yeniden ayarladım ama sonuç bulunamadı diyor.
Oncelikle paylasim icin tesekkurler.
Fakat; ben de ereg_replace hatasi aliyorum. Bunun bir cozumu yok mu hakatten?
Birde volkan arkadasin dedigi gibi 40 haricinde bir rakam girdigimizde sinirsiz donguye giriyor. Daha fazla sayfada arama yapmak istedigimizde ne olacak?
Saygilar…
index.php kodlarında hata var
bu araya yazılacak kodu yazarmısınız?
index.php kodlarında hata var
bu araya yazılacak kodu yazarmısınız?
sıra bulucuyu kendim yapmak istiyorum sanırım google apilerinden yararlanıyoruz bu apiyi nerden bulabiliriz ?
çok güzel bir site. basarılar dileriz.
peki nereye kadar arıyor. mesela 500. sıradaki ni de buluyormu. ben bazı kelimleri yazdım rasgele durmaksızın arıyor. mesela asd yazdım sürekli aradı. buna limit koyulamazmı mesela ilk 300 sıradan sonrasını arama diye.. siteniz mükemmelden de öte. saygılar
çok sağolun, faydalı bilgi
işe yarar makale teşekkürler.
paylaşım için teşekkürler. fakat arada bir post.php de 147. satırda bir hata kodu verior. çözemedim
güzel paylaşım