Google 搜索自动完成 API?

问题描述 投票:0回答:8

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

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

autocomplete google-search-api
8个回答
80
投票

新网址是:

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 年 10 月 8 日起停止工作:自动完成 API 更新


13
投票

上述大多数方法都适合我,具体来说以下方法符合我的目的。

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

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


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/


1
投票

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

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

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


0
投票

我正在使用 (( Edrra.com )) API,它具有可与 GET 和 POST 配合使用的 Google 搜索和建议:

谷歌建议: https://edrra.com/v1/api.php?c=google&f=suggest&k=YOUR_API_KEY&v=YOUR_SEARCH

谷歌搜索: https://edrra.com/v1/api.php?c=google&f=search&k=YOUR_API_KEY&v=YOUR_SEARCH

还有更多...


0
投票

您可以使用关键字 Quill,它提供了 Google 自动完成 API。免费获取 API 密钥并向端点发出请求。

用于查找短语“空气炸锅”的自动完成关键字的 JS 示例如下:

const data = JSON.stringify({
  "keyword": "air fryers",
  "gl": "US",
  "hl": "en"
});

fetch('https://api.keywordquill.com/search', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-KEY': 'API KEY'
  },
  body: data
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

-2
投票

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

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

编辑:

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

© www.soinside.com 2019 - 2024. All rights reserved.