解决方案 »

  1.   

    推广的内容是页面加载后再调用js二次请求获取,写入页面的。所以用curl只能获取到html有的东西。
    而js加载的,你需要再用curl去获取它js获取的url得到。
      

  2.   

    你的user-agent没有模拟好,所以不行。
    其实根本不需要用post,直接用get就可以了。
    修改如下:$url = "http://www.baidu.com/s?wd=生命动力";$header = array (
            'User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36'
    );
    $ch = curl_init ();
    curl_setopt ( $ch, CURLOPT_URL, $url );
    curl_setopt ( $ch, CURLOPT_HTTPHEADER, $header );
    curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    // 执行
    $content = curl_exec ( $ch );
    if ($content == FALSE) {
        echo "error:" . curl_error ( $ch );
    }
    // 关闭
    curl_close ( $ch );
     
    //输出结果
    echo $content;
      

  3.   


    感谢你的回复。你的结论是正确的。我这里还有一个问题,就是抓取到的网页图片第一次运行可以显示,之后就显示不了了。查看源代码发现获取到的图片地址是真实地址啊,但就是显示不了,请问有什么思路可以绕过这个防外链。在curl伪造来路好像也行不通。