我给出一个实际不存在,打不开的链接,结果CURL执行下来errno总是为0,也就是取得成功,网页代码也取到了,但显然是不对的。如何不根据取得的网页内容判断curl抓取网页是否成功?

解决方案 »

  1.   

    是不是网站对不存在的页面做特殊处理了?例如显示一个提示该页不存在的页面,但HTTP状态码仍旧是200
      

  2.   

    浏览器中打开为“您指定的网页无法访问! ”,这确实是页面,不过是本地的360作的处理吧?
    在IE8中自动跑bing那边去了,这情况跟360类似。
    这两种情况都说明打开的链接是无效的,curl直接提取的话应该不会像360和ie那样处理吧。
      

  3.   

    http://www.164.com
    http://defg.abc.fg
      

  4.   

    curl_exec的函数说明如下:
    Returns TRUE on success or FALSE on failure. However, if the CURLOPT_RETURNTRANSFER  option is set, it will return the result on success, FALSE  on failure. 所以当返回值是0的时候,就是获取失败了,返回1才是成功的。
      

  5.   

    <?php
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://defg.abc.fg");
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $ret = curl_exec($ch);
    var_dump($ret);
    var_dump(curl_error($ch));
    curl_close($ch);
    执行结果
    bool(false)
    string(35) "Couldn't resolve host 'defg.abc.fg'"