curl は php の非常に強力な関数であると言えます。すべての php プログラマーは、curl を使用する前に php_curl 拡張機能がオンになっていることを確認してください。
1.curl の使用
例: Shenzhen Zhaopin Recruitment の 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;
もちろん、返された情報を処理するには 901c5f1d10c561703c418a2a516b94a8> を使用する必要があります。 data 、必要な部分を見つけて、必要に応じて Web サイトにデータを入力します
//职位名称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]);
2. よく使用される関数
Curl の核心は、さまざまなオプションを設定することでさまざまな機能を実現することです。よく使用されるオプションをいくつか紹介します。
1.投稿データ
$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.Fake IP、origin
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
3. マルチスレッド
公式サンプル
// 创建一对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);