php curl

WBOY
Freigeben: 2016-06-23 14:37:23
Original
950 Leute haben es durchsucht

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();//设置选项,包括URLcurl_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;
Nach dem Login kopieren

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

//职位名称preg_match_all('/<td class="Jobname">.*?<a\s*href="(.*?)"\starget="_blank">(.*?)<\/a>/s', $output, $title);$title[1];//链接$title[2];//标题//公司名称preg_match_all('/<td class="Companyname">.*?<a href="(.*?)"\starget="_blank">(.*?)<\/a>/s', $output, $company);$company[1];//链接$company[2];//名字//工作地点preg_match_all('/<td class="Companyaddress">\s*(.*?)\s*<\/td>/s', $output, $address);$address[1];//地点//发布日期preg_match_all('/<td class="releasetime">\s*(.*?)\s*<\/td>/s', $output, $time);$time[1];//时间var_dump($time[1]);
Nach dem Login kopieren

二、常用功能

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数据
Nach dem Login kopieren

2.cookie

$savefile=dirname(__FILE__).'save.txt';$getfile=dirname(__FILE__).'get.txt';//可以分开使用curl_setopt($ch, CURLOPT_COOKIEJAR, $savefile); //保存  curl_setopt($ch, CURLOPT_COOKIEFILE, $getfile); //读取 
Nach dem Login kopieren

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");//构造来路  
Nach dem Login kopieren

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);
Nach dem Login kopieren

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!