2011-02-01 10 views
23

Estoy usando las API de google ajax a continuación para obtener imágenes de términos de búsqueda particulares. Esto se hace en una aplicación WinForms.Google AJAX API - ¿Cómo obtengo más de 4 resultados?

El siguiente enlace parece funcionar, pero sólo devuelve 4 resultados (a través de JSON)

Alguien sabe cómo lograr que más de ella?

http://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=Apple+Cake

Obviamente tiene que haber otro parámetro para solicitar más o una página a través de los resultados, pero me parece que no puede averiguarlo? ¿Nadie sabe?

+0

La misma pregunta: [cómo obtener TODOS los resultados de búsqueda de Google usando api] (http://stackoverflow.com/questions/14055197/how-toge t-all-google-search-results-using-api). Debería fusionarse, creo. – kenorb

+0

Lo malo es que ya no existe dicha API. –

Respuesta

32

Creo que la única manera de hacerlo es realizar múltiples llamadas al servicio web especificando el parámetro 'inicio'.

El parámetro start es el índice de base 0 en los resultados de búsqueda. Entonces en este ejemplo, devolvería imágenes 4..7.

También puede agregar el parámetro rsz=[1-8]. El valor predeterminado es 4. Es por eso que obtiene 4 resultados por solicitud. Aquí hay un enlace:
http://code.google.com/apis/imagesearch/v1/jsondevguide.html#basic_query

+0

Impresionante, exactamente lo que quería. Gracias – Jason

+2

Esto parece estar en desuso en 2014 (ver https://developers.google.com/web-search/docs/). ¿Cuál sería la solución actual ahora? – Basj

+1

El enlace dice que el último día de funcionamiento fue en septiembre de 2014, pero parece que todavía funciona. Quizás esto solía ser más poderoso, y simplemente están dejando una versión básica. – Andrew

5

Para aquellos de ustedes que se preguntan cómo hacerlo, hay bastantes formas. Una sería ejecutar una consulta de bucle basada en un evento determinado. Así, por ejemplo ...

var biebresults = [], start = 0; 
function getBieb(startNumber){ 
    $.getJSON("https://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=Justin%20Bieber&start="+startNumber+"&callback=?", function(results){ 
     biebresults.push(results.responseData.results); 
     if(biebresults.length < 538){ 
      start = start + 4; 
      getBieb(start); 
     } else { 
      // Do something with your billion bieb images. 
     } 
    }); 
} 
getBieb(start); 

este fragmento de código (usando jQuery, por cierto) va a ir y agarrar las cuatro primeras imágenes de su estrella del pop favorita. A partir de aquí, cuenta el número de resultados y, si no es suficiente, ejecutará getBieb nuevamente, excepto esta vez con el argumento startNumber incrementado.

+1

jquery es tabú. No empieces a hablar de jquery a menos que ya haya sido hablado en la página. – Pacerier

2

Feed de Google proporciona un método opcional, donde puede especificar el no. de los resultados que desea obtener Si no especifica este método, el valor predeterminado no. de los resultados que obtienes es 4, sin embargo, para obtener más no. de feeds puede especificar este método opcional de la siguiente manera;

feed.setNumEntries(int); 

e-g: feed.setNumEntries(16); // will return 16 results.

.setNumEntries (NUM) establece el número de entradas de alimentación cargados por este alimentación a num. Por defecto, la clase Feed carga cuatro entradas.

.setNumEntries() no tiene valor devuelto.

https://developers.google.com/feed/v1/reference#setNumEntries

0

usted puede conseguir más si lo desea

public static void main(String[] args) throws UnsupportedEncodingException, IOException { 
String google = "http://www.google.com/search?q="; 
String search = "dinh la thang site:dantri.com.vn"; 
String charset = "UTF-8"; 
String userAgent = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2"; // Change this to your company's name and bot homepage! 
System.out.println(URLEncoder.encode(search, charset)); 
int i=1; 
while(i<100){ 
    Elements links = Jsoup.connect(google + URLEncoder.encode(search, charset)+"&start="+i).userAgent(userAgent).get().select("li.g>h3>a"); 

    for (Element link : links) { 
    String title = link.text(); 
    //System.out.println(link.toString()); 
    String url = link.absUrl("href"); // Google returns URLs in format "http://www.google.com/url?q=<url>&sa=U&ei=<someKey>". 
    //System.out.println(url); 
    url = URLDecoder.decode(url.substring(url.indexOf('=') + 1, url.indexOf('&')), "UTF-8"); 

    if (!url.startsWith("http")) { 
     continue; // Ads/news/etc. 
    } 
    System.out.println(i+"Title: " + title); 
    System.out.println("URL: " + url); 

    } i=i+10; 
    } 
} 
} 
0

Visita ...this link sobre el método que necesita: setResultSetSize(num)

1

Utilice el siguiente para obtener 8 resultados

$url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&rsz=large&start=0&q=".$query; 

Después de eso poner el lazo para entonces también será capaz de obtener 64 Resultados

<?php 

     $search =str_replace(' ', '+', @$_GET["q"]); 

      $query = $search; 
      for ($i=1; $i < 100; $i+8) { 



      $url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&rsz=8&start=".$i."&q=".$query; 
      $body = file_get_contents($url); 
      $json = json_decode($body); 

      for($x=0;$x<count($json->responseData->results);$x++){ 

      echo "<b>Result ".($x+1)."</b>"; 
      echo "<br>URL: "; 
      ?> 
      <a href="<?php echo $json->responseData->results[$x]->url; ?>" target="_blank"> <?php echo $json->responseData->results[$x]->url; ?> </a> 
      <?php 
      echo "<br>VisibleURL: "; 
      ?> 
      <a href="http://<?php echo $json->responseData->results[$x]->visibleUrl; ?>" target="_blank"> <?php echo $json->responseData->results[$x]->visibleUrl; ?> </a> 
      <?php 

      echo "<br>Title: "; 
      echo $json->responseData->results[$x]->title; 
      echo "<br>Content: "; 
      echo $json->responseData->results[$x]->content; 
      echo "<br><br>";    

     } 
      $i+=8; 
     } 

? >

+0

¿Podría elaborar más su respuesta agregando un poco más de descripción acerca de la solución que proporciona? – abarisone

+0

yas puse el camino para hacer que anide anidado ... y obtendrás más resultados –

Cuestiones relacionadas