php ranking checker

Forum per tutti i neofiti e gli esperti che vogliono proporre o rispondere ad argomenti che riguardano lo sviluppo di apllicazioni web basate in aprticolare su Html - Css - Php - MySql, ma non solo...

Moderatore: Michele

php ranking checker

Messaggioda Michele » mar nov 13, 2007 12:27 am

uno script php che permette di tenere sotto controllo il ranking associato dai motori di ricerca al proprio sito!

Non ho ancora avuto il tempo di provarlo ma sembra interessante!
L'indirizzo è:
http://www.ikaro.net/articoli/cnt/contr ... 00566.html

Vi riporto come al solito l'articolo:
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:
inserisci l'URL del sito di cui vuoi controllare il posizionamento

digita una Keyphrase per la ricerca
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:
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
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()
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 ****************
Codice: Seleziona tutto
$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...
Codice: Seleziona tutto
while (list($x,) = each($motori)) {


per ogni motore...
Codice: Seleziona tutto
$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
Codice: Seleziona tutto
$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.

Codice: Seleziona tutto
$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:
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
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
Verifica
Puoi linkare il nome del motore di ricerca nei risultati alla SERP per dar modo agli utenti di controllare
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
Codice: Seleziona tutto
&key=<la tua api key>

Scarica il programma in formato zip (4Kb)
Michele
 
Messaggi: 308
Iscritto il: ven mar 17, 2006 2:14 am

Torna a Webmaster

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron