谷歌搜索自动完成 API?

Posted

技术标签:

【中文标题】谷歌搜索自动完成 API?【英文标题】:Google Search autocomplete API? 【发布时间】:2011-09-19 16:29:28 【问题描述】:

Google 是否像在实际网站上一样提供 API 访问来自动完成搜索?我什么都没找到。

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

【问题讨论】:

昨天和今天之间的某个时间,google.com/complete/search?q=<Your 这里的关键字>&hl=en 停止工作。这意味着 xlune 和 blinkdash 上的自动完成功能也停止工作。谷歌改变了一些东西,直到有人弄清楚那是什么,试图访问他们的自动完成是行不通的。 【参考方案1】:

新的网址是:

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 日起停止工作:Update on the Autocomplete API

【讨论】:

改用这个:suggestqueries.google.com/complete/…,因为如果您使用 client=firefox,回调将不起作用 尝试一个真实的查询,例如:suggestqueries.google.com/complete/… 根据 Google http://googlewebmastercentral.blogspot.ca/2015/07/update-on-autocomplete-api.html 的公告,从 2015 年 8 月 10 日起,对自动完成 API 的“未经授权”访问似乎会受到限制。 现在是 01-19-2016,API 仍然可用。自从最初的公告以来,有人看到过这方面的更新吗? 是的。我仍然可以使用 API。看起来工作正常哈哈。【参考方案2】:

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

保存设置后,返回 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= 后面看到您的搜索词。

&amp;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/

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

似乎不再起作用了...我得到一个包含以下内容的文档:["YOURQUERY",[]] - 没有别的。 啊哈!好的,所以它确实有效。 :) 只是“YOURQUERY”是 Google 无法完成的。哈哈。 suggestqueries.google.com/complete/… 给出了一些正确的结果。 有谁知道如何为android Studio for an android apk 进行这项工作?【参考方案4】:

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

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

【讨论】:

你能提供更多关于这是什么的信息吗?我试了一下,它让我下载了一个文件。自己去看看吧。 是的,贾斯汀,该文件是 JSON 响应。您可以使用 javascript 来使用它。如果您使用的是 linux,您可以使用记事本或 vim 打开该文件来查看原始结果。 适用于网络浏览器,但似乎不适用于本机应用程序。无法让请求在 ios 或 Android (Swift/Java) 中运行。【参考方案5】:

您应该使用 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

【讨论】:

这是地图特有的。 @HappyFace 是的,这是谷歌地图服务。您可以使用它来搜索地点。【参考方案6】:

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

据我所知,google 没有提供,但它们确实存在,例如 jQuery UI's auto-complete.

编辑:

如果您使用他们的自定义搜索 API 视图 here for autocomplete.

【讨论】:

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

以上是关于谷歌搜索自动完成 API?的主要内容,如果未能解决你的问题,请参考以下文章

使用带有 select2 的谷歌地图自动完成 api

如何从谷歌地图自动完成 api 获取邮政编码

使用特定城市的谷歌地图 API 获取自动完成的地址

谷歌地图放置自动完成加载事件

青椒论坛丨搜索引擎自动完成算法的地域歧视考察

谷歌地图自动完成动态数组