目标地址 www.zhibo8.com本地环境:windows xp + xmapp 1.7.7
file_get_contents 或者 curl 都没问题,首页面完全获取;放到国外的服务器上,linux, Apache 2.0
file_get_contents 为空
curl 会和浏览器访问打开的不一致,内容少好多,但是<body><html>结束标签是全的。而且我用curl发送模拟浏览器的全部header也是一样不完整。请大伙帮分析一下,可能存在的原因及如何解决,谢谢!

解决方案 »

  1.   

    估计是linux环境的问题吧
    我之前抓www.fblife.com也是windows下curl测试通过,但同样代码linux下就得不到完整的
    这个网站我在Ubuntu9.10下CURL测试通过,可以抓取完整,不知道是不是你linux配置问题?
      

  2.   

    暂时木有很纠结
    说来奇怪,程序放到网站目录下,从浏览器访问程序文件抓取的信息很完整,linux,windows都可以,但是,linux后台抓取就是不行,怎么做都抓不全,我估计可能是linux配置的问题。楼主可以试一下wget命令
      

  3.   

    看看编码问题吧
    $string = iconv('gb2312', 'utf-8//ignore', $string);  
      

  4.   

    到国外的服务器上
    file_get_contents 为空
    可能未开放权限,也可能超时curl 会和浏览器访问打开的不一致,内容少好多
    那是一个纯中文网站,在国外看不到或看不全是很正常的。没有多少人能看懂中文
    当然也与超时和curl支持库有关
      

  5.   


    目标服务器在美国,我的服务器在日本,而且以前我用在美国的服务器采集也会出现掉内容的情况,应该不是编码的原因,而且body html 结束标签都完好
    国外的服务器都是linux
      

  6.   

    本机 cURL Information  7.21.7 
    服务器 cURL Information 7.19.7
      

  7.   

    发现一个很悲催的问题,设置项太多了,就会出问题function curl_file_get_contents($durl){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $durl);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $r = curl_exec($ch);
    return $r;
    }这样就好了,我擦擦擦啊,我想得太复杂了
    模拟浏览器请求,着魔了
      

  8.   

    才发现php牛牛升格为版主了啊