如何使用api获得所有谷歌搜索结果


how to get ALL google search results using api

我需要得到谷歌搜索结果查询。但是使用像这样的

$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个结果,我已经读过关于谷歌ajax搜索,但无法理解它。请建议如何获得所有结果,或只是前100个结果?

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

答案:

下面是我成功使用的:

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地址,限制就会大大降低。此外,将结果缓存几天也是一个额外的好处。