2

我正在寻找一种 API,它可以为 Google 的“人们也搜索”功能提供类似的结果。因此,例如,当我搜索斯坦利·库布里克时,我会看到人们搜索的所有其他电影导演。

我知道Freebase API,但它只是提供有关搜索项的信息,而不是它可能与其他搜索项相关的信息。

Google AdWords API 中还有一个TargetingIdeaSelector工具,可以显示相关关键字,但这并没有真正从语义上确定结果范围。

最后,有一个非常简单的Bing API 可以显示相关搜索(也在此处),但同样,它没有语义范围内的信息。

您是否知道任何 API,或者 Google 的 API 中是否有类似的东西可以向我显示语义范围内的相关搜索?

4

2 回答 2

0

谷歌曾经提供过这样的 API,但几年前它被取消了。我不确定为什么会这样,但我的猜测是因为它对他们没有真正的好处,而且维护成本可能很高。根据我的经验,大多数主要搜索引擎往往没有搜索 API。

但是,您可以尝试使用 PHP 和 DOM 解析器自己制作,以解析来自 google 之类的结果并将数据导出为 JSON。

可在此处下载http://simplehtmldom.sourceforge.net

这应该会从 Google 中提取所有链接,然后您可以对其进行格式化。您可以解析所有数据并可以定位对象,请参阅文档了解更多信息

  $search = $_GET['search'];
> $google_search = file_get_html('https://www.google.co.uk/?gws_rd=ssl#q=' . $search);
> 
> foreach($google_search->find('a') as $item) {
>       echo $item->href . '<br>';
> }

希望有帮助

于 2014-09-16T17:26:58.007 回答
0

谷歌显示的结果是基于大量数据,我猜这些数据是建立在“搜索 Y 的 X 还搜索了什么”、“搜索 Y 的与 X 相似的其他人搜索了什么”等基础之上的。此外,也许对来自 Freebase 的语义信息有一定的依赖。

为了了解谷歌在他们的信息框中显示什么样的属性,即为什么当我们搜索法国时,我们会得到一张带有地图、国旗、首都、人口......等的卡片。在与法国相关的数百个属性中,我创建了一个“知识库提取器”能够解析 Google 信息框并使用菲涅耳词汇表将数据公开为 RDF。

实现的算法如下:

  • 查询所有概念(类型)的 DBpedia,其中至少有一个实例具有指向 Freebase ID 的链接
  • 对于这些概念中的每一个,随机选择 (n) 个实例
  • 对于每个实例,发出一个 Google 搜索查询:
  • 如果信息框可用 -> 废弃信息框以提取属性
  • 如果没有可用的 infoxbox,请检查 Google 是否建议“您的意思是……?” 如果是这样,遍历链接并寻找一个信息框
  • 如果没有可用的信息框或更正,请消除搜索查询中使用的概念(类型)的歧义,并检查是否返回了信息框
  • 如果 Google 建议在信息框中消歧,请解析其中的所有链接 -> 最好找到哪些建议映射到我们正在使用的当前数据类型 -> 检查 Freebase - DBpedia 映射
  • 每个概念的聚类属性

我还捕获了“搜索的人”部分,但您可能还想对其进行更多调整。

另请注意,您可能需要检查信息框的 CSS 选择器,因为 Google 经常更改它们(可能是自动生成的)。这是在options.json

"knowledgeBox"                : "#kno-result",
"knowledgeBox_disambiguate"   : ".kp-blk",
"property"                    : "._Nl",
"property_value"              : ".kno-fv",
"label"                       : ".kno-ecr-pt",
"description"                 : ".kno-rdesc",
"type"                        : "._kx",
"images"                      : ".bicc",
"special_property"            : ".kno-sh",
"special_property_value"      : "._Zh",
"special_property_value_link" : "a._dt"
于 2014-11-21T14:44:17.567 回答