PDA

Visualizza la versione completa : Come si creano dei motori di ricerca?


American
11-01-2014, 14:42
Vedendo un po' come è strutturato jobrapido, mi rendo conto che il sito non fa altro che proporre annunci lavorativi presi da portali nati proprio con questo preciso scopo.
Ma la domanda che mi pongo è, l'indicizzazione è una cosa applicabile da tutti, oppure bisogna stringere accordi con ciascuno di questi siti "fornitori" che a loro volta devono mettere a disposizione tool e API da utilizzare?

Certo che considerando moori di ricerca più generali tipo google mi risulta impossibile immaginare ad un meccanismo dl genere, quindi ad intuito direi che ci sono script che non fanno altro che aprire pagine web e memorizzarne il contenuto nei DB.

A questo punto la domanda che mi pongo è come creare questi script? In che linguaggio sono scritti?

torn24
11-01-2014, 15:54
Anche se molte persone , non ritengono wikipedia una gran fonte , ti può chiarire molto .
Motore di ricerca
http://it.wikipedia.org/wiki/Motore_di_ricerca

Cuore del motore di ricerca , che può essere scritto in molti linguaggi diversi , ne esistono open source

http://it.wikipedia.org/wiki/Crawler


"Al giorno d'oggi Quasi tutto è relativamente facile da usare , ma quando si vuole provare a realizzare qualcosa ci si accorge di quanto sono complicate "

American
11-01-2014, 17:49
Ah ok quindi è il crawler la chiave di tutto.

Ma mettiamo che io voglia creare un sito alla trovaprezzi.it e necessito di monitorare una precisa lista di fonti quali monclick, play.com e marcopoloshop.

A questo punto punto per monitorare il codice sorgente di ciascuna di queste pagina non basterebbe scrivere questo semplice codice?


$variable1 = fopen('http://monclick.com', "rb");
echo stream_get_contents($variable1);
$variable2 = fopen('http://play.com', "rb");
echo stream_get_contents($variable2);
$variable3 = fopen('marcopoloshop.com', "rb");
echo stream_get_contents($variable3); //vabbè, lo so chesarebbe più professionale creare un ciclo che faccia in automatico invece di fare tutto manualmente con variabili distinte

Come ben sappiamo però questo non seriverebbe a molto perchè si limiterebbe a recuparare il codice sorgente dell'HTML che di per sé non contiene alcuna informazione sui prodotti in vendita.
Quello che a me serve è recuperare la lista dei prodotti che solitamente avviene tramite la ricerca effettuata dai siti stessi.

Ad intuito direi che basterebbe sostituire l'url di fopen con l'url di ricerca completo di variabili passate via GET, ovver:


fopen('http://www.monclick.it/risultati_ricerca?fh_view_size=10&fh_sort_by=-_match_rate,-orderby_piupopolari&fh_location=//root/it_IT/$s=led&testo=led', "rb");

è così o non c'ho capito una mazza? :stordita:

torn24
12-01-2014, 07:59
Ciao forse sono stato frainteso , anche se ti ho risposto , sono una DELLE POCHE persone che non è capace di scrivere un motore di ricerca !!

MItaly
12-01-2014, 11:59
Ah ok quindi è il crawler la chiave di tutto.

Ma mettiamo che io voglia creare un sito alla trovaprezzi.it e necessito di monitorare una precisa lista di fonti quali monclick, play.com e marcopoloshop.

A questo punto punto per monitorare il codice sorgente di ciascuna di queste pagina non basterebbe scrivere questo semplice codice?

Sicuramente non con la fopen (che non mi risulta possa fare richieste HTTP), ma per un crawler "generico" il concetto è simile.

Come ben sappiamo però questo non seriverebbe a molto perchè si limiterebbe a recuparare il codice sorgente dell'HTML che di per sé non contiene alcuna informazione sui prodotti in vendita.
Se il crawler (come ogni crawler) usa l'HTML in questione seguendo i link man mano acquisirebbe le pagine di tutti i prodotti. Questo basta per un motore di ricerca "normale" (che si limita ad indicizzare il testo, e a valutare l'importanza della pagina rispetto alle parole chiave in base - tra le altre cose - ai link che portano ad essa), ma per un motore di ricerca di prezzi si pone ovviamente il problema che dici: chi mi dice da dove estrarre le informazioni che mi servono?

Si può lavorare essenzialmente in due modi:

si fa una ricerca in base a pattern per cercare di estrarre stringhe che "abbiano l'aspetto" di un prezzo; non è un metodo particolarmente affidabile, ma può andar bene in situazioni in cui questa informazione è semplicemente un "di più" non essenziale;
usando una qualche genere di API stabilita con il sito target; in quel caso il gestore del sito di ecommerce si mette d'accordo con il motore di ricerca e stabiliscono una qualche genere di API; questo garantisce informazioni accurate e aggiornate al motore di ricerca, ed è il metodo che normalmente si usa per motori di ricerca "specifici" (se guardi in un sito come trovaprezzi e simili vedrai che c'è sempre una pagina per l'affiliazione (http://www.trovaprezzi.it/affiliati)).
Nota che un metodo del genere è anche parzialmente usato da motori di ricerca "generici" - vedi Google e le sitemap.

American
14-03-2014, 23:47
Ho finito di creare un motore di ricerca (se così si può definire) che manda delle richieste HTML ad un sito di shopping online e renderizza poi i risultati sul mio dominio.
Ma mi chiedo, questa cosa è legale? Rischio qualcosa?

Mi chiederete quale sia la necessità di fare una cosa che già fa il sito stesso, in realtà non è così.
Il sito è strutturato in sezioni, ad esempio, nel caso dei videogiochi questi sono catalogati a seconda della console di riferimento.
Quindi sul sito originale se voglio avere un elenco dei vari giochi, devo spulciarmi le varie sezioni una ad una.

Per via di questa scomodità mi son creato uno script che mi visualizza tutti i prodotti del sito in maniera chiara e concisa.
Si può fare o è illegale?

Loading