谷歌搜索自动完成API?

75

谷歌是否提供类似实际网站上的自动完成搜索的API访问?我找不到任何相关信息。

我想在我的网站上使用谷歌的自动完成搜索逻辑,该网站依赖于谷歌的搜索API。


2
在昨天和今天之间,http://google.com/complete/search?q=<您的关键词>&hl=en 停止工作了。这意味着 xlune 和 blinkdash 上的自动完成功能也停止工作了。Google 改变了一些东西,直到有人弄清楚是什么,尝试访问他们的自动完成功能将不起作用。 - user1071560
7个回答

79

4
请尝试一个真实的查询,例如:http://suggestqueries.google.com/complete/search?client=firefox&q=superstar。 - RickyA
2
根据谷歌的这篇公告[http://googlewebmastercentral.blogspot.ca/2015/07/update-on-autocomplete-api.html],从2015年8月10日开始,似乎对自动完成API的“未经授权”访问将受到限制。 - user2067021
2
现在是2016年1月19日,API仍然可用。自最初的公告以来,有人看到更新吗? - bridiver
2
是的。我仍然能够使用API。看起来工作正常,哈哈。 - GeneCode
显示剩余6条评论

13

首先,转到 Google,点击设置(右下角),将搜索设置更改为“从不显示即时结果”。这样,您将获得常规的自动完成而不是整个页面的即时结果。

在保存设置后,返回 Google 主页。打开浏览器的开发者工具,进入网络选项卡。如果您使用的是 Firefox 浏览器,则可能需要重新加载页面。

在搜索框中输入一个字母。刚才打开的网络窗口中应该会出现一行新的记录。该行记录显示了自动完成数据的来源。复制该 URL。它应该长成这样:

https://www.google.com/complete/search?client=hp&hl=en&sugexp=msedr&gs_rn=62&gs_ri=hp&cp=1&gs_id=9c&q=a&xhr=t&callback=hello

在“q=”部分之后,您将注意到搜索词。

在URL的末尾添加“&callback=myAmazingFunction”。您可以将myAmazingFunction替换为任何您想要命名处理数据的函数名称。

这是显示搜索词“a”的自动完成数据所需的代码示例。

<div id="output"></div>

<script>
/* this function shows the raw data */
function myAmazingFunction(data){
    document.getElementById('output').innerHTML = data;
}
</script>

<script src="https://www.google.com/complete/search?client=hp&hl=en&sugexp=msedr&gs_rn=62&gs_ri=hp&cp=1&gs_id=9c&q=a&xhr=t&callback=hello&callback=myAmazingFunction"></script>

现在您已经知道如何获取数据,下一步是自动更改最后一个脚本(具有自动完成URL的脚本)。基本的步骤是:每次用户在搜索框中键入某些内容(onkeyup),就替换URL中的搜索词(q = whatever),然后将具有该URL的脚本附加到正文中。删除先前的脚本,以便正文不会混乱。

有关更多信息,请参见http://simplestepscode.com/autocomplete-data-tutorial/


12

上述大部分方法对我有效,具体来说以下方法符合我的目的。

http://suggestqueries.google.com/complete/search?client=firefox&q=YOURQUERY

作为一个Web编程新手,我对"回调"功能和查询返回文件的格式并不十分了解,我对AJAX和JSON有一些了解。 请问有人可以提供更多有关查询返回文件格式的细节吗? 谢谢。


似乎不再起作用了...我得到了一个包含以下内容的文档:["YOURQUERY",[]] - 没有其他东西。 - Stefan Reich
1
啊哈!好的,它确实可以工作。 :) 只有“YOURQUERY”是谷歌无法完成的。哈哈。http://suggestqueries.google.com/complete/search?client=firefox&q=mary+had 给出了一些合适的结果。 - Stefan Reich
有人知道如何在Android Studio中为Android apk使其工作吗? - TheCoderGuy

1

你好,我不知道这个答案对你是否还有用,但是谷歌通过以下get请求返回JSON数据(虽然这不是官方API,但许多工具栏正在使用此API,因此谷歌可能没有停止它的理由):

http://google.com/complete/search?q=<Your keywords here>&hl=en 

3
可以请问这是什么?我尝试了一下,需要下载一个文件。你可以自己试试看。 - Justin Meltzer
是的,Justin,那个文件是JSON响应。你可以使用JavaScript来利用它...如果你在Linux上,你可以通过打开那个文件使用记事本或vim来查看原始结果。 - Sid
在网页浏览器中可以运行,但似乎无法在本地应用程序中工作。无法在iOS或Android(Swift / Java)中使请求正常工作。 - Supertecnoboff

1
你应该使用AutocompleteService,并将文本框的值传递到service.getPlacePredictions函数中。它会在回调函数中发送数据。
let service = new google.maps.places.AutocompleteService();

let displaySuggestions = function(predictions, status) {
}

service.getPlacePredictions({
    input: value
}, displaySuggestions);

基础:https://developers.google.com/maps/documentation/javascript/reference/places-autocomplete-service#AutocompleteService.getPlacePredictions

例子:https://dzone.com/articles/implement-and-optimize-autocomplete-with-google-pl


1
这是特定于地图的。 - HappyFace
1
@HappyFace 是的,这是一个谷歌地图服务。你可以使用它来搜索地点。 - SuNdAr RaJa

0

你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

-2
你想用自动完成功能做什么?提供更多信息可以帮助缩小范围。
据我所知,谷歌并没有提供自动完成功能,但是像jQuery UI的自动完成这样的工具是存在的。
编辑:
如果你正在使用他们的自定义搜索API,请查看这里的自动完成功能

我想提供Google API提供的Web搜索功能以及自动完成。 - Justin Meltzer
好的,谢谢。但我正在搜索整个网络。那么Web搜索API呢? - Justin Meltzer
很抱歉,我找不到有关在整个网络上使用他们的自动完成功能的任何信息。我也不相信Google会让你这样做。 - Collecter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接