2011-11-07 16 views
6

Acabo de descubrir el Google APIs Client Library for .NET, pero debido a la falta de documentación me es difícil descifrarlo.¿Cómo puedo hacer una búsqueda con la API de búsqueda personalizada de Google para .NET?

que estoy tratando de hacer una prueba sencilla, mediante una búsqueda personalizada, y he mirado entre otros, en el espacio de nombres siguiente:

Google.Apis.Customsearch.v1.Data.Query 

He tratado de crear un objeto de consulta y llenar SearchTerms , pero ¿cómo puedo obtener resultados de esa consulta?

Respuesta

3

vistazo a API Reference utilizando el código de google-api-dotnet-client

CustomsearchService svc = new CustomsearchService(); 

string json = File.ReadAllText("jsonfile",Encoding.UTF8); 
Search googleRes = null; 
ISerializer des = new NewtonsoftJsonSerializer(); 
googleRes = des.Deserialize<Search>(json); 

o

CustomsearchService svc = new CustomsearchService(); 

Search googleRes = null; 
ISerializer des = new NewtonsoftJsonSerializer(); 
using (var fileStream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) 
{ 
    googleRes = des.Deserialize<Search>(fileStream); 
} 

con la corriente también se puede leer fuera de webClient o HttpRequest, como desee

+0

Su enlace "Referencia de API" está muerto ... – billy

4

primer lugar , debes asegurarte de haber generado tu API Key y CX. Estoy suponiendo que lo haya hecho ya, de lo contrario puede hacerlo en esos lugares:

  • API Key (es necesario crear una nueva clave de navegador)
  • CX (es necesario crear un motor de búsqueda personalizado)

una vez que tenga los, aquí es una aplicación de consola simple que realiza la búsqueda y vuelca todos los títulos/enlaces:

static void Main(string[] args) 
{ 
    WebClient webClient = new WebClient(); 

    string apiKey = "YOUR KEY HERE"; 
    string cx = "YOUR CX HERE"; 
    string query = "YOUR SEARCH HERE"; 

    string result = webClient.DownloadString(String.Format("https://www.googleapis.com/customsearch/v1?key={0}&cx={1}&q={2}&alt=json", apiKey, cx, query)); 
    JavaScriptSerializer serializer = new JavaScriptSerializer(); 
    Dictionary<string, object> collection = serializer.Deserialize<Dictionary<string, object>>(result); 
    foreach (Dictionary<string, object> item in (IEnumerable)collection["items"]) 
    { 
     Console.WriteLine("Title: {0}", item["title"]); 
     Console.WriteLine("Link: {0}", item["link"]); 
     Console.WriteLine(); 
    } 
} 

Como puedes ver, estoy usando una deserialización JSON genérica en un diccionario en lugar de estar fuertemente tipada. Esto es por motivos de conveniencia, ya que no quiero crear una clase que implemente el esquema de resultados de búsqueda. Con este enfoque, la carga útil es el conjunto anidado de pares clave-valor. Lo que más le interesa es la colección de artículos, que es el resultado de la búsqueda (primera página, supongo). Solo estoy accediendo a las propiedades "título" y "enlace", pero hay muchas más de lo que puede ver en la documentación o inspeccionar en el depurador.

+1

Estoy buscando cómo usar [Biblioteca de clientes de API de Google para .NET] (http://code.google.com/p/google-api-dotnet- client/wiki/API # CustomSearch_API) correctamente. De todos modos gracias ... esto también ayuda. – Darshana

6

Mi mala, mi primera respuesta fue no utilizar las API de Google.

Como requisito previo, es necesario obtener la Google API client library

(En particular, tendrá que hacer referencia a Google.Apis.dll en su proyecto). Ahora, suponiendo que tenga su clave de API y el CX, aquí es el mismo código que obtiene los resultados, pero ahora utilizando las API reales:

string apiKey = "YOUR KEY HERE"; 
string cx = "YOUR CX HERE"; 
string query = "YOUR SEARCH HERE"; 

Google.Apis.Customsearch.v1.CustomsearchService svc = new Google.Apis.Customsearch.v1.CustomsearchService(); 
svc.Key = apiKey; 

Google.Apis.Customsearch.v1.CseResource.ListRequest listRequest = svc.Cse.List(query); 
listRequest.Cx = cx; 
Google.Apis.Customsearch.v1.Data.Search search = listRequest.Fetch(); 

foreach (Google.Apis.Customsearch.v1.Data.Result result in search.Items) 
{ 
    Console.WriteLine("Title: {0}", result.Title); 
    Console.WriteLine("Link: {0}", result.Link); 
} 
Cuestiones relacionadas