当前位置:首页 > PHP教程 > php应用 > 列表

php通过curl函数取得数据、模拟登陆、POST数据

发布:smiling 来源: PHP粉丝网  添加日期:2014-09-12 14:19:04 浏览: 评论:0 

在php中我们如果要取得数据、模拟登陆、POST数据等功能第一个想到的肯定是curl函数了,这个函数方便实用并且还可以多线程了下面整理了一个例子,有兴趣的朋友可参考.

例子,使用php curl获取网页数据的方法,代码如下:

  1. $ch=curl_init(); 
  2. //设置选项,包括URL 
  3. curl_setopt($ch,CURLOPT_URL,"http://www.phpfensi.com"); 
  4. curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
  5. curl_setopt($ch,CURLOPT_HEADER,0); 
  6. //执行并获取HTML文档内容 
  7. $output=curl_exec($ch); 
  8. //释放curl句柄 
  9. curl_close($ch); 

使用php curl post提交数据的方法,代码如下:

  1. $url="http://www.phpfensi.com/curl_post.php"
  2. $post_data=array ( 
  3.  "nameuser"=>"syxrrrr"
  4.  "pw"=>"123456" 
  5. ); 
  6. $ch=curl_init(); 
  7. curl_setopt($ch,CURLOPT_URL,$url); 
  8. curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
  9. curl_setopt($ch,CURLOPT_POST,1); 
  10. curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data); 
  11. $output=curl_exec($ch); 
  12. curl_close($ch); 
  13. echo $output

取得数据、模拟登陆、POST数据,代码如下:

  1. /********************** curl 系列 ***********************/ 
  2. //直接通过curl方式取得数据(包含POST、HEADER等) 
  3. /* 
  4.  * $url: 如果非数组,则为http;如是数组,则为https 
  5.  * $header: 头文件 
  6.  * $post: post方式提交 array形式 
  7.  * $cookies: 0默认无cookie,1为设置,2为获取 
  8.  */ 
  9. public function curl_allinfo($urls$header = FALSE, $post = FALSE, $cookies = 0) { 
  10.     $url = is_array($urls) ? $urls['0'] : $urls
  11.     $ch = curl_init(); 
  12.     curl_setopt($ch, CURLOPT_URL, $url); 
  13.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  14.  
  15.     //带header方式提交 
  16.     if($header != FALSE){ 
  17.         curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
  18.     } 
  19.  
  20.     //post提交方式 
  21.     if($post != FALSE){ 
  22.         curl_setopt($ch, CURLOPT_POST, 1); 
  23.         curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
  24.     } 
  25.  
  26.     if($cookies == 1){ 
  27.         curl_setopt($ch, CURLOPT_COOKIEJAR, "cookiefile"); 
  28.     }else if($cookies == 2){ 
  29.         curl_setopt($ch, CURLOPT_COOKIEFILE, "cookiefile"); 
  30.     } 
  31.  
  32.     if(is_array($urls)){ 
  33.         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
  34.         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
  35.     } 
  36.  
  37.     $data = curl_exec($ch); 
  38.     curl_close($ch); 
  39.     return $data

最后附一个模仿搜索引擎蜘蛛来抓取网页,代码如下:

  1. function get_web_page( $url ) 
  2. $options = array
  3. CURLOPT_RETURNTRANSFER => true,     // return web page 返回网页 
  4. CURLOPT_HEADER         => false,    // 不返回头信息 
  5. CURLOPT_FOLLOWLOCATION => true,     // follow redirects 
  6. CURLOPT_ENCODING       => "",       // handle all encodings 
  7. CURLOPT_USERAGENT      => "spider"// 设置UserAgent 
  8. CURLOPT_AUTOREFERER    => true,     // set referer on redirect 
  9. CURLOPT_CONNECTTIMEOUT => 120,      // timeout on connect 连接超时 
  10. CURLOPT_TIMEOUT        => 120,      // timeout on response 回复超时 
  11. CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects 
  12. ); 
  13. $ch      = curl_init( $url ); 
  14. curl_setopt_array( $ch$options ); 
  15. $content = curl_exec( $ch ); 
  16. $err     = curl_errno( $ch ); 
  17. $errmsg  = curl_error( $ch ); 
  18. $header  = curl_getinfo( $ch ); 
  19. curl_close( $ch ); 
  20. $header[''errno'']   = $err
  21. $header[''errmsg'']  = $errmsg
  22. $header[''content''] = $content
  23. return $header
  24. }

Tags: curl函数 curl模拟登陆 POST数据

分享到: