php curl常用的5個經(jīng)典例子
我用php ,curl主要是抓取數(shù)據(jù),當(dāng)然我們可以用其他的方法來抓取,比如fsockopen,file_get_contents等。但是只能抓那些能直接訪問的頁面,如果要抓取有頁面訪問控制的頁面,或者是登錄以后的頁面就比較困難了。
1,抓取無訪問控制文件
<?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://localhost/mytest/phpinfo.php"); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //如果把這行注釋掉的話,就會直接輸出 $result=curl_exec($ch); curl_close($ch); ?>
2,使用代理進行抓取
為什么要使用代理進行抓取呢?以google為例吧,如果去抓google的數(shù)據(jù),短時間內(nèi)抓的很頻繁的話,你就抓取不到了。google對你的ip地址做限制這個時候,你可以換代理重新抓。
<pre name="code" class="php"><?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://blog.51yip.com"); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE); curl_setopt($ch, CURLOPT_PROXY, 125.21.23.6:8080); //url_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');如果要密碼的話,加上這個 $result=curl_exec($ch); curl_close($ch); ?>
3,post數(shù)據(jù)后,抓取數(shù)據(jù)
單獨說一下數(shù)據(jù)提交數(shù)據(jù),因為用 curl的時候,很多時候會有數(shù)據(jù)交互的,所以比較重要的。
<?php
$ch = curl_init();
/*在這里需要注意的是,要提交的數(shù)據(jù)不能是二維數(shù)組或者更高
*例如array('name'=>serialize(array('tank','zhang')),'sex'=>1,'birth'=>'20101010')
*例如array('name'=>array('tank','zhang'),'sex'=>1,'birth'=>'20101010')這樣會報錯的*/
$data = array('name' => 'test', 'sex'=>1,'birth'=>'20101010');
curl_setopt($ch, CURLOPT_URL, 'http://localhost/mytest/curl/upload.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);
?>
在 upload.php文件中,print_r($_POST);利用curl就能抓取出upload.php輸出的內(nèi)容Array ( [name] => test [sex] => 1 [birth] => 20101010 )
4,抓取一些有頁面訪問控制的頁面

以前寫過一篇,頁面訪問控制的3種方法有興趣的可以看一下。
如果用上面提到的方法抓的話,會報以下錯誤
You are not authorized to view this page
You do not have permission to view this directory or page using the credentials that you supplied because your Web browser is sending a WWW-Authenticate header field that the Web server is not configured to accept.
這個時候,我們就要用CURLOPT_USERPWD來進行驗證了
<?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://club-china"); /*CURLOPT_USERPWD主要用來破解頁面訪問控制的 *例如平時我們所以htpasswd產(chǎn)生頁面控制等。*/ //curl_setopt($ch, CURLOPT_USERPWD, 'user:password'); curl_setopt($ch, CURLOPT_HTTPGET, 1); curl_setopt($ch, CURLOPT_REFERER, "http://club-china"); curl_setopt($ch, CURLOPT_HEADER, 0); $result=curl_exec($ch); curl_close($ch); ?>
以上這篇php curl常用的5個經(jīng)典例子就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
laravel 關(guān)聯(lián)關(guān)系遍歷數(shù)組的例子
今天小編就為大家分享一篇laravel 關(guān)聯(lián)關(guān)系遍歷數(shù)組的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10
CodeIgniter框架提示Disallowed Key Characters的解決辦法
在做項目過程中,出現(xiàn)提交form表單的時候,出現(xiàn)了Disallowed Key Characters 的提示2014-04-04
PHP使Laravel為JSON REST API返回自定義錯誤的問題
這篇文章主要介紹了PHP使Laravel為JSON REST API返回自定義錯誤的問題,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-10-10
Yii2框架實現(xiàn)登錄、退出及自動登錄功能的方法詳解
這篇文章主要介紹了Yii2框架實現(xiàn)登錄、退出及自動登錄功能的方法,結(jié)合實例形式詳細(xì)分析了Yii2框架實現(xiàn)登錄、退出及自動登錄功能的原理、實現(xiàn)方法與相關(guān)操作注意事項,需要的朋友可以參考下2017-10-10
Yii數(shù)據(jù)讀取與跳轉(zhuǎn)參數(shù)傳遞用法實例分析
這篇文章主要介紹了Yii數(shù)據(jù)讀取與跳轉(zhuǎn)參數(shù)傳遞用法,結(jié)合實例形式分析了Yii中read()與readAll()方法的相關(guān)使用技巧,需要的朋友可以參考下2016-07-07
thinkPHP3.2.3實現(xiàn)阿里大于短信驗證的方法
這篇文章主要介紹了thinkPHP3.2.3實現(xiàn)阿里大于短信驗證的方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-06-06
Laravel創(chuàng)建數(shù)據(jù)庫表結(jié)構(gòu)的例子
今天小編就為大家分享一篇Laravel創(chuàng)建數(shù)據(jù)庫表結(jié)構(gòu)的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10
PHP is_array() 檢測變量是否是數(shù)組的實現(xiàn)方法
下面小編就為大家?guī)硪黄狿HP is_array() 檢測變量是否是數(shù)組的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考,一起跟隨小編過來看看吧2016-06-06

