标签:
我们来采集一个页面,通常情况下,我们会使用file_get_contents()函数来获取:
1 <?php 2 3 $str = file_get_contents(‘http://www.baidu.com‘); 4 5 //或者是: 6 7 $str = file("http://www.baidu.com"); 8 9 //或者是: 10 11 readfile("http://www.baidu.com"); 12 13 ?>
这样我们会发现,我们没有办法有效地进行错误处理,更重要的是我们没有办法完成一些高难度的任务:
如:处理cookies,验证,表单提交,文件上传等等。这时候我们需要学习一下curl,来帮助自己实现这些复杂的功能。
通过curl_setopt()函数可以方便快捷的抓取网页,curl_setopt 是php的一个扩展库。使用条件:需要在php.ini 中配置开启。(PHP 4 >= 4.0.2)
//取消下面的注释
extension=php_curl.dll
GET数据案例:
//1.初始化,创建一个新cURL资源
$ch = curl_init();
//2.设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, "http://www.baidu.com"); //需要获取的URL地址
//curl_setopt($ch, CURLOPT_HEADER, 1); //启用时会将头文件的信息作为数据流输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
curl_setopt($ch, CURLOPT_TIMEOUT, 500);
//3.抓取URL并把它传递给浏览器
$data =curl_exec($ch);
//4.关闭cURL资源,并且释放系统资源
curl_close($ch);
var_dump($data);
POST数据案例:
$url = "http://localhost/demo.php";
$post_data = array ("username" => "bob","key" => "12345");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// post数据
curl_setopt($ch, CURLOPT_POST, 1);
// post的变量
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$data = curl_exec($ch);
curl_close($ch);
//打印获得的数据
print_r($data);
标签:
原文地址:http://www.cnblogs.com/c-961900940/p/5251160.html