Curl是利用URL语法在命令行方式下工作的开源文件传输工具。它被广泛应用在Unix、多种Linux发行版中,并且有DOS和Win32、Win64下的移植版本。
中国气象台 //www.nmc.gov.cn/publish/forecast/china.html
简单抓取一个网页
//1.初始化,创建一个新cURL资源
$ch = curl_init();
//2.设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, "//www.baidu.com");
//curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//输出网页
curl_setopt($ch, CURLOPT_HEADER, 0);
//3.抓取URL并把它传递给浏览器
curl_exec($ch);
//4.关闭cURL资源,并且释放系统资源
curl_close($ch);
模拟登陆,后抓取一个网页
$url = "//192.168.1.201/ESSC/user.php";//登陆页面
$curl_url = "//192.168.1.201/ESSC/user.php?act=collection_list";//登陆后要curl的页面
$data = 'username=123&password=admin123&act=act_login'; //登陆的参数
$curlobj = curl_init(); //开启curl
curl_setopt($curlobj,CURLOPT_URL,$url);////设置登陆的访问的URL
//执行之后不打印出来
curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,true);
//COOKIE的相关设置,这部分设置需要在所有会话之前设置
$content=curl_exec($curlobj); //执行
curl_setopt($curlobj,CURLOPT_COOKIESESSION,TRUE); //设为 TRUE 时将开启新的一次 cookie 会话
curl_setopt($curlobj,CURLOPT_COOKIEFILE,'cookiefile'); //包含 cookie 数据的文件名,cookie 文件的格式可以是 Netscape 格式,或者只是纯 HTTP 头部风格,存入文件
curl_setopt($curlobj,CURLOPT_COOKIEJAR,'cookiefile'); //连接结束后,比如,调用 curl_close 后,保存cookie信息的文件。
curl_setopt($curlobj,CURLOPT_HEADER,0); //启用时会将头文件的信息作为数据流输出
curl_setopt($curlobj,CURLOPT_FOLLOWLOCATION,1);//这样能够让cURL支持页面链接跳转
//POST方式提交必备三步
curl_setopt($curlobj,CURLOPT_POST,1); //TRUE 时会发送 POST 请求
curl_setopt($curlobj,CURLOPT_POSTFIELDS,$data); //全部数据使用HTTP协议中的 "POST" 操作来发送
//设置 HTTP 头字段的数组。格式:array('Content-type: text/plain', 'Content-length: 100')
curl_setopt($curlobj,CURLOPT_HTTPHEADER,array('application/x-www-form-urlencoded; charset=utf-8','Content-length:'.strlen($data)));
curl_exec($curlobj); //执行
curl_setopt($curlobj,CURLOPT_URL,$curl_url);
curl_setopt($curlobj,CURLOPT_HTTPHEADER,array('Content-type:text/xml')); //设置 HTTP 头字段的数组
$content = curl_exec($curlobj); //执行
curl_close($curlobj); //关闭CURL
HTTP请求工具类:
composer require tinymeng/tools: -vvv
Use curl implementation request,Support uploading pictures and custom header !
<?php
use tinymeng\tools\HttpRequest;
$data = array(
'username'=>'majiameng',
'password'=>'majiameng',
);
$url = '//majiameng.com/login';
//1.Curl Post Request
$response = HttpRequest::httpPost($url,$data);
//2.Curl Post File Request
//<input name="file" type="file">
$data = array(
'file' => new \CURLFile($_FILES['file']['tmp_name'],$_FILES['file']['type'],$_FILES['file']['name']),
);
$response = HttpRequest::httpPost($url,$data);
//3.Curl Get Request
$response = HttpRequest::httpGet($url,$data);