将Google搜索结果读入PHP数组?

5
简而言之,我正在寻找一种方法来实现这个:
$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
}

4
JSON过于复杂了吗?看起来是您实现的首选。绝对比解析HTML搜索结果之类的东西简单。 - kitti
2
谷歌不喜欢任何试图绕过其API的行为,因此如果您尝试直接请求并解析结果,则可能会导致您的主机被禁止。 - Cheery
1个回答

3
如果您想获得视频结果,可以尝试以下方法。
//replace space between words with +
$query = "cat+video"; 
$start = 0;
/*
this url will give you json response with 4 results each time.
u have to change the $start like 0, 4, 8,...
use json_decode() and get it in array
*/

$url = 'https://ajax.googleapis.com/ajax/services/search/video?v=1.0&q='.$query.'&start='.$start

希望这对您有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接