我想在php中搜索谷歌搜索结果

时间:2012-02-22 10:14:08

标签: php curl

我尝试了以下代码:

$url = 'http://www.google.co.uk/#q='.$query.'&hl=en&prmd=imvns&source=lnt&tbs=ctr:countryUK%7CcountryGB&cr=countryUK%7CcountryGB&sa=X&psj=1&ei=m65DT_yUAcnG0QX46_yPDw&ved=0CEEQpwUoAQ&bav=on.2,or.r_gc.r_pw.r_cp.,cf.osb&fp=2e9b4f7fb1e75d0d&biw=1440&bih=799';

$ch = curl_init();

curl_setopt($ch, CURLOPT_PROXY, '192.168.0.1:1501');
curl_setopt($ch, CURLOPT_REFERER, 'www.google.com');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);

$contents = curl_exec($ch);

curl_close($ch);

echo $contents;

但它显示谷歌主页而不是谷歌搜索结果页面。 帮我解决这个问题。

4 个答案:

答案 0 :(得分:12)

我成功地绕过谷歌试图通过以下方式阻止卷曲搜索:

$useragent = "Opera/9.80 (J2ME/MIDP; Opera Mini/4.2.14912/870; U; id) Presto/2.4.15";
$ch = curl_init ("");
curl_setopt ($ch, CURLOPT_URL, "http://www.google.com/search?hl=en&tbo=d&site=&source=hp&q=".$query);
curl_setopt ($ch, CURLOPT_USERAGENT, $useragent); // set user agent
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
echo $output = curl_exec ($ch);
curl_close($ch);

请注意我使用的用户代理是一个古老的Opera迷你浏览器。这样谷歌会显示一个你可以解析的HTML内容。

这是针对Google TOS的,请不要滥用;)

[编辑]使用$query = urlencode($query)

答案 1 :(得分:2)

在这个特定情况下,您无法使用,因为Google专门设计了此网址,因此无法使用此网址。您会注意到(正如Quentin所指出的)url使用的是锚字符串,而不是标准的查询字符串语法(变量应该在?之后,但在这种情况下,它们会在{{1}之后出现})。谷歌有一段javascript抓取锚字符串,然后使用ajax将内容加载到结果框架中。因此,#file_get_content无法从此网址获取结果。

还有其他地方可以传递正确的查询字符串:

http://www.google.ca/search?q=query+filetype%3Apdf+site%3Ayour_domain.com&hl=en&num=10&lr=lang_en&ft=i&cr=&safe=images

它可以获取,但这几乎肯定违反了谷歌的TOR,所以谨慎行事。此外,还有一项付费的Google服务,可让您轻松完成此操作,而且不会有任何令人讨厌的诉讼威胁。

答案 2 :(得分:0)

其他人是正确的警告你检查TOS以及你在网址中使用的锚看起来不正确的事实。但即使该锚不存在,您仍然应该获得主页。所以我认为这可能会导致问题:

你确定要使用的代理工作正常吗?在没有这一行的情况下进行测试:

curl_setopt($ch, CURLOPT_PROXY, '192.168.0.1:1501');

另外,他们可能会进行一些涉及用户代理的检查而您没有提供任何价值,因此请考虑添加如下内容:

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1');

答案 3 :(得分:0)

在以下链接中查看Php Access。

https://developers.google.com/web-search/docs/

  

$ url =“https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=Paris%20Hilton&userip=USERS-IP-ADDRESS”;

     

$ ch = curl_init();

     

curl_setopt($ ch,CURLOPT_URL,$ url);

     

curl_setopt($ ch,CURLOPT_RETURNTRANSFER,1);

     

curl_setopt($ ch,CURLOPT_REFERER,/ *在此输入您网站的网址* /);

     

$ body = curl_exec($ ch);

     

curl_close($ CH);

     

//现在,处理JSON字符串

     

$ json = json_decode($ body);