我都贴了好几次了,上网搜索一下很多,怎么这么懒
http://www.tianjiaonet.com/blog.php?aid=7&BlogID=1

解决方案 »

  1.   

    to  Meteorlet(www.dictworld.com):
    能否给点解释,我试了N久,都没通过……(主要是我对原理不理解,麻烦说明一下,多谢)
      

  2.   

    不知道怎么设置。你那个
    $str = ("username=写用户名?&password=写密码?"); 
    $response = GetWebContent("www.163.com","POST /login.php HTTP/1.0", $str); ??运行,长时间没有反应
      

  3.   

    期待高人来解决。连续抓取的问题已经困扰我几天了。虽然我已经找到局部的解决方案。然而并不适用所有的web服务器。
    fgets,fread。
      

  4.   

    http://community.csdn.net/Expert/topic/4434/4434547.xml?temp=.212414
      

  5.   

    特别声明:反复请求,请准备驳斥我的朋友仔细看好了,是反复请求,我已经研究几天了。我可以确定以下这个循环不适用反复请求数据的过程,它只能适用你的第一次请求。    
    while(!feof($fp)) 
        { 
            $response .= fgets($fp, 1024); 
        } 也已经肯定以下这个循环在反复请求中也不行,会fread超时。
    do {
        $data = fread($handle, 8192);
        if (strlen($data) == 0) {
            break;
        }
        $contents .= $data;
    } while(true);
      

  6.   

    一、连续抓取确实没能成功,可以再次 fwrite($fp, $buffer),但不能再次读取fread($fp, $buffer),我现在是每次写入、读取之后都用 fclose($fp) 结束一下,然后再用 fsockopen 打开;二、超时问题确实也是很头痛,不过我确实不太明白:无论我是否设置stream_set_timeout()和set_time_limit(),程序最后都会超时,为什么呢?
    读取部分如下:        while (!feof($fp))
            {
             $buffer=fgets($fp, 8192);
             $contents .= $buffer;
            }看到网上很多抓取其他网站页面内容的栏目,相信肯定有相应的解决办法,还望各位不吝赐教,谢谢!
      

  7.   

    那是因为fputs或者fread超时。
    这个问题可能是网络故障。我推测fread或者fgets或者fputs本身就是如果失败不断重试的过程。所以超时可能是陷入死循环了。这个问题我没有解决。我只解决了后续读取的问题。
      

  8.   

    to  gu1dai(异域苍穹......追夢人) :
    如果是网络故障当然没办法,但在网络正常的情况下,明明用浏览器可以随时、任意访问,但用PHP 通过fsockopen()连接服务器,去fread就是超时,真是搞不懂!
      

  9.   

    其实,有时候还是应该推崇拿来主义
    http://snoopy.sf.net
      

  10.   

    拿来主义有些道理,snoopy可基本满足需要,正在学习中……两天后结贴,谢谢大家。