Home > PHP > Ranking google

Ranking google

lipiec 13th, 2008

Oststnio miałem do napisania skrypt który miał pokazywać pozycję danej strony w googlach pod daną frazę (taka prosta wyszukiwarka). Jak zwykle po googlowałem trochę i po jakimś czasie znalazłem dwa skrypty. Jeden korzystał z Curl’a a drugi z fopen. Odpaliłem pierwszy na localu i wszystko łądnie działa. Kilka przeróbek i dostosowałem go do swoich potrzeb. Oczywiście nie sprawdziłem wcześniej czy na serwerze docelowym jest dostępny Curl. No i zonk! Po krótkim kontakcie z administratorem dowiedziałem się że muszę użyć czegoś innego…

Odpalam więc drugi skrypt z wykorzystaniem fopen(”http://www.google.pl/sear…”) otrzymałem w prezencie informację, że wywołanie funkcji fopen z parametrem w formie url’a zostało zablokowane (ze względów bezpieczeństwa…), wiec koniec końców wykorzystując powyższe skrypty i używając fsockopen() wykombinowałem kawałek własnego kodu…

Kod jest dosyć prosty. Zastanawiałem się nad przerobieniem go na bajdziej rozbudowane rozwiązanie w formie obiektowej jednak na dzień dzisiejszy wystarcza mi to.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
 
// słowa kluczowe
$string = 'php';
 
//szukana strona
$site    =  str_replace('http://','',str_replace('www.','',trim(strip_tags('php.pl'))));
 
//ilość przeszukanych wyników w google
$searchAmount = 40;
 
$RegExp = '/<h2 class=r><a href="([^"]+)" class=l/i';
$query = str_replace(" ","+",$string);
 
$query = str_replace("%26","&",$query);
$fp =  fsockopen("www.google.com", 80, $errno, $errstr, 30);
 
if (!$fp)
{
    $err = "$errstr ($errno)";
}
else
{
    $out = "GET http://www.google.pl/search?hl=pl&num={$searchAmount}&q={$query}&btnG=Szukaj+w+Google&lr=HTTP1.1\r\n" ;
    $out .= "Host: www.google.com\r\n" ;
    $out .= "Connection: Close\r\n\r\n" ;
    fwrite($fp, $out);
 
    $data = '';
 
    while (!feof($fp))
    {
        $data .= fgets($fp);
    }
    fclose($fp);
 
    preg_match_all($RegExp, $data, $results);
    $results = array_pop($results);
 
    $iPosition = '';
    foreach($results as $iKey => $sRow)
    {
        if(strpos($sRow, $site) !== false)
        {
        //wyświetlamy najwyższą pozycję
        $iPosition = $iKey + 1;
        break;
        }
    }
    echo $iPosition;
}
?>

Powiązane wpisy:

admin PHP , ,

  1. No comments yet.
  1. No trackbacks yet.
agencja reklamowa lublin ślub i wesele senniki