web-dev-qa-db-ja.com

Google AJAX API-4つ以上の結果を取得するにはどうすればよいですか?

特定の検索用語の画像を取得するために、以下のGoogle API Ajaxを使用しています。これはWinFormsアプリで行われています。

以下のリンクは機能しているようですが、(JSON経由で)4つの結果のみを返します

誰もがそれからもっと同軸化する方法を知っていますか?

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

明らかに、より多くをリクエストするため、または結果をページングするために別のパラメーターが必要ですが、それを理解することができないようですか?誰か知ってる?

23
Jason

これを行う唯一の方法は、 'start'パラメーターを指定してWebサービスを複数回呼び出すことだと思います。

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

32
rforte

「&rsz = 8」を使用できます。以下を参照してください...

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

13
user2862302

これを行う方法を疑問に思う方のために、かなりいくつかの方法があります。 1つは、特定のイベントに基づいてループクエリを実行することです。したがって、たとえば...

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、btwを使用)は、お気に入りのポップスターの最初の4つの画像を取得します。ここから結果の数をカウントし、それが十分でない場合は、今回はstartNumber引数を増やして、getBiebを再度実行します。

5

Google Feedにはオプションのメソッドがあり、ここでnoを指定できます。取得したい結果の。このメソッドを指定しない場合、デフォルトはnoです。あなたが得る結果の4は4ですが、それ以上を得るには。フィードの中で、このオプションのメソッドを次のように指定できます。

_feed.setNumEntries(int);
_

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

.setNumEntries(num)は、このフィードによってロードされるフィードエントリの数をnumに設定します。デフォルトでは、Feedクラスは4つのエントリをロードします。

.setNumEntries()には戻り値がありません。

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

2
defau1t

以下を使用して8つの結果を取得します

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

その後forループを配置すると、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;
         }

?>

1
Danish Iqbal

訪問... このリンク 必要なメソッドについて:setResultSetSize(num)

0
mdromed

あなたが望むならあなたはより多くを得ることができます

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