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

在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. //带header方式提交
  15. if($header != FALSE){
  16. curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  17. }
  18. //post提交方式
  19. if($post != FALSE){
  20. curl_setopt($ch, CURLOPT_POST, 1);
  21. curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
  22. }
  23. if($cookies == 1){
  24. curl_setopt($ch, CURLOPT_COOKIEJAR, "cookiefile");
  25. }else if($cookies == 2){
  26. curl_setopt($ch, CURLOPT_COOKIEFILE, "cookiefile");
  27. }
  28. if(is_array($urls)){
  29. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  30. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  31. }
  32. $data = curl_exec($ch);
  33. curl_close($ch);
  34. return $data;
  35. }

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

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