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

use*_*525 21 php google-search-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)
Run Code Online (Sandbox Code Playgroud)

我只得到了4个结果,我已经读过谷歌ajax搜索,但无法理解.请告知如何获得所有结果,或只是前100个结果?

小智 28

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

}

?>
Run Code Online (Sandbox Code Playgroud)

由于AJAX Api现已折旧,您可以使用SerpApi等第三方服务获取Google搜索结果.他们有一个GitHub存储库,它应该很容易集成:

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

$serp = new GoogleSearchResults();
$json_results = $serp.json($query);
Run Code Online (Sandbox Code Playgroud)

  • @Monchito感谢您的回答我很少查询它只给出4个结果我怎么能得到更多的结果 (8认同)
  • 写作时不再工作了.返回:{"responseData":null,"responseDetails":"Google Web Search API不再可用.请迁移到Google Custom Search API(https://developers.google.com/custom-search/)", "responseStatus":403} (2认同)

Jos*_*ter 5

答案:

这是我成功使用的内容:

http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=[q]&key=[key]&cx=[account]&rsz=large&userip=[userip]&start=[start]
Run Code Online (Sandbox Code Playgroud)

我认为您无法完全控制查询中可以获得多少结果.但是您可以控制结果大小(rsz=large)以及它的起始位置.

其他说明:

此外,在那里包含用户的IP地址总是好的.因为,谷歌限制了基于唯一IP地址的查询数量(意思是来自ip地址的数量).因此,如果它们都来自您的服务器,您将限制可以发送的查询数量,但如果您发送用户的IP地址,则限制会下降.此外,将结果缓存几天是一个额外的好处.

  • 它只有8个链接 (4认同)
  • https://developers.google.com/custom-search/v1/overview (2认同)