Witam
Wykorzystałem gotowy skrypt znaleziony gdzieś na internecie do sprawdzania pozycji strony na zadaną frazę.
Zwraca ze fraza strony flash znajduje się na 6 pozycji, co nie jest prawdą, bo prawidłowa pozycja to 2.
Zatem błąd tkwi w wynikach zwróconych przez curla, wie ktoś może dlaczego ?
Poniżej trochę kodu:
$adres_strony = 'http://'.$_GET['strona'].'';
$fraza = $_GET['fraza'];
//$wyszukiwarka = $row_slowa_kluczowe['searcher'];
$pos = 0;
$done = false;
$found = false;
$page_limit = 50;
//wykonajmy skrypt sprawdzanai pozycji
for ($page = 0; $page < $page_limit; $page += 10)
{
$ch = curl_init();
curl_setopt
($ch, CURLOPT_URL
, 'http://www.google.pl/search?hl=pl&source=hp&q='.urlencode($fraza).'&start='.$page); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, 'www.google.pl');
curl_setopt
($ch, CURLOPT_HTTPHEADER
, array ( "Host: www.google.pl",
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; pl-PL; rv:1.8.1.24pre) Gecko/20100228 K-Meleon/1.5.4",
"Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5",
"Accept-Language: pl,en-us;q=0.7,en;q=0.3",
"Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7",
"Keep-Alive: 300",
"Connection: keep-alive",
"Referer: www.google.pl"
));
$response = curl_exec($ch);
curl_close($ch);
preg_match_all("/<h3 class=r><a[^>]+href=\"([^\"]+)\"[^>]*>/", $response, $out);
foreach ($out[1] as $serp)
{
if (!strstr($serp, 'google.pl')) {
$pos++;
if ($serp == $url)
{
$done = true;
$found = true;
break;
}
else
{
$found = false;
if ($page == ($page_limit - 10))
{
break;
}
}
}
}
if ($done)
{
break;
}
// losowy czas pomiedzy kolejnymi zapytaniami
}
if ($found)
{
echo '<br />'.$adres_strony.' - '. $fraza. ' - <b style="color:#00CC00">pozycja - '.$pos.'</b><br />'; }
else if (!$found)
{
echo '<br />'.$adres_strony.' - '. $fraza. ' - <b style="color:#FF0000">pozycja powyżej 50</b><br />'; }
Ten post edytował prapdm 27.03.2010, 21:43:51