Sei sulla pagina 1di 9

Text Processing

Google APi
Basi di Dati Multimediali - Giugno 2005
Marco Ernandes: ernandes@dii.unisi.it

Introduzione
Google Web APIs una servizio software (beta) che
permette a un qualsiasi programma di collegarsi
direttamente al motore di ricerca Google.
E destinato a tutti gli sviluppatori di software che
vogliono usare Google come risorsa.
Linterfaccia tra un programma e Google avviene
attraverso gli standard SOAP e WSDL.
Sono supportati i seguenti ambienti di programmazione:
Java, Perl, Visual Studio .NET
Download delle API e della documentazione da:
http://www.google.com/apis /

Istallazione
1. Download the developer's kit:

The Google Web APIs developer's kit provides documentation and


example code for using the Google Web APIs service. The download
includes Java and .NET programming examples and a WSDL file for
writing programs on any platform that supports web services.

2. Create a Google Account

To access the Google Web APIs service, you must create


a Google Account and obtain a license key. Your Google
Account and license key entitle you to 1,000 automated
queries per day.

3. Write your program using your license key

Your program must include your license key with each query you
submit to the Google Web APIs service. Check out our Getting
Help page or read the FAQs for more information.

Istallazione
Il file googleapi.zip (developers kit) contiene:

googleapi.jar Libreria Java Google Web APIs service.


GoogleAPIDemo.java Programma esempio che usa
googleapi.jar
Example .NET programmi esempio in VBasic e C# che
usano Google Web APIs.
APIs_Reference.html - Documentazione generale delle
API.
Javadoc - Documentazione della libreria JAVA.
GoogleSearch.wsdl Descrizione WSDL delle Google
SOAP API.
soap-samples/ - Esempi di messaggi SOAP al servizio.

WSDL e SOAP
WSDL:

Web Services Description Language


The standard format for describing a web service.
Expressed in XML, a WSDL definition describes how to
access a web service and what operations it will perform.

SOAP:

Simple Object Access Protocol.


un protocollo per comunicazioni
tra applicazioni.
Descrive un formato per spedire
messaggi.
Basato su XML, language e
platform-independent.

<soap11:Envelope
xmlns="urn:GoogleSearch
xmlns:soap11="http://...>
<soap11:Body>
<doGoogleSearch>
<key>e7gxV1</key>
<q>telephone inventor </q>
<start>0</start>
<maxResults>10</maxResults>
</doGoogleSearch>
</soap11:Body>

GoogleAPIDemo.java
// se stata selezionata una cached query
else if (directive.equalsIgnoreCase("cached")) {
byte [] cb = s.doGetCachedPage(directiveArg);
// stampa il documento cached
System.out.println("Cached page:");
String cachedString = new String(cb);
System.out.println(cachedString);
}

public class GoogleAPIDemo {


public static void main(String[] args) {
// Parametri passati come argomenti
String clientKey = args[0];
String directive = args[1];
String directiveArg = args[2];
// Create lobject Google Search
GoogleSearch s = new GoogleSearch();
// set our authorization key
s.setKey(clientKey);
// argomento directive stabilisce se si
// si vuol fare una search o una cached query
try {
// se stata selezionata una search query
if (directive.equalsIgnoreCase("search")) {
s.setQueryString(directiveArg);
GoogleSearchResult r = s.doSearch();
// stampa i risultati del search
System.out.println("Google Search Results:");
System.out.println(r.toString());
}

// catch di una eccezione nella ricerca Google


} catch (GoogleSearchFault f) {
System.out.println("The call to the Google Web APIs
failed:");
System.out.println(f.toString());
}
}
}

RICERCA con la classe GoogleSearch


// specifica la chiave per lautorizzazione
void setKey(String key)
// specifica la lingua
// es:s.setLanguageRestricts("lang_it");
void setLanguageRestricts(String lr)
// setta il numero max. di risultati: ogni
// query ritorna al massimo 10 documenti
// quindi un setMaxResults(100) mette in
// moto 10 query diverse !!!
void setMaxResults(int maxResults)
// settano il proxy (se necessario)
void setProxyHost
void setProxyPassword

// stabilisce la stringa di query da


// passare a Google
void setQueryString(String query)

// stabilisce la stringa di restrizione


// es: site:www.repubblica.it oppure
// es: intitle:crosswords
void setRestrict(String restrict)
// setta la ricerca sicura
// (evita pornografia)
void setSafeSearch(boolean safe)
// stabilisce da che punto far
// cominciare i risultati
void setStartResult(int start)
// invoca una ricerca che ritorna un
// oggetto GoogleSearchResult
GoogleSearchResult doSearch()
// scarica dalla cache di Google il
// documento con indirizzo url
byte[] doGetCachedPage(String url)

Managing dei risultati


GoogleSearchResult: classe
che contiene tutta
linformazione presente nella
pagina html di risposta.
// numero stimato di risultati ottenuti
int getEstimatedTotalResultsCount()
// ritorna larray dei ResultElements
GoogleSearchResultElement[]
getResultElements()
// ritorna il tempo di ricerca in secondi
double getSearchTime()
// fornisce suggerimenti per la ricerca
String getSearchTips()

GoogleSearchResultElement:
classe che contiene linfo. di
una singola risposta.
// dimensione (in Kb) del file in cache
String getCachedSize()
// nome directory Google in cui si trova
String getDirectoryTitle()
// ritorna la snippet del documento
String getSnippet()
// ritorna il titolo del documento
String getTitle()
// ritorna la URL del documento
String getURL()

Come sgraffignare Google


Usare le Google API il modo corretto di sfruttare il motore
di ricerca. Ma 1000 queries sono pochine
Se da un programma si fa una richiesta HTTP a Google
mettendo la query nellindirizzo la richiesta viene rifiutata!
(es: www.google.it/search?q=telephone+inventor)
Per aggirare il problema il trucco semplice: far finta di
essere un browser!
URL webPage = new URL(urlString);
// effettua il fake di Mozilla per ingannare il motore di ricerca
HttpURLConnection urlConn = (HttpURLConnection) webPage.openConnection();
urlConn.setRequestProperty("User-Agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR
1.1.4322)");
NON FATELO!!!!
InputStream inputStream = urlConn.getInputStream();
ALTRIMENTI GOOGLE
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
String inputLine;
METTE IL VOSTRO IP
// leggi tutto il file
IN UNA BLACKLIST
while ( (inputLine = in.readLine()) != null) retrieved += inputLine;
in.close();

Potrebbero piacerti anche