curl远程获取和采集

curl传输与获取功能

什么是curl?
curl是一个利用URL语法在命令行方式下工作的文件传输工具。它支持很多协议:FTP,FTPS,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE以及LDAP。
curl同样支持HTTPS认证,HTTP POST方法,HTTP PUT方法,FTP上传,HTTP上传,代理服务器,cookies,用户名/密码认证,下载文件断点续传等等。


PHP中常用都实现哪些功能:
1.实现远程获取和采集内容
2.实现PHP网页版的FTP上传下载
3.实现模拟登陆
4.实现接口对接(API),数据传输等
5.实现模拟Cookie等


默认情况下PHP是不支持CURL功能的,需要在PHP.ini中开启该功能;extension=php_curl.dll

PHP CURL 和 file_get_content()对比
代码中使用file_get_content() 去获取URL内容 有2点问题
1。使用file_get_content() 会很耗时 因为他每次请求都会重新对DNS查询并不对DNS进行缓存,这样就导致每次请求很耗时经常服务器请求超时
2。如果请求的url带有header或者其他参数 file_get_content 就比较难去处理

参考网站: http://www.jb51.net/article/57238.htm

--------------------------------------------------------------------------------------------------------------------------------------------------

curl01.php:

<?php

//简单示例:使用curl获取远程网页数据

//功能类似file_get_content

$curl = curl_init();    //初始化curl对象
$request_url = 'http://192.168.11.113:8080/upload/upload4/curl.txt';
//$request_url = 'http://www.php100.com';    //设置需要抓取的URL
curl_setopt($curl,CURLOPT_URL,$request_url);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,0);//设置curl参数,要求结果保存到字符串中还是输出到屏幕上
$reponse = curl_exec($curl);//运行curl,请求网页
curl_close($curl);//关闭URL请求

?>

--------------------------------------------------------------------------------------------------------------------------------------------------

curl02.php:

<?php

//简单示例:使用curl的post传输数据

$user = 'admin';
$pass = '123456';
$curlPost = 'user='.$user.'&pass='.$pass;
$ch = curl_init();
$request_url = 'localhost:8080/upload/upload4/curl_post_param.php';
curl_setopt($ch,CURLOPT_URL,$request_url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,0);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$curlPost);
$response = curl_exec($ch);
curl_close($ch);

?>

curl_post_param.php

<?php

//响应curl02.php请求,并输出数据

if($_POST){
    echo $_POST['user'].'-----'.$_POST['pass'].'<br/>';
}

?>

--------------------------------------------------------------------------------------------------------------------------------------------------

curl03.php:

//示例:使用curl模拟登陆

//tempnam()函数创建一个具有唯一文件名的临时文件
//若成功,则该函数返回新的临时文件名。若失败,在返回false
//相当于fopen->fwrite->fclose

//使用curl程序登录与直接使用浏览器登录并不冲突,他们是相互独立

//登陆并生成临时文件
$login_url = 'http://bbs.php100.com/login.php';
$post_fields = 'cktime=3600&step=2&pwuser=蔡杰&pwpwd=1991abc123';
$cookie_file = tempnam('./temp','cookie');    //C:\Windows\temp\
$ch = curl_init($login_url);
$options = array(
        CURLOPT_HEADER=>0,
        CURLOPT_RETURNTRANSFER=>1,
        CURLOPT_POST=>1,
        CURLOPT_COOKIEJAR=>$cookie_file,
        CURLOPT_POSTFIELDS=>$post_fields,
);
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
curl_close($ch);

//登陆后的页面
$url = 'http://bbs.php100.com/index.php';
$ch = curl_init($url);
$options = array(
        CURLOPT_HEADER=>0,
        CURLOPT_RETURNTRANSFER=>0,
        CURLOPT_COOKIEFILE=>$cookie_file,
);
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
curl_close($ch);

//可以使用正则表达式采集返回的结果
//preg_match('/<li>金钱:(.*)</li>/',$response,$arr);echo $arr[1];


参考:

http://www.csdn123.com/html/topnews201408/60/2660.htm





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值