手机
当前位置:查字典教程网 >编程开发 >php教程 >php curl的深入解析
php curl的深入解析
摘要:curl可以说是php里一个非常强大的功能,每个php程序员都应该学习并熟悉curl,使用curl前确保你的php_curl扩展已经开启。一...

curl可以说是php里一个非常强大的功能,每个php程序员都应该学习并熟悉curl,使用curl前确保你的php_curl扩展已经开启。

一、curl使用

例如:我们采集深圳智联招聘上PHP招聘的第一页信息

复制代码 代码如下:

$url='http://sou.zhaopin.com/jobs/searchresult.ashx?jl=%E6%B7%B1%E5%9C%B3&kw=php&sm=0&p=1';

//初始化

$ch = curl_init();

//设置选项,包括URL

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//不自动输出内容

curl_setopt($ch, CURLOPT_HEADER, 0);//不返回头部信息

//执行curl

$output = curl_exec($ch);

//错误提示

if(curl_exec($ch) === false){

die(curl_error($ch));

}

//释放curl句柄

curl_close($ch);

header('Content-type: text/html; charset=utf-8');

echo $output;

当然我们必须对返回的数据使用<<正则表达式>>处理,找出我们想要的那一部分,然后根据你的需要把数据填充到你网站里

复制代码 代码如下:

//职位名称

preg_match_all('/<td>.*?<as*href="(.*?)"starget="_blank">(.*?)</a>/s', $output, $title);

$title[1];//链接

$title[2];//标题

//公司名称

preg_match_all('/<td>.*?<a href="(.*?)"starget="_blank">(.*?)</a>/s', $output, $company);

$company[1];//链接

$company[2];//名字

//工作地点

preg_match_all('/<td>s*(.*?)s*</td>/s', $output, $address);

$address[1];//地点

//发布日期

preg_match_all('/<td>s*(.*?)s*</td>/s', $output, $time);

$time[1];//时间

var_dump($time[1]);

二、常用功能

curl的核心是通过设置各种选项来达到各种功能,这里我们介绍几种常用的选项。

1.post数据

复制代码 代码如下:

$post=array(

'uid'=>'test',

'pwd'=>'curl123'

);

curl_setopt($ch, CURLOPT_POST, 1);//设置为POST方式

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));//POST数据

2.cookie

复制代码 代码如下:

$savefile=dirname(__FILE__).'save.txt';

$getfile=dirname(__FILE__).'get.txt';

//可以分开使用

curl_setopt($ch, CURLOPT_COOKIEJAR, $savefile); //保存

curl_setopt($ch, CURLOPT_COOKIEFILE, $getfile); //读取

3.伪造IP、来路

复制代码 代码如下:

curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:8.8.8.8', 'CLIENT-IP:8.8.8.8'));//构造IP

curl_setopt($ch, CURLOPT_REFERER, "http://www.baidu.com");//构造来路

curl_setopt选项大全,详见PHP手册:http://www.php.net/manual/zh/function.curl-setopt.php

三、多线程

官方示例

复制代码 代码如下:

// 创建一对cURL资源

$ch1 = curl_init();

$ch2 = curl_init();

// 设置URL和相应的选项

curl_setopt($ch1, CURLOPT_URL, "http://www.example.com/");

curl_setopt($ch1, CURLOPT_HEADER, 0);

curl_setopt($ch2, CURLOPT_URL, "http://www.php.net/");

curl_setopt($ch2, CURLOPT_HEADER, 0);

// 创建批处理cURL句柄

$mh = curl_multi_init();

// 增加2个句柄

curl_multi_add_handle($mh,$ch1);

curl_multi_add_handle($mh,$ch2);

$running=null;

// 执行批处理句柄

do {

usleep(10000);

curl_multi_exec($mh,$running);

} while ($running > 0);

// 关闭全部句柄

curl_multi_remove_handle($mh, $ch1);

curl_multi_remove_handle($mh, $ch2);

curl_multi_close($mh);

【php curl的深入解析】相关文章:

php中静态类与静态变量用法区别解析

php生成圆角图片的方法

phplot生成图片类用法详解

php猴子选大王问题解决方法

php解析xml方法实例详解

php实现的mongodb操作类实例

PHP的MVC框架 深入解析

php结合ACCESS的跨库查询功能

php中数据的批量导入(csv文件)

php实现插入排序

精品推荐
分类导航