как получить ВСЕ результаты поиска Google с помощью API

Мне нужно получить результаты поиска Google по запросу. Но используя что-то вроде этого

$query = 'Nikita Platonenko';
$url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=".urlencode($query);
$body = file_get_contents($url);
$json = json_decode($body);
var_dump($json)

я получаю только 4 результата, я уже читал о поиске google ajax, но не мог его понять. Посоветуйте, пожалуйста, как получить все результаты, или только первые 100 результатов?


person user1279525    schedule 27.12.2012    source источник
comment
Тот же вопрос: Google AJAX API - Как сделать У меня более 4 результатов?   -  person kenorb    schedule 22.11.2014


Ответы (2)


<?php
$query = 'Nikita%20Platonenko';
$url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&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: ";
echo $json->responseData->results[$x]->url;
echo "<br>VisibleURL: ";
echo $json->responseData->results[$x]->visibleUrl;
echo "<br>Title: ";
echo $json->responseData->results[$x]->title;
echo "<br>Content: ";
echo $json->responseData->results[$x]->content;
echo "<br><br>";

}

?>

Поскольку AJAX Api теперь устарела, вы можете использовать стороннюю службу, например SerpApi, чтобы получать результаты Google. У них есть репозиторий GitHub, и его должно быть легко интегрировать:

$query = [
    "q" => "Coffee",
    "google_domain" => "google.com",
];

$serp = new GoogleSearchResults();
$json_results = $serp.json($query);
person Monchito    schedule 24.03.2013
comment
это отличный пример. вы можете сказать его ограничения. Спасибо - person rakibtg; 16.07.2013
comment
@Monchito, спасибо за отличный ответ, у меня небольшой запрос, он дает только 4 результата, как я могу получить больший результат - person M Gaidhane; 21.01.2014
comment
чтобы получить больше результатов, запустите еще один запрос к серверу с параметром start. как 2_ - person shyammakwana.me; 03.01.2015
comment
это все еще работает? не удалось заставить его работать - получить NULL json. спасибо - person tony gil; 04.09.2015
comment
привет, это работает для меня. Мне нужна только первая ссылка из результата поиска. но я хочу знать, что это бесплатно по этой ссылке ($ url = ajax.googleapis.com/ajax/services/search/;) или есть какое-то ограничение? - person stackers; 15.02.2016
comment
На момент написания этой статьи больше не работаю. Возвращает: {responseData: null, responseDetails: API веб-поиска Google больше не доступен. Перейдите на API пользовательского поиска Google (developers.google.com/custom-search) , responseStatus: 403} - person slothstronaut; 15.09.2016
comment
Не работает. Выдает ошибку - person Visakh B Sujathan; 31.01.2018
comment
JSON API новее и не является устаревшим. Он может обрабатывать 10 тысяч запросов в день. - person Bangkokian; 11.10.2018

Ответ:

Вот что я успешно использую:

http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=[q]&key=[key]&cx=[account]&rsz=large&userip=[userip]&start=[start]

Я не думаю, что вы полностью контролируете, сколько результатов можно получить в запросе. Но вы можете контролировать размер результатов (rsz=large) и его начало.

Прочие примечания:

Кроме того, всегда полезно указать IP-адрес пользователя. Потому что Google ограничивает количество запросов на основе уникальных IP-адресов (то есть количество запросов с IP-адреса). Поэтому, если все они поступают с вашего сервера, вы будете ограничены в количестве запросов, которые вы можете отправить, но ограничения значительно уменьшатся, если вы отправите IP-адрес пользователя. Кроме того, кеширование результатов на пару дней - дополнительный бонус.

person Joseph at SwiftOtter    schedule 27.12.2012
comment
я не мог понять где взять ключ и аккаунт - person user1279525; 27.12.2012
comment
developers.google.com/custom-search/v1/overview. - person Joseph at SwiftOtter; 27.12.2012