PHP curl_setopt()抓取网页数据
2015-11-26 11:39:33 小德 PHP 访问次数 1652


curl_setopt()设置一个cURL传输选项  可实现抓取接口数据的Url数据。

$ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_HEADER, false);//初始化一个新的cURL会话并获取一个网页
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_POST, true);//启用时会发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样。
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($par));//全部数据使用HTTP协议中的"POST"操作来发送。http_build_query — 生成 URL-encode 之后的请求字符串
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2500);//超时时间
 curl_setopt($ch, CURLOPT_TIMEOUT, 2500);
 $result = curl_exec($ch);//抓取URL并把它传递给浏览器
   curl_close($ch);



curl功能function
function curl($url,$param=null){
        
        $ch = curl_init () ;
        curl_setopt($ch, CURLOPT_URL , $url ) ;
        if( $param != null ){
        $post_data = http_build_query ( $param, '&' );
         curl_setopt($ch, CURLOPT_POST , 1 ) ;
         curl_setopt($ch, CURLOPT_POSTFIELDS , $post_data ) ;
        }
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        // curl_setopt($ch, CURLOPT_HEADER , 0 ) ;
        $output = curl_exec($ch) ;
        curl_close($ch);
        //打印获得的数据
        return $output;
    }


当HTTP请求响应数据为xml文件时  用file_get_contents 获取 xml数据对象,在用simplexml_load_string解析xml文件。

示例:
$url 响应数据为$xml_string 
$xml_string = "<?xml  version='1.0' encoding='UTF-8' ?>
<queryResult>
    <srcOutOrderId>0001215794</srcOutOrderId>
    <tranAmt>0.01</tranAmt>
    <refunds/>
    <pays>
        <pay>
            <tranAmt>0.01</tranAmt>
            <srcOutOrderId>0001215794</srcOutOrderId>
            <payOrderId>20160129142422248581</payOrderId>
            <payStatus>ORDER_STATUS_SUC</payStatus>
        </pay>
    </pays>
</queryResult>";
function getQuery($url){
   $xml = file_get_contents($url);
   $re = simplexml_load_string($xml);
   return $re->pays->pay->payStatus;
}

echo getQuery();

output:ORDER_STATUS_SUC。