PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据) « 邵珠庆の博客

邵珠庆の博客 生命只有一次,你可以用它来做些更多伟大的事情–Make the world a little better and easier

7三/160

PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)

     通过curl_setopt()函数可以方便快捷的抓取网页(采集很方便大笑),curl_setopt 是php的一个扩展库

     使用条件:需要在php.ini 中配置开启。(PHP 4 >= 4.0.2)
       //取消下面的注释
       extension=php_curl.dll

      在Linux下面,需要重新编译PHP了,编译时,你需要打开编译参数——在configure命令上加上“–with-curl” 参数。

1、 一个抓取网页的简单案例

[/php]</strong>&nbsp;<a title="view plain" href="http://blog.csdn.net/liuxinmingcode/article/details/8043150#">view plain</a>&nbsp;<a title="copy" href="http://blog.csdn.net/liuxinmingcode/article/details/8043150#" target="_blank">copy</a></div>
<ol start="1">
	<li>//&nbsp;创建一个新cURL资源&nbsp;&nbsp;</li>
	<li>$ch&nbsp;=&nbsp;curl_init();&nbsp;&nbsp;</li>
	<li>&nbsp;&nbsp;</li>
	<li>//&nbsp;设置URL和相应的选项&nbsp;&nbsp;</li>
	<li>curl_setopt($ch,&nbsp;CURLOPT_URL,&nbsp;"http://www.baidu.com/");&nbsp;&nbsp;</li>
	<li>curl_setopt($ch,&nbsp;CURLOPT_HEADER,&nbsp;false);&nbsp;&nbsp;</li>
	<li>&nbsp;&nbsp;</li>
	<li>//&nbsp;抓取URL并把它传递给浏览器&nbsp;&nbsp;</li>
	<li>curl_exec($ch);&nbsp;&nbsp;</li>
	<li>&nbsp;&nbsp;</li>
	<li>//关闭cURL资源,并且释放系统资源&nbsp;&nbsp;</li>
	<li>curl_close($ch);&nbsp;&nbsp;</li>
</ol>
</div>
<strong>2、POST数据案例:</strong>
<div>
<div><strong>1 view plain copy
  1. /** 
  2.      * Make an HTTP request 
  3.      * 
  4.      * @return string API results 
  5.      * @ignore 
  6.      */  
  7.     function http($url, $method, $postfields = NULL, $headers = array()) {  
  8.         $this->http_info = array();  
  9.         $ci = curl_init();  
  10.         /* Curl settings */  
  11.         curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);//让cURL自己判断使用哪个版本  
  12.         curl_setopt($ci, CURLOPT_USERAGENT, $this->useragent);//在HTTP请求中包含一个"User-Agent: "头的字符串。  
  13.         curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $this->connecttimeout);//在发起连接前等待的时间,如果设置为0,则无限等待  
  14.         curl_setopt($ci, CURLOPT_TIMEOUT, $this->timeout);//设置cURL允许执行的最长秒数  
  15.         curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE);//返回原生的(Raw)输出  
  16.         curl_setopt($ci, CURLOPT_ENCODING, "");//HTTP请求头中"Accept-Encoding: "的值。支持的编码有"identity","deflate"和"gzip"。如果为空字符串"",请求头会发送所有支持的编码类型。  
  17.         curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $this->ssl_verifypeer);//禁用后cURL将终止从服务端进行验证  
  18.         curl_setopt($ci, CURLOPT_HEADERFUNCTION, array($this, 'getHeader'));//第一个是cURL的资源句柄,第二个是输出的header数据  
  19.         curl_setopt($ci, CURLOPT_HEADER, FALSE);//启用时会将头文件的信息作为数据流输出  
  20.   
  21.         switch ($method) {  
  22.             case 'POST':  
  23.                 curl_setopt($ci, CURLOPT_POST, TRUE);  
  24.                 if (!empty($postfields)) {  
  25.                     curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);  
  26.                     $this->postdata = $postfields;  
  27.                 }  
  28.                 break;  
  29.             case 'DELETE':  
  30.                 curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE');  
  31.                 if (!empty($postfields)) {  
  32.                     $url = "{$url}?{$postfields}";  
  33.                 }  
  34.         }  
  35.   
  36.         if ( isset($this->access_token) && $this->access_token )  
  37.             $headers[] = "Authorization: OAuth2 ".$this->access_token;  
  38.   
  39.         $headers[] = "API-RemoteIP: " . $_SERVER['REMOTE_ADDR'];  
  40.         curl_setopt($ci, CURLOPT_URL, $url );  
  41.         curl_setopt($ci, CURLOPT_HTTPHEADER, $headers );  
  42.         curl_setopt($ci, CURLINFO_HEADER_OUT, TRUE );  
  43.   
  44.         $response = curl_exec($ci);  
  45.         $this->http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);  
  46.         $this->http_info = array_merge($this->http_info, curl_getinfo($ci));  
  47.         $this->url = $url;  
  48.   
  49.         if ($this->debug) {  
  50.             echo "=====post data======\r\n";  
  51.             var_dump($postfields);  
  52.   
  53.             echo '=====info====='."\r\n";  
  54.             print_r( curl_getinfo($ci) );  
  55.   
  56.             echo '=====$response====='."\r\n";  
  57.             print_r( $response );  
  58.         }  
  59.         curl_close ($ci);  
  60.         return $response;  
  61.     }  

更详细的参数说明参考:http://cn2.php.net/curl_setopt

 
 

邵珠庆推荐文章

博文加载中...

anyShare分享到:

喜欢这个文章吗?

考虑订阅我们的RSS Feed吧!

发布在 邵珠庆

评论 (0) 引用 (0)

还没有评论.


Leave a comment

(required)


*

还没有引用.