Google AJAX API - 如何获得超过4个结果?

时间:2011-02-01 22:42:35

标签: image json google-api

我使用下面的google API ajax来获取特定搜索字词的图片。这是在 WinForms 应用中完成的。

以下链接似乎有效,但它只返回4个结果(通过JSON)

任何人都知道如何更多地哄骗它?

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

显然必须有另一个参数来请求更多或分页结果,但我似乎无法弄明白?有人知道吗?

7 个答案:

答案 0 :(得分:32)

我认为唯一的方法就是多次调用webservice来指定'start'参数。

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

start参数是搜索结果中从0开始的索引。所以在这个例子中,它将返回图像4..7。

您还可以添加参数rsz=[1-8]。默认值为4.这就是为什么每个请求获得4个结果的原因。这是一个链接:
http://code.google.com/apis/imagesearch/v1/jsondevguide.html#basic_query

答案 1 :(得分:13)

您可以使用“& rsz = 8”,请参阅下面的内容......

http://ajax.googleapis.com/ajax/services/search/video?q=SpongeBob%20Full&v=1.0&start=8&rsz=8

答案 2 :(得分:5)

对于那些想知道如何做到这一点的人,有很多方法。一种是基于某个事件运行循环查询。所以,例如......

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

这段特殊的代码(使用jQuery,顺便说一句)将会抓住你最喜欢的流行歌星的前四张图片。从这里计算结果的数量,如果它不够,它将再次运行getBieb,除了这次startNumber参数增加。

答案 3 :(得分:2)

Google Feed提供了一个可选方法,您可以在其中指定编号。你想得到的结果。如果未指定此方法,则默认为no。你得到的结果是4,但要得到更多的没有。您可以按以下方式指定此可选方法;

feed.setNumEntries(int);

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

  

.setNumEntries(num)设置由此加载的提要条目数   送到num。默认情况下,Feed类会加载四个条目。

     

.setNumEntries()没有返回值。

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

答案 4 :(得分:1)

使用以下内容获得8个结果

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

之后将用于循环,然后您就能获得64个结果

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

&GT;

答案 5 :(得分:0)

如果你想要你可以得到更多

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

答案 6 :(得分:0)

访问this link,了解您需要的方法:setResultSetSize(num)