【发布时间】:2012-02-10 21:55:27
【问题描述】:
简而言之,我正在寻找一种方法来做到这一点:
$results_array = google("search terms"); // returns array of URLs
因此,例如,如果我的搜索词是“猫视频”,我的 $results_array[0] 可能是 Youtube URL,$results_array1 可能在 Vimeo 上。
我见过 Google 自定义搜索 API,但它们都需要复杂的 JSON 转换、ATOM、REST 或其他一些系统,这对于我想要做的事情来说过于复杂。
有没有简单的解决方案?
编辑:我找到了,感谢另一个帖子
感谢this post 我能够弄明白。简而言之,我只是使用了以下内容:
$results = json_decode(file_get_contents(
'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q='.
urlencode($search)));
echo $results->responseData->results[$resultNumber]->url;
我对投反对票感到有些惊讶和失望——这似乎是一个很常见的问题,实际上,答案很简单。这确实涉及 JSON,但它对用户完全透明。也许对我所问的更准确的解决方案是:
function google($query) {
$results = json_decode(file_get_contents(
'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q='.
urlencode($search)));
return $results->responseData->results
}
【问题讨论】:
-
JSON 是如何过于复杂的?似乎是您实施的首选。绝对比解析 HTML 搜索结果简单...
-
google 不喜欢任何试图绕过他们的 api 的东西,所以如果你试图提出直接请求并解析结果 - 你的主机可能会被禁止。