curl 采集五个步骤:
1.curl_init()初始化curl
2.curl_setopt()设置传输数据和参数
3.curl_exec()执行传输并获取返回数据
4.curl_errono()返回错误码
5.curl_close()关闭curl
get 方式:
$curl = curl_init(); $url='http://www.baidu.com'; //设置请求url curl_setopt($curl, CURLOPT_URL,$url ); //是否将头文件输出 curl_setopt($curl, CURLOPT_HRADER,TRUE ); // 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。 curl_setopt($curl, CURLOPT_RETURNTRANSFER,TRUE ); // 运行cURL,请求网页 $data = curl_exec($curl); // 关闭URL请求 curl_close($curl);
post方式:
$cookie_file = dirname(__FILE__) . '/cookie.txt'; $url = 'http://manage.wxpro.loc/admin/login'; $get_url = 'http://manage.wxpro.loc/'; $post_data = array('username'=>'username','password'=>'password'); //初始化一个curl对象 $curl = curl_init(); //设置你需要抓取的 url curl_setopt($curl,CURLOPT_URL,$url); //设置crul参数,要求结果保存到字符串中还是输出到屏幕上 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true ); //post数据 curl_setopt($curl,CURLOPT_POST,1); //post变量 curl_setopt($curl,CURLOPT_POSTFIELDS,$post_data); //存储cookie curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_file); //运行curl,请求网页 $data = (array)json_decode(curl_exec($curl)); //关闭url请求 curl_close($curl); if($data['error'] ==0){ //带着上面得到的COOKIE获取需要登录后才能查看的页面内容 $ch = curl_init($get_url); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); $contents = curl_exec($ch); curl_close($ch); var_dump($contents); }
curl_setopt 参数解释:
1.CURLOPT_URL 需要获取的 URL 地址,也可以在curl_init() 初始化会话的时候。
2.CURLOPT_HEADER TRUE
启用时会将头文件的信息作为数据流输出。FALSE 不会输出
3.CURLOPT_RETURNTRANSFER TRUE
将curl_exec()获取的信息以字符串返回,而不是直接输出。false 直接输出
4.CURLOPT_COOKIEJAR 调用curl_close后,保存 cookie信息的条件
5.CURLOPT_COOKIEFILE 包含 cookie 数据的文件名,cookie 文件的格式可以是 Netscape 格式,或者只是纯 HTTP 头部风格,存入文件。如果文件名是空的,不会加载 cookie,但 cookie 的处理仍旧启用。