PHP Ranking Checker: Controlla Il Posizionamento Su Più Motori Di Ricerca

Un piccolo ma utilissimo programma PHP per smanettoni che monitora il ranking su più motori contemporaneamente, rilasciato sotto CC 3.0

Questo è un semplice script in php che ho sviluppato molti anni fa per controllare il posizionamento del sito contemporaneamente su più motori di ricerca. Il suo funzionamento è molto molto semplice:

  1. inserisci l'URL del sito di cui vuoi controllare il posizionamento
  2. digita una Keyphrase per la ricerca
  3. avvia la ricerca
Rank Checker

Dopo qualche istante viene visualizzata la posizione del sito su Google, Yahoo!, MSN, Altavista e Lycos. Position checker puoi provarlo qui.

Il programma è veramente molto semplice e non richiede alcuna tecnologia particolare, ma svolge egregiamente il suo scopo, per cui ho deciso di rilasciare il codice as-it-is (così com'è) sotto Creative Commons (basta citare autore e link della pagina del progetto) per permettere a chiunque sia interessato di migliorarne le funzionalità ed utilizzarlo come meglio crede anzichè lasciarlo ammuffire nel mio backup. Ho molto, molto altro materiale che intendo rilasciare pian piano, tempo permettendo.

Funzionamento del Rank Checker

Sono poche righe di codice PHP in tre soli files:

  1. form.php -  invia i 3 parametri per la ricerca: HTTP_POST_VARS['url'] il sito da controllare, HTTP_POST_VARS['key'], la chiave di ricerca e $HTTP_POST_VARS['num'] il numero massimo di risultati tra cui cercare
  2. search.php - che esegue la scansione delle SERP per determinare la posizione del sito tramite il parsing dei sorgenti delle SERP risucchiati col metodo file_get_contents()
  3. start.html - la pagina iniziale dei risultati

Non penso valga la pena di descrivere il primo file: è solo la form che invia i parametri ed include nel frame lo script di ricerca per visualizzarne i risultati. Ecco invece una breve spiegazione di search.php:

// CONFIG ****************
$nomi[1]="Google.it";
$nomi[2]="Yahoo.com";
$nomi[3]="Msn.it";
$nomi[4]="Altavista.com";
$nomi[5]="Lycos.it";
$motori[1]="http://www.google.it/search?as_q=<%key%>&hl=it&num=<%num%>...
$motori[2]="http://search.yahoo.com/search?_adv_prop=web&x=op&ei=...
$motori[3]="http://search.msn.it/results.aspx?q=<%key%>&first=0&count=<%num%>...
$motori[4]="http://www.altavista.com/web/results?itag=wrx&pg=aq&aqmode=s...
$motori[5]="http://cerca.lycos.it/cgi-bin/pursuit?etemp=error&query=<%key%>...
$splitter[1]='<div class=g';
$splitter[2]='<a class=yschttl';
$splitter[3]='<li><h3>';
$splitter[4]="<br class='lb'>";
$splitter[5]='<div style="margin-bottom:25px;">';
$num=$HTTP_POST_VARS['num'];
//************************

Ho memorizzato in 3 arrays i tre dati principali che mi servono:

  • $nomi[] - il nome del motore
  • $motori[] - l'URL della sua SERP
  • $splitter[] - la stringa che userò per splittare il sorgente della SERP prima di eseguire il matching della chiave di ricerca negli elementi del relativo array (l'indice dell'array che mi restituirà un matching positivo corrisponderà alla posizione del sito).

Poi...

while (list($x,) = each($motori)) {

per ogni motore...

$search_url=str_replace('<%key%>', urlencode($HTTP_POST_VARS['key']), $motori[$x]);
$search_url=str_replace('<%num%>', urlencode($num), $search_url);

...costruisco l'URL esatto della SERP con i parametri passati dal modulo

$lines = file_get_contents($search_url);
$sections = split($splitter[$x], $lines);
$lines = file_get_contents($search_url);

...poi ne memorizzo il sorgente utilizzando file_get_contents() e lo divido in un array utilizzando come parametro una qualsiasi stringa che si ripete nel sorgente ad ogni risultato. A questo punto mi ritrovo un array che contiene per ogni item il blocco di sorgente relativo ad ogni risultato. Il più è fatto: non rimane che  eseguire un matching sul dominio in ogni elemento dell'array. L'indice dell'array che restituirà un matching positivo costituirà la posizione del sito.

$pos[$nomi[$x]]=0;
foreach ($sections as $key => $value) {

if (strpos($value, $HTTP_POST_VARS['url'])) {
$pos[$nomi[$x]]=$key;
break;}

}
if ($pos[$nomi[$x]]==0) {$pos[$nomi[$x]]="-";}

Dopodichè, non rimane che mostrare i risultati:

echo $nomi[$x]."  :  ".$pos[$nomi[$x]];
}

Mantenimento e upgrade del software

Purtroppo non ho molto tempo per migliorarlo ed aumentarne le funzionalità, per questo lo metto a disposizione poichè può essere migliorato con poco sforzo. Ecco alcuni spunti:

  1. Aumentare il numero dei motori
    • E' sufficiente inserire nome, URL della SERP e la stringa di split (guardando nel sorgente della SERP) negli array di configurazione
  2. Fidelizzazione
    • Dare l'opzione di ricevere i risultati per email
    • Schedulare l'esecuzione delle analisi (magari col supporto di un DB) per inviare via email agli utenti un report ogni TOT giorni
  3. Verifica
    • Puoi linkare il nome del motore di ricerca nei risultati alla SERP per dar modo agli utenti di controllare
  4. Attenzione a..
    • Se improvvisamente una ricerca non funziona, probabilmente è cambiato il codice sorgente della SERP per cui devi visualizzarne il sorgente con una ricerca manuale e cercare una nuova stringa di sorgente che possa fungere da separatore (splitter) per i blocchi di risultati
    • Nelle chiamate ai propri sistemi, Google vuole come parametro la API Key dello svilupparore. Aggiungi all'URL della SERP di Google il parametro &key=<la tua api key>
Scarica il programma in formato zip (4Kb)

Tags:                        

Daniele Di Gregorio


12.11.2007 Opensource e strumenti on line


Vuoi ricevere gli ultimi articoli
e tenere d'occhio i commenti direttamente sul tuo PC?

Ikaro Toolbar

Potrai inoltre navigare ascoltando decine
di radio on line, accedere a centinaia
di TV in streaming
e chattare con gli altri visitatori del sito.

Per Windows 2000/XP. No spyware!

Syndacate Feed

Feedburner Technorati

Avvisami per email quando sono presenti nuovi articoli:


Contatto Contattami


Skype: ikaro.net
Email: compila il modulo


Pubblica Pubblica


Collabora

Suggerisci un tuo post o pubblica il tuo articolo. Gli articoli verranno pubblicati assieme agli altri redazionali con un link al tuo blog (continua)


Newsradar

• Ning: Crea Il Tuo Social Network Con Pochi Click

• Pochi Layout Per Movable Type 4? Prova Col Design Assistant

• Usa Il Tuo Account Google Come OpenID

• Mi Dai Il Tuo Account Digg?

• La Russia Taglia I Ponti Con Microsoft: Dal 2009 Solo Linux

• Crea Le Tue Favicon Online: Favikon

• Blogging: Layout Personalizzati In Un Istante Con Firdamatic

• Internet e Caipirinha: Ikaro Sbarca In Brasile (e Portogallo)

• Velocità ADSL: I Test Online Più Affidabili

• Una Miniera Di Conoscenza Condivisa: eDocr

Altre news •>


Creative Commons License
Ove non diversamente specificato, tutti i contenuti sono rilasciati sotto Licenza Creative Commons.

Logo
English