数据传输神器之Curl - PHP版

1.cUrl(Client URL Library Functions)的基本概念

    由Stenberg 创建。官方定义为:curl is a command line tool for transferring data with URL syntax,即使用URL语法传输数据的命令行工具。我们可以简单的理解成cUrl是客户端向服务器请求资源的工具。

2.cUrl的使用场景

    1.网页资源(网页爬虫)

    2.WebService数据接口资源(动态获取接口数据,比如物流信息)

    3.FTP服务器里面的文件资源(下载FTP服务器的文件)

    4.其他资源(所有网络上的资源可以用cUrl访问和下载到本地)

3.查看当前linux是否支持cUrl

    php -i | grep cURL (php -i 打印出所有当前php的设置,grep curl 过滤查找curl )

4.在PHP 中使用cURL

    1.初始化curl(curl_init())

    2.向服务器发送请求

    3.接受服务器数据(2、3 curl_exec())

    4.关闭curl(curl_close())

5.抓取网页信息并替换部分内容

<?php
    $curlobj = curl_init();
    curl_setopt($curlobj,CURLOPT_URL,"http://www.baidu.com"); // 设置访问页面的URL
    curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,true);        // 执行之后不直接打印出来
    $output = curl_exec($curlobj);                            // 执行
    curl_close($curlobj);                                     // 关闭cURL
    echo str_replase("百度","kitukeyii",$output);
?>

6.查询苏州最新的天气

<?php
    $data = 'theCityName=苏州';
    $curlobj = curl_init();
    curl_setopt($curlobj,CURLOPT_URL,"http://www.webxml.com.cn/WebServices
    /WeatherWebService.asmx/getWeatherbyCityName");
    curl_setopt($curlobj, CURLOPT_HEADER, 0); 
    curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);  
    curl_setopt($curlobj, CURLOPT_POST, 1);  
    curl_setopt($curlobj, CURLOPT_POSTFIELDS, $data);  
    curl_setopt($curlobj, CURLOPT_HTTPHEADER, array(
        "application/x-www-form-urlencoded; charset=utf-8", 
        "Content-length: ".strlen($data)
    )); 
    $rtn = curl_exec($curlobj);   
    if(!curl_errno($curlobj)){
        echo $rtn;  
    } else {
      echo 'Curl error: ' . curl_error($curlobj);
    }
    curl_close($curlobj);
?>

7.用cURL从FTP上下载文件到本地

<?php
    $curlobj = curl_init();
    curl_setopt($curlobj, CURLOPT_URL, "ftp://192.168.1.100/downloaddemo.txt");
    curl_setopt($curlobj, CURLOPT_HEADER, 0);
    curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curlobj, CURLOPT_TIMEOUT, 300);                   // 超时时间 300s
    curl_setopt($curlobj, CURLOPT_USERPWD, "kitukeyii:111111");    // FTP用户名:密码
    $outfile = fopen('dest.txt', 'wb');                            // 保存到本地的文件名
    curl_setopt($curlobj, CURLOPT_FILE, $outfile);                
    $rtn = curl_exec($curlobj);
    fclose($outfile);
    if(!curl_errno($curlobj)){
        echo "RETURN: " . $rtn;
    } else {
        echo 'Curl error: ' . curl_error($curlobj);
    }
    curl_close($curlobj);
?>

8.用cURL从本地上传文件到FTP

<?php
    $curlobj = curl_init();
    $localfile = 'ftp01.php';
    $fp = fopen($localfile, 'r');
    curl_setopt($curlobj, CURLOPT_URL, "ftp://192.168.1.100/ftp01_uploaded.php");
    curl_setopt($curlobj, CURLOPT_HEADER, 0);
    curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curlobj, CURLOPT_TIMEOUT, 300);                     // 超时时间 300s
    curl_setopt($curlobj, CURLOPT_USERPWD, "kitukeyii:111111");      // FTP用户名:密码
    curl_setopt($curlobj, CURLOPT_UPLOAD, 1);
    curl_setopt($curlobj, CURLOPT_INFILE, $fp);                      // 指定的文件
    curl_setopt($curlobj, CURLOPT_INFILESIZE, filesize($localfile));
    $rtn = curl_exec($curlobj);
    fclose($fp);
    if(!curl_errno($curlobj)){
        echo "Uploaded successfully.";
    } else {
        echo 'Curl error: ' . curl_error($curlobj);
    }
    curl_close($curlobj);
?>

9.用cURL访问HTTPS资源

<?php
    $curlobj = curl_init();            
    curl_setopt($curlobj, CURLOPT_URL, "https://ajax.aspnetcdn.com/ajax/jquery.validate/1.12.0/jquery.validate.js");
    curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, true); // 执行之后不直接打印出来
    date_default_timezone_set('PRC');                     
    // 对认证证书来源的检查从证书中检查SSL加密算法是否存在
    curl_setopt($curlobj, CURLOPT_SSL_VERIFYPEER, 0); 
    $output=curl_exec($curlobj);     // 执行
    curl_close($curlobj);            // 关闭cURL
    echo $output;
?>

参考文献:https://www.imooc.com/learn/132

猜你喜欢

转载自blog.csdn.net/qq_24973351/article/details/109087713