2010-04-01 89 views
4

是否可以使用PHP提取搜索结果的总数来搜索Google搜索结果页面?谷歌搜索:以PHP结果页面为总结果

如果是这样,我该怎么做呢?

感谢

+1

我觉得这是对服务条款的规定;) – 2010-04-01 13:07:28

+1

谷歌提供可以通过PHP中使用的搜索API。从未使用过,但可能获得全部搜索结果:http://code.google.com/apis/ajaxsearch/documentation/#fonje_snippets – mre 2010-04-01 13:14:50

+0

如果您连续数次搜索结果,Google可能会阻止你的IP。如果你打算定期这样做,那么你将不得不通过代理或限制每小时的连接数量 – Chris 2010-04-01 13:27:32

回答

5

这个PHP类做的:http://www.phpclasses.org/browse/package/3924.html

“这个类可以用来获取结果给出 谷歌搜索查询的 总数

它访问。 Google搜索网站以 执行查询为给定搜索条件 。

该类解析结果页面,并提取给定搜索查询返回的结果总数 。“

6

尝试这种使用phpsimplehtmlparser

$search_query = 'google'; 
$url = sprintf('http://www.google.com/search?q=%s', $search_query); 
$html = file_get_html($url); 
$results = $html->find('#resultStats/b', 2)->innertext; 

echo sprintf('Google found %s results for "%s"', $results, $search_query); 
2

你需要一群取决于你打算发送请求的数量代理。 您可以每天发送约500个请求和IP /代理,而不会造成麻烦或检测到。

您应该阅读google-rank-checker.squabbel.com文章,其中包含PHP中的全功能刮板。使用该刮板,将其修改为您的要求并添加phpsimplehtmlparser(另一个答案)的代码以获取关键字的总点击量信息。

我建议使用libCURL来访问Google本身。 与使用更简单的API相比,您将拥有更多的选择,因为Google很快就会阻止您的脚本,所以您不会对file_get_html()或类似的php内部函数有太多乐趣。

事情是这样的:

curl_setopt ($ch, CURLOPT_HEADER, 0); 
    curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER , 1); 
    $curl_proxy = "$IP:$PORT"; 
    curl_setopt($ch, CURLOPT_PROXY, $curl_proxy); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 20); 
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.0; en; rv:1.9.0.4) Gecko/2009011913 Firefox/3.0.6"); 
    $url = sprintf('http://www.google.com/search?q=%s', $keyword); 
    curl_setopt ($ch, CURLOPT_URL, $url); 
    $htmdata = curl_exec ($ch); 

现在只需要使用正则表达式()/ SUBSTR()/的strstr()来抓住从$ htmldata

1

的数据我使用这个PHP脚本来找出我的名字在google搜索中的总结果。在上述

我的名字定义的路径

<?php
$homepage = file_get_contents('http://www.google.co.in/search?ix=nh&sourceid=chrome&ie=UTF-8&q=Mohit+dabas');
preg_match('/(About)?([\d,]+) result/si', $homepage, $p) ;
echo $p[0];
?>

主要的事情要注意的是“& Q”参数包含空格,因此浏览器增加了“+”,以它

所以你应该检查你的查询(即& q)的参数,如果你的查询包含一些特殊的

字符like。,:,%等,那么你应该注意他们是如何处理的浏览器a nd

更改参数acc。到你的需要int脚本。

srry对于英文不好