php cURL獲取網(wǎng)絡(luò)資源

URL語法傳輸數(shù)據(jù)的命令行工具,就是客戶端向服務(wù)器請求資源的工具,他在我們開發(fā)中引用廣泛,例如以下幾個(gè)使用場景:1、網(wǎng)頁資源:網(wǎng)頁爬蟲;2、WebService數(shù)據(jù)接口資源:動(dòng)態(tài)獲取接口數(shù)據(jù),比如天氣、號碼歸屬地等;3、FTP服務(wù)器里面的文件資源:下載FTP服務(wù)器里面的文件;基本所有網(wǎng)上的資源都可以使用cURL訪問和下載到。

首先要看我們的php是否安裝了cURL拓展,下面是查看的命令行,當(dāng)然也可以通過php的函數(shù)phpinfo()進(jìn)行查看:

      windows:php -i
      linux:php -i | gerp cUR

使用cURL有抓取網(wǎng)絡(luò)數(shù)據(jù)分4個(gè)步驟:
1、初始化curl,調(diào)用curl_init();
2、向服務(wù)器發(fā)送請求,curl_exec();
3、接收服務(wù)器數(shù)據(jù),curl_exec();
4、關(guān)閉curl,調(diào)用curl_close()

下面是一些實(shí)例:

1.簡單的抓取網(wǎng)頁

$curl=curl_init();
curl_exec($curl,CURLOPT_URL,'http://www.baidu.com');curl_exec($curl,CURLOPT_RETURNRANSFER,true);//執(zhí)行后不直接打印出
$output=curl_exec($curl);
curl_close($curl);

2.登錄某個(gè)網(wǎng)站獲取相應(yīng)個(gè)人數(shù)據(jù)

$data='username=******&password=****$remember=****';
$curlobj=curl_init();//設(shè)置訪問的網(wǎng)頁的url
curl_setopt($curlobj, CURLOPT_URL, '*****登錄頁****');//cookie相關(guān)設(shè)置,這部分設(shè)置需要在所有會話開始前設(shè)置
date_default_timezone_set('PRC');//使用cookie時(shí),必須先設(shè)置時(shí)區(qū)
curl_setopt($curlobj,CURLOPT_COOKIESESSION,true);
curl_setopt($curlobj,CURLOPT_COOKIEFILE,'cookiefile');
curl_setopt($curlobj,CURLOPT_COOKIEJAR,'cookiefile');
curl_setopt($curlobj,CURLOPT_COOKIE,session_name().'='.session_id());//上方不變
curl_setopt($curlobj,CURLOPT_HEADER,0);
curl_setopt($curlobj,CURLOPT_FOLLOWLOCATION,1);//這樣能夠讓curl支持頁面跳轉(zhuǎn)
curl_setopt($curlobj,CURLOPT_POST,1);
curl_setopt($curlobj,CURLOPT_POSTFIELDS,$data);
curl_setopt($curlobj,CURLOPT_HTTPHEADER,array('application/x-www-form-urlencoded;charset-utf-8','Content-length:'.strlen($data)));curl_exec($curlobj);//進(jìn)行執(zhí)行、curl_setopt($curlobj,CURLOPT_URL,'http://www/imooc.com/space/index');curl_setopt($curlobj,CURLOPT_POST,0);//抓取頁面時(shí)需要將它設(shè)置為0
curl_setopt($curlobj,CURLOPT_HTTPHEADER,array('Content-type:text/xml'));
$output=curl_exec($curlobj);//執(zhí)行curl_close($curlobj);

3.從ftp下載一個(gè)文件到本地

$curlobj=curl_init();
//設(shè)置訪問的網(wǎng)頁的url
curl_setopt($curlobj, CURLOPT_URL, 'ftp:/***ip***/dowloademo.text');
curl_setopt($curlobj,CURLOPT_HEADER,0);curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,1);
curl_setopt($curlobj,CURLOPT_TIMEOUT,300);//設(shè)置連接超時(shí)
curl_setopt($curlobj,CURLOPT_USERPWD,'用戶名:密碼');//FTP用戶名:密碼
$outfile=fopen('dest.txt', 'wb');//保存到本地的文件名
curl_setopt($curlobj,CURLOPT_FILE,$outfile);
$rtn=curl_exec($curlobj);
fclose($outfile);
if (!curl_errno($curlobj)) { 
    echo "return:".$rtn;
} else { 
    echo 'Curl error:'.curl_error($curlobj);}curl_close($curlobj);
}
curl_close($curlobj);

在開發(fā)中,往往簡單的抓取數(shù)據(jù)并不能滿足我們的需求,還需要對數(shù)據(jù)進(jìn)行一定的處理,例如正則匹配,下面是一個(gè)從中國氣象臺抓取農(nóng)業(yè)氣象圖片案例,不同的氣象圖片只需要不同的procode參數(shù)即可:

4.抓取天氣

$curlobj = curl_init();
// curl_setopt($curlobj, CURLOPT_URL, "http://products.weather.com.cn/product/Index/index/procode/JC_WX_DBWD");
curl_setopt($curlobj, CURLOPT_URL, "http://products.weather.com.cn/product/Index/index/procode/JC_WX_DBWDJP");
curl_setopt($curlobj, CURLOPT_HEADER, 0);curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlobj, CURLOPT_HTTPHEADER, array("application/x-www-form-urlencoded;charset=utf-8"));
$result = curl_exec($curlobj);
if (!curl_errno($curlobj)) { //對所得內(nèi)容進(jìn)行正則匹配 
    $matchs=array(); 
    $result=preg_replace("/[\t\n\r]+/","",$result);//去除空格 
    $partner='/<div class="picContent">(.*?)<\/div>/'; 
    preg_match_all($partner, $result, $matchs); //得到部分匹配內(nèi)容 
    $partner='/<img src="(.*?)" class="showImg"/'; 
    preg_match_all($partner,$matchs[0][0],$matchs); 
    // print_r($matchs); echo $matchs[1][0];
}else {
     echo "curl error:".curl_error($curlobj);、
}
curl_close($curlobj);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • cURL是一個(gè)利用URL語法規(guī)定來傳輸文件和數(shù)據(jù)的工具,支持很多協(xié)議和選項(xiàng),如HTTP、FTP、TELNET等,能...
    司馬東陽閱讀 1,518評論 0 6
  • 原文地址:PHPcURL庫函數(shù)抓取頁面內(nèi)容(轉(zhuǎn))作者:巴克 cURL是一個(gè)利用URL語法規(guī)定來傳輸文件和數(shù)據(jù)的工具...
    司馬東陽閱讀 1,267評論 0 3
  • 昨天偶然看到一句話:“父母在,人生尚有來處,父母去,人生只剩歸途。” 這句話給我比較深的感觸,這句話讓我想起了兒時(shí)...
    縈瑛夏夜閱讀 221評論 0 1
  • 你平時(shí)心情不好時(shí)會采用什么方法排解呢?以前沒談戀愛時(shí),和同事發(fā)生矛盾,或者別人把我弄得不爽后,我通??梢陨粋€(gè)星期...
    麥子飛呀飛閱讀 162評論 0 0
  • 菊花干品3朵、枸杞子10粒。 【沖泡方法】 將菊花、枸杞子全部放入杯中,沖入沸水,蓋上蓋子悶泡約8分鐘后即可飲用。...
    遇見花草茶閱讀 491評論 0 0

友情鏈接更多精彩內(nèi)容