Text Processing Google APi

Slides:



Advertisements
Presentazioni simili
Trieste, 26 novembre © 2005 – Renato Lukač Using OSS in Slovenian High Schools doc. dr. Renato Lukač LinuxDay Trieste.
Advertisements

Cache Memory Prof. G. Nicosia University of Catania
Teoria e Tecniche del Riconoscimento
1 Le s-espressioni. 2 Un nuovo esempio completo: le s-espressioni Sexpr 4 alberi binari (possibilmente vuoti) che hanno sulle foglie atomi (stringhe)
1 Progettazione gerarchica delle s- espressioni, utilizzando lereditarietà
Luca Bianchi Windows Development Day Bologna 28 gennaio 2005 SQL Server Desktop Engine (MSDE) & SQL Server 2005 Express.
Modalità di ricerca semantica nelle Biblioteche digitali Maria Teresa Biagetti DIPARTIMENTO DI SCIENZE DOCUMENTARIE LINGUISTICO-FILOLOGICHE E GEOGRAFICHE.
WSDL (Web Services Description Language) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni
UDDI (Universal Description, Discovery and Integration Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni
Capitolo 2 Nozioni fondamentali su Java Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill.
JPA Overview della tecnologia. Java Persistence Architecture Definita nella JSR-220 EJB 3.0 ( Tentativo di unificare EJB2.1 con.
Introduzione ai Web Services. E' un nuovo meccanismo RPC ottimizzato per l'uso in Internet Un qualunque Client su una generica piattaforma deve poter.
1.E un algoritmo ricorsivo: Tutti le istanze di oggetti raggiungibili da un oggetto persistente diventano anchessi persistenti.
E Windows SharePoint Services 2.0 Ivan Renesto Overview how to use Windows SharePoint Services.
Un DataBase Management System (DBMS) relazionale client/server.
Microsoft Robotics Studio Marco Petrucco Microsoft Student Partner - Udine.
Raffaele Cirullo Head of New Media Seconda Giornata italiana della statistica Aziende e bigdata.
Pierluigi Plebani - Politecnico di Milano MAIS Registry URBE (Uddi Registry By Example) WP2 Roma - 25 Novembre 2005.
Layouts and Graphics. component - container - layout Un Container contiene [0 o +] Components Il Layout specifica come i Components sono disposti nel.
1 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Java JAVA: una introduzione.
Esempio: Tombola! Parte seconda.
Unified Modeling Language class C {…} class B extends C {…} Esiste una notazione grafica per mostrare le relazioni di ereditarietà. Object StringC B Tutte.
J0 1 Marco Ronchetti Java Threads & Sincronizzazione.
J0 1 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento.
1 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Java JAVA: una introduzione.
J0 1 Marco Ronchetti - Corso di Formazione Sodalia – Febbraio 2001 – Modulo Web Programming Tomcat configuration.
Modificatori: static Variabili e metodi associati ad una Classe anziche ad un Oggetto sono definiti static. Le variabili statiche servono come singola.
Richiami di TCP Networking in Java Elementi di base.
Richiami di Java Multithreading. Threads (subclassing) public class A { public void a_method { C t = new C(); //C t = new C(String name); t.start(); …
Sezione: Costruttori Costruttori. Definizione dei costruttori Se per una classe A non scrivo nessun costruttore, il sistema automaticamente crea il costruttore.
prompt> java SumAverage
1 struct Pila { private: int size; int defaultGrowthSize; int marker; int * contenuto; void cresci(int increment); public: Pila(int initialSize) ; Pila();
Costruzione di Interfacce Lezione 10 Dal Java al C++ parte 1
1. Conoscere luso delle collezioni in Java Comprendere le principali caratteristiche nelle varie classi di Collection disponibili Saper individuare quali.
JAVA C import java.util.*; #include <stdio.h>
1 Esercitazione sui segnali Problema: creare un programma analizzatore di file testuali che prenda come argomenti il nome di un file e una sequenza di.
Programming with JXTA Hello World Peer discovery Peer Group discovery Creating Peer group Joining a Peer Group.
2000 Prentice Hall, Inc. All rights reserved. 1 Capitolo 3 - Functions Outline 3.1Introduction 3.2Program Components in C++ 3.3Math Library Functions 3.4Functions.
Università La Sapienza Ingegneria del Software I 1 Ingegneria del software I Seminario 2: Microsoft.NET.
Selezione (=scelta) con “if-else”
2000 Prentice Hall, Inc. All rights reserved. 1 Capitolo 6: Classi e astrazione dati 1.Introduzione 2.Definizione delle strutture 3.Accedere ai membri.
Programmazione distribuita in Java
Java base VI: Gestione I/O. Argomenti Introdurre le API per linput e output in Java.
Palermo, may 2010 F.Doumaz, S.Vinci (INGV-CNT- Gruppo di telerilevamento)
Fondamenti di Informatica Corsi di Laurea in Ingegneria Gestionale Canale AL ESERCITAZIONE 4 ARGOMENTI: STRINGHE DI CARATTERI.
INTERNET Internet è una rete a livello mondiale che permette alle persone di comunicare ed ad accedere a banca dati da qualunque parte del mondo e su qualunque.
INTERNET Antonio Papa Classe 2^ beat I.S.I.S. G. Meroni a.s. 2007/2008.
Le reti informatiche Modulo 7. Internet Il browser La navigazione Motori di ricerca Raccogliere dati La stampa sommario.
Project Review byNight byNight December 6th, 2011.
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2003/2004.
Scoprirete che su Office non si può solo contare ma anche sviluppare.
Soluzioni 1.Struttura base soluzione 2.Lettura dei tasti 3.Identificazione dei tasti 4.Accensione dei LED 5.Rotazione dei LED 6.Rotazione dei tasti fino.
Visual Studio Tools for Office: Developer Solutions Platform Fulvio Giaccari MCSD.NET / MCT Responsabile Usergroup ShareOffice Blog:
Test con JUnit. zJUnit è un ambiente di test per programmi Java ySviluppato da Kent Beck É possibile usare JUnit allinterno di Eclipse per eseguire i.
Project Review Novembrer 17th, Project Review Agenda: Project goals User stories – use cases – scenarios Project plan summary Status as of November.
Project Review byNight byNight December 21th, 2011.
Project Review byNight byNight December 6th, 2011.
Project Review Novembrer 17th, Project Review Agenda: Project goals User stories – use cases – scenarios Project plan summary Status as of November.
Project Review byNight byNight December 5th, 2011.
Customer Support Research & Development Come usare il Search Technical Knowledge Base...ITRC.
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
Introduzione al linguaggio C. Cos’e’ il C? Il C e’ un linguaggio ad alto livello Un compilatore C prende in input un file contenente codice sorgente C.
Analysis and Development of Functions in REST Logic: Application to the «DataView» Web App UNIVERSITA’ DEGLI STUDI DI MODENA E REGGIO EMILIA DIPARTIMENTO.
Negli ultimi anni, la richiesta di poter controllare in remoto la strumentazione e cresciuta rapidamente I miglioramenti nell’hardware e nel software insieme.
Collection & Generics in Java
Introduction to automatic ABMs documentation Keywords: Doxygen ODD protocol MASON documentation Simone Romano.
Sistemi di elaborazione dell’informazione Modulo 3 -Protocolli applicativi Unità didattica 4 - Protocolli del Web Ernesto Damiani Lezione 3 – Esempi HTTP.
JDBC Java DataBase Connectivity SISTEMI ITIS B. CASTELLI Anno Scolastico
Buon giorno Io sono Professoressa Kachmar. Buon giorno Io sono Professoressa Kachmar.
Studente : Andrea Cassarà Classe: 5AII A.S. 2014/2015 Link Sito
Transcript della presentazione:

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. L’interfaccia 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 Download the developer's kit: Create a Google Account 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.   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.   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 (developer’s 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: SOAP: 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> </soap11:Envelope>

GoogleAPIDemo.java 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 l’object 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()); } // 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); } // 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 l’autorizzazione 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 l’informazione presente nella pagina html di risposta. // numero stimato di risultati ottenuti int getEstimatedTotalResultsCount() // ritorna l’array dei ResultElements GoogleSearchResultElement[] getResultElements() // ritorna il tempo di ricerca in secondi double getSearchTime() // fornisce suggerimenti per la ricerca String getSearchTips() GoogleSearchResultElement: classe che contiene l’info. 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 nell’indirizzo 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)"); InputStream inputStream = urlConn.getInputStream(); BufferedReader in = new BufferedReader(new InputStreamReader(inputStream)); String inputLine; // leggi tutto il file while ( (inputLine = in.readLine()) != null) retrieved += inputLine; in.close(); NON FATELO!!!! ALTRIMENTI GOOGLE METTE IL VOSTRO IP IN UNA BLACKLIST