web-dev-qa-db-fra.com

Google AJAX API - Comment puis-je obtenir plus de 4 résultats?

J'utilise les API Google Ajax ci-dessous pour obtenir des images pour des termes de recherche particuliers. Cela se fait dans une application WinForms.

Le lien ci-dessous semble fonctionner, mais il ne renvoie que 4 résultats (via JSON)

Quelqu'un sait comment en tirer plus?

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

Évidemment, il doit y avoir un autre paramètre pour demander plus ou feuilleter les résultats, mais je n'arrive pas à le comprendre? Quelqu'un sait?

23
Jason

Je crois que la seule façon de le faire est de faire plusieurs appels au service Web en spécifiant le paramètre 'start'.

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

Le paramètre start est l'index de base 0 dans les résultats de la recherche. Ainsi, dans cet exemple, il renverrait des images 4..7.

Vous pouvez également ajouter le paramètre rsz=[1-8]. La valeur par défaut est 4. C'est pourquoi vous obtenez 4 résultats par demande. Voici un lien:
http://code.google.com/apis/imagesearch/v1/jsondevguide.html#basic_query

32
rforte
13
user2862302

Pour ceux d'entre vous qui se demandent comment faire cela, il y a pas mal de façons. L'une serait d'exécuter une requête en boucle basée sur un certain événement. Donc, par exemple ...

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);

Ce morceau de code particulier (en utilisant jQuery, btw) ira chercher les quatre premières images de votre pop star préférée. À partir de là, le nombre de résultats est compté. S'il n'est pas suffisant, il exécute à nouveau getBieb, sauf que l'argument startNumber est augmenté.

5
Jonathan Cutrell

Google Feed fournit une méthode facultative, dans laquelle vous pouvez spécifier le no. des résultats que vous voulez obtenir. Si vous ne spécifiez pas cette méthode, le no par défaut. des résultats que vous obtenez est 4, cependant pour obtenir plus non. des flux, vous pouvez spécifier cette méthode facultative comme suit;

feed.setNumEntries(int);

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

.setNumEntries (num) définit le nombre d'entrées de fil chargées par ce nourrir à num. Par défaut, la classe Feed charge quatre entrées.

.setNumEntries () n'a pas de valeur de retour.

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

2
defau1t

Utilisez le ci-dessous pour obtenir 8 résultats

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

Après cela, mettez la boucle pour alors vous pourrez bien obtenir 64 Résultats

 <?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;
         }

?>

1
Danish Iqbal

Visitez ... ce lien sur la méthode dont vous avez besoin: setResultSetSize(num)

0
mdromed

tu peux en avoir plus si tu veux

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
vuhoanghiep1993