我需要一个简单的采集程序去采集GOOGLE的SERP数据。
不需要大规模的,类似小偷程序。半自动去采集GOOGLE SERP一页一页去分析即可。1,用file_get_contents("$url");函数获得GOOGL SERP 的URL
2,preg_match_all($preg, $con, $arr);通过正则分析出需要的内容
3,ECHO 输出。这3步,似乎是读不到GOOGLE的内容的。注:百度就可以。后来,模拟蜘蛛方法也不行。需要怎么办?谢谢

解决方案 »

  1.   

    我就是用curl 模拟搜索引擎蜘蛛的.
      

  2.   

    用CURL模拟火狐浏览器
    结果GOOGLE返回:302 Moved
    The document has moved here.
      

  3.   

    要GET google数据,不可能。就像你永远得不到 BING SHOPPING 的IFRAME 页面。
      

  4.   

    以下,是我使用的代码.得到的结果是我在4楼的回帖:
    <?php $copyrightdmmaocom = "Copyright &copy; 2009-2010 <a href=\"http://www.dmmao.com\">dmmao.com</a> 版权所有"; 
    $search=$_GET['wd']; //接收关键词
    $search=strtr($search,' ','+'); //将空格转换为+号
    $search=strtr($search,'_','+'); 
    $start=$_GET['start']; //翻页
    $v000001=$_GET['yz']; //简体,繁体,英文
    function v000002($v000003)  

    if (preg_match('/^(['.chr(228).'-'.chr(233).']{1}['.chr(128).'-'.chr(191).']{1}['.chr(128).'-'.chr(191).']{1}){1}/',$v000003) == true ||preg_match('/(['.chr(228).'-'.chr(233).']{1}['.chr(128).'-'.chr(191).']{1}['.chr(128).'-'.chr(191)."]{1}){1}$/",$v000003) == true ||preg_match('/(['.chr(228).'-'.chr(233).']{1}['.chr(128).'-'.chr(191).']{1}['.chr(128).'-'.chr(191).']{1}){2,}/',$v000003) == true)  

    return true; 
    }else{ 
    return false; 


    if($start==''){ 
    $start = '0'; 

    if(v000002($search)){ 
    $search=mb_convert_encoding("$search",'GBK','UTF-8'); //转换字符编码.将$search的UTF-8编码转换为GBK
    $search=urlencode($search); //编码转换
    }else{ 
    $search=urlencode($search); 

    if($v000001==0 or $v000001==''){
    $v000007 = "http://www.google.com.hk/search?hl=zh-CN&q=$search&start=$start"; 
    }else if($v000001==1){ 
    $v000007 = "http://www.google.com.hk/search?hl=en&source=hp&q=$search&btnG=Google+Search&aq=f&aqi=&aql=&oq=&gs_rfai=&safe=off&start=$start"; 
    }else if($v000001==2){ 
    $v000007 = "http://www.google.com.hk/search?hl=zh-TW&safe=off&q=$search&meta=&aq=f&aqi=&aql=&oq=&gs_rfai=&start=$start"; 

    $search=urldecode($search); 
    function v000010($v000007){ 
    $v000011 = array( 
    'GET / HTTP/1.1',
    'Host: www.google.com.hk',
    'Accept-Encoding: gzip, deflate',
    'User-Agent:Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0', 
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
    'Accept-Language: zh-cn,zh;q=0.5', 
    'Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7', 
    'Keep-Alive:300', 
    'Connection:keep-alive' 
    ); 
    $v000012 = curl_init(); //初始化一个cURL会话
    curl_setopt ($v000012,CURLOPT_URL,$v000007); //需要获取的URL地址,也可以在curl_init()函数中设置。 
    curl_setopt ($v000012,CURLOPT_RETURNTRANSFER,1); //将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。 
    curl_setopt ($v000012,CURLOPT_CONNECTTIMEOUT,10); //在发起连接前等待的时间,如果设置为0,则无限等待。 
    curl_setopt($v000012,CURLOPT_HTTPHEADER,$v000011); //一个用来设置HTTP头字段的数组。使用如下的形式的数组进行设置: array('Content-type: text/plain', 'Content-length: 100') 
    $v000015 = curl_exec($v000012); 
    return $v000015; 

    $file=v000010($v000007); 
    echo $file=mb_convert_encoding("$file",'GBK','UTF-8'); 
    //$title=$search; ?> 
      

  5.   


    10楼的兄弟 能否详细 说下,俺 的PHP水平太差.
      

  6.   

    google使用的是js代码返回结果。
      

  7.   

    不是的吧通过源码可以看到HTML结果 的
      

  8.   

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
    这个选项是必须的.
      

  9.   

    curl_setopt ($v000012,CURLOPT_FOLLOWLOCATION,1);按楼上说的,我加了 
    测试下结果为空 页面空白,什么值也没返回
      

  10.   


    告诉你问题出在哪第一个 先得到google 页面获取cookie.
    第二个你get参数的时候将cookie数据带上这样处理就应该可以了,自己去看怎么处理cookie吧 很简单的东西.
      

  11.   


    谢谢,我试试.
    1,我试过禁止浏览器COOKIE 不行的.
    2,我通过function v000010($v000007){ 
    'Cookie: PREF=ID=a43f726c945b4686:U=954fde706d336345:FF=2:LD=zh-CN:NW=1:TM=1312939459:LM=1315186505:S=HdTe33iarK_xfFUa; NID=50=efEvRrqCIBLwKKHd2RuGf34Y4n-vFvA6Z7d7Hwe2Cxe1HhsbPITrLNVhJxwpwHcQyzR37Ggxc3l-HIe6yazTrbG1-Laq6ppUq1fsxgsL3MQ6YdUjoIHh872U-Mf0tNVy'
    }
    加了返回COOKIE 还是不行的.
    PS:这个COOKIE我是通过火狐插件获取的
      

  12.   


    我试过了,先得到COOKIE,再去GET。
    还是无法采集到内容的。
    有时,采集回来的是乱码,我也看不懂是不是内容了。
      

  13.   

    用这个地址去抓http://www.google.com.hk/search?q=123
      

  14.   

    用火狐的httpfox可以 查看来源地址,可能是html页面、也可能是js文件,但是都能查到
      

  15.   

    为什么不用google的api?
    http://code.google.com/apis/customsearch/v1/overview.html直接采集页面,google的改版随时可能会影响你的结果。
     
      

  16.   

    这个贴不知道还能不能给分。首先去 http://simplehtmldom.sourceforge.net/ 下载一个 simple_html_dom.php。然后如下代码……<?php
    header("Content-type: text/html; charset=utf-8");
    require('simple_html_dom.php');
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://www.google.com/search?hl=zh-CN&biw=1366&bih=649&q=ajax&oq=ajax+comment&aq=f&aqi=g9g-m1&aql=&gs_sm=e&gs_upl=5916l9958l0l10319l16l14l1l0l0l0l267l1925l0.6.4l10l0');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB5');
    $htmls = curl_exec($ch);
    $html = str_get_html($htmls);
    foreach($html->find('div[id=search]') as $element){ 
           $fata = $element->find('li');
       foreach ($fata as $link) 
       echo $link->innertext.'<br />';
    }
    ?>已测试,完美获取google搜索数据。