Подтвердить что ты не робот

API Google AJAX. Как получить более 4 результатов?

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

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

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

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

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

4b9b3361

Ответ 1

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

Ответ 3

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

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) пойдет и захватит первые четыре изображения вашей любимой поп-звезды. Отсюда он подсчитывает количество результатов, и если этого недостаточно, он снова запустит getBieb, за исключением того, что время с аргументом startNumber увеличивается.

Ответ 4

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

feed.setNumEntries(int);

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

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

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

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

Ответ 5

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

? >

Ответ 6

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

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

Ответ 7

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