Google AJAX API - как получить более 4 результатов? - PullRequest
23 голосов
/ 02 февраля 2011

Я использую ajax API Google ниже, чтобы получить изображения для определенных условий поиска. Это делается в приложении WinForms .

Ссылка ниже работает, но возвращает только 4 результата (через JSON)

Кто-нибудь знает, как извлечь из этого пользу?

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

Очевидно, должен быть другой параметр, чтобы запросить больше, или пролистать результаты, но я не могу понять это? Кто-нибудь знает?

Ответы [ 7 ]

32 голосов
/ 02 февраля 2011

Я считаю, что единственный способ сделать это - сделать несколько обращений к веб-службе, указав параметр '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

13 голосов
/ 09 октября 2013

Вы можете использовать «& rsz = 8», см. Ниже ...

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

5 голосов
/ 14 мая 2011

Для тех из вас, кто интересуется, как это сделать, есть немало способов.Можно было бы запустить зацикленный запрос, основанный на определенном событии.Так, например ...

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.

2 голосов
/ 03 марта 2013

Google Feed предоставляет дополнительный метод, в котором вы можете указать нет. результатов, которые вы хотите получить. Если вы не укажете этот метод, по умолчанию нет. результатов вы получите 4, однако, чтобы получить больше нет. из каналов вы можете указать этот дополнительный метод следующим образом:

feed.setNumEntries(int);

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

.setNumEntries (num) устанавливает количество записей фидов, загруженных этим кормить до ну. По умолчанию класс Feed загружает четыре записи.

.setNumEntries () не имеет возвращаемого значения.

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

1 голос
/ 29 апреля 2015

Используйте ниже для получения 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;
         }

?>

0 голосов
/ 18 декабря 2014

Посетите ... эту ссылку о методе, который вам нужен: setResultSetSize(num)

0 голосов
/ 10 сентября 2014

вы можете получить больше, если хотите

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