69

Google 是否像在实际网站上一样提供对自动完成搜索的 API 访问?我找不到任何东西。

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

4

6 回答 6

78

新网址是:

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

客户端部分是必需的;我没有测试其他客户。

[编辑]

如果你想要回调使用这个:

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

正如@Quandary 发现的那样;回调不适用于客户端“firefox”。

[编辑2]

如 @ user2067021 所示,此 API 将于 2015 年 8 月 10 日停止工作:自动完成 API 更新

于 2011-12-07T13:20:27.230 回答
13

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

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

在搜索框中键入一个字母。您刚刚打开的网络窗口中应该会出现一个新行。该行显示了自动完成数据的来源。复制那个网址。它应该看起来像这样:

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=

添加&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/

于 2015-02-28T19:57:57.717 回答
12

上述大多数方法都对我有用,特别是以下方法符合我的目的。

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

作为网络编程的新手,我不太了解“回调”功能和查询返回的文件格式。我对 AJAX 和 JSON 知之甚少。有人可以提供有关查询返回的文件格式的更多详细信息。谢谢。

于 2013-10-22T16:51:56.897 回答
1

嗨,我不知道这个答案是否与您相关,但谷歌通过以下获取请求返回 JSON 数据(虽然这不是官方 API,但许多工具栏都在使用这个 API,所以谷歌没有理由停止它):

http://google.com/complete/search?q=<Your keywords here>&hl=en 
于 2011-07-12T14:03:37.513 回答
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

于 2021-03-01T13:47:49.533 回答
-1

您要使用自动完成功能做什么?更多信息将有助于缩小范围。

据我所知,谷歌没有提供,但它们确实像jQuery UI 的自动完成一样存在。

编辑:

如果您在此处使用他们的自定义搜索 API 视图进行自动完成。

于 2011-06-21T16:25:01.763 回答