定义
- curl:client url library function ,用来抓取远程文件或传输文件
- file_get_contents(url)虽然也能抓取网站信息,但是功能及其有限
使用前提
- windows下:进入php.ini下开启extension=php_curl.dll 扩展
- linux下:使用yum -y install php-culr 命令安装即可使用_
基本设置
- curl_init() 初始化
- curl_setopt($ch,CURLOPT_URL , “www.baidu.com”) 设置访问url
- curl_setopt($ch , CRULOPT_HEADER , 1 ) 是否返回头信息,默认为0,不返回
返回的一个例子:HTTP/1.1 200 OK Date: Mon, 29 Oct 2018 10:04:51 GMT Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16 mod_perl/2.0.10 Perl/v5.16.3 X-Powered-By: PHP/5.4.16 Transfer-Encoding: chunked Content-Type: text/html; charset=utf-8 - curl_setopt($ch , CURLOPT_NOBODY , 0) 是否返回页面主题,默认为0 ,返回
- curl_setopt($ch , CURLOPT_TIMEOUT , 30 ) 设置抓取等待时间,默认一直等
- curl_setopt($ch ,CRULOPT_MAXREDIRS, 5) 设置最大重定向时间
- curl_setopt($ch , CURLOPT_USERAGENT , ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36’ ) 设置用户代理,也就是以什么身份去访问该页面
- curl_setopt($ch , CURLOPT_HTTPHEADER , $arr) 自定义目标服务器收到的header头内容
- curl_setopt($ch , CURLOPT_SSL_VERIFYPEER , 0) 设置是否以ssl加密的方式去访问https网站
- curl_setopt($ch , CURLOPT_POST , 1) ; 设置用post方式去提交订单
- curl_setopt(
c
h
,
C
U
L
R
O
P
T
P
O
S
T
F
I
L
E
L
D
S
,
ch , CULROPT_POSTFILELDS ,
ch,CULROPTPOSTFILELDS,arr ) 提交的post数据
- curl_setopt($ch , CURLOPT_PORT , 8080 ) 访问端口号,默认时80
- curl_exec($ch) 开始访问
- curl_getinfo($ch) 以数组的方式返回response信息
- culr_close($ch) 关闭资源
简单实例
抓取百度的信息
public function index()
{
$ch=curl_init() or die(curl_error($ch));
curl_setopt($ch , CURLOPT_URL, 'https://www.baidu.com/s?wd=php');
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36');
curl_setopt($ch , CURLOPT_SSL_VERIFYPEER,0);
$result=curl_exec($ch) or die(curl_error($ch));
echo $result;
curl_close($ch);
}