本帖最后由 yonghuminghaonan 于 2011-07-12 17:03:23 编辑

解决方案 »

  1.   

    <?php
    header("Content-Type: text/html;charset=utf-8");
    //由于请求的搜索信息google会进行处理,所以需添加搜索内容处理过程
    //$str = urlencode("这里是你所要搜索的内容");
    $str = urlencode("csdn论坛");
    $url = "http://www.google.com.hk/search?hl=zh-CN&source=hp&q=".$str."&btnG=Google+%E6%90%9C%E7%B4%A2&meta=lr%3Dlang_zh-CN&aq=f&aqi=&aql=&oq=&gs_rfai=";
    //不知道楼主cookie是放在哪里,我暂且放在这里,需要修改时请楼主自行修改
    $cookie_file = dirname(__FILE__)."/temp/testSearch.txt";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
    $contents = curl_exec($ch);
    curl_close($ch);
    //$contents即为获取的页面所有搜索信息,这里只是输出而已
    //楼主要想获取里面详细内容正则表达式就可以解决,若还有什么疑问,也可以问我,很乐意和楼主讨论
    echo $contents ;
    ?> 这个是写好并刚刚测试过的代码,我这里是没有问题的,不知道要求是否符合楼主的意思,我使用curl模拟抓取网页信息的。
      

  2.   


    首先多谢你的回复,
    curl也想过,但是考虑到有些虚拟主机可能不支持,
    我还专门上googlecode上搜了一个纯php的curl实现方法,却不支持cookie。
    要是有纯php能模拟真实客户端的代码就好了,只要cookie和重定向就足够了...
      

  3.   

    关注,偶也遇到这问题了,某人跟我说不用curl也可以完成这个功能,不知道怎么做的,期待答案
      

  4.   

    实用PHP网页抓取前些日子跟别的公司合作了一个短信投票业务,对方需要把用户上行发送到我们平台,我这需要receive他的数据,然后他需要每发送一个数据我这边判断正确的话就输出一个内容让其抓取。之前只做过接收数据并处理,至于抓取没做过。在网上找了好多关于相关的文档。不过感觉都挺麻烦,最后就直接删除了很多功能代码,不过可以完成自己需要的功能了!
    我说下我做的几个简单步骤:
           1.可以新建一个test页面,如test.php<html>
    <head>
      <title>PHP 网页抓取测试</title>
    </head>
    <body  >
    <?php echo '<p>Hello World!</p>'; ?>
    </body>
    </html>     
         2.新建抓取页面,如zhuaqu.php,代码如下:<html>
    <head>
    <title>实用抓取网页内容测试 </title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body  >
    <?php
    $url = 'http://localhost/test.php'; //测试本地网页
    #$url = 'http://www.myenjoylife.cn/index.php'; //抓取www.myenjoylife.cn首页内容
    $lines_array = file($url); 
    $lines_string = implode('', $lines_array); 
    eregi("(.*)", $lines_string, $head); 
    echo $head[0]; 
    ?>
    </body>
    </html> 3. 完成,就这么简单,如果你想抓取别的网页内容,只要改$url参数变量值,像抓取http://www.myenjoylife.cn的内容改成这个网址就OK啦!