天天看点

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

继续阅读