在php中cURL庫函數可以通過URL地址輕松獲取網頁內容,實現網頁內容抓取功能。
一、開啟cURL庫的方法
那么如何開啟cURL功能呢?下面是開啟此功能的方法:1:打開PHP.ini,然后找到extension=php_curl.dll 這句話 然后把前面的;去掉,再重啟apache服務;2:如果上第1條已經設置,還是無法檢測到curl_init,則檢查php.ini的extension_dir值是哪個目錄,以及php下的ext目錄是否有無php_curl.dll,沒有的請下載php_curl.dll;3:再把php目錄中的libeay32.dll,ssleay32.dll拷到c:/windows/system32里面;4:重啟下 apache;5:如果apache重啟后還是無法啟動curl_init,那么你就得考慮PHP系統環境變量的配置是否出問題;6:如果沒有配置則要加上系統環境變量的配置。點擊我的電腦,右鍵->屬性->環境變量->系統變量->path路徑。在path路徑上加上php的目錄路徑。例如我的(D:/Wamp2/php5.4;D:/Wamp2/php5.4/ext;),注意用分號隔開。7:重啟系統,重啟apache;
二、cURL庫函數的使用方法
cURL 是一個功能強大的PHP庫,下面介紹一下這個庫的使用。
PHP中的CURL函數庫(Client URL Library Function)curl_close — 關閉一個curl會話curl_copy_handle — 拷貝一個curl連接資源的所有內容和參數curl_errno — 返回一個包含當前會話錯誤信息的數字編號curl_error — 返回一個包含當前會話錯誤信息的字符串curl_exec — 執行一個curl會話curl_getinfo — 獲取一個curl連接資源句柄的信息curl_init — 初始化一個curl會話curl_multi_add_handle — 向curl批處理會話中添加單獨的curl句柄資源curl_multi_close — 關閉一個批處理句柄資源curl_multi_exec — 解析一個curl批處理句柄curl_multi_getcontent — 返回獲取的輸出的文本流curl_multi_info_read — 獲取當前解析的curl的相關傳輸信息curl_multi_init — 初始化一個curl批處理句柄資源curl_multi_remove_handle — 移除curl批處理句柄資源中的某個句柄資源curl_multi_select — Get all the sockets associated with the cURL extension, which can then be "selected"curl_setopt_array — 以數組的形式為一個curl設置會話參數curl_setopt — 為一個curl設置會話參數curl_version — 獲取curl相關的版本信息curl_init()函數的作用初始化一個curl會話,curl_init()函數唯一的一個參數是可選的,表示一個url地址。curl_exec()函數的作用是執行一個curl會話,唯一的參數是curl_init()函數返回的句柄。curl_close()函數的作用是關閉一個curl會話,唯一的參數是curl_init()函數返回的句柄。
三、cURL庫運用案例:
例子一: 基本例子基本例子
﹤?php// 初始化一個 cURL 對象$curl = curl_init();// 設置你需要抓取的URLcurl_setopt($curl, CURLOPT_URL, 'http://www.cmx8.cn');// 設置headercurl_setopt($curl, CURLOPT_HEADER, 1);// 設置cURL 參數,要求結果保存到字符串中還是輸出到屏幕上。curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);// 運行cURL,請求網頁$data = curl_exec($curl);// 關閉URL請求curl_close($curl);// 顯示獲得的數據var_dump($data);?>例子二: POST數據
sendSMS.php,其可以接受兩個表單域,一個是電話號碼,一個是短信內容。POST數據
﹤?php$phoneNumber = '13812345678';$message = 'This message was generated by curl and php';$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' . urlencode($message) . '&SUBMIT=Send';$ch = curl_init();curl_setopt($ch, CURLOPT_URL, 'http://www.lxvoWord');$data = curl_exec();curl_close($ch);?﹥例子四: 模擬登錄
Curl 模擬登錄 discuz程序,適合DZ7.0,將username改成你的用戶名,userpass改成你的密碼就可以了.Curl 模擬登錄 discuz 程序<?php !extension_loaded('curl') &&die('The curl extension is notloaded.'); $discuz_url ='http://www.lxvoip.com';//論壇地址 $login_url = $discuz_url.'/logging.php?action=login';//登錄頁地址 $get_url = $discuz_url .'/my.php?item=threads';//我的帖子 $post_fields =array(); //以下兩項不需要修改 $post_fields['loginfield'] ='username'; $post_fields['loginsubmit'] ='true'; //用戶名和密碼,必須填寫 $post_fields['username'] ='lxvoip'; $post_fields['password'] ='88888888'; //安全提問 $post_fields['questionid'] =0; $post_fields['answer'] =''; //@todo驗證碼 $post_fields['seccodeverify'] =''; //獲取表單FORMHASH $ch =curl_init($login_url); curl_setopt($ch, CURLOPT_HEADER,0); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); $contents =curl_exec($ch); curl_close($ch); preg_match('/<input/s*type="hidden"/s*name="formhash"/s*value="(.*?)"/s*//>/i',$contents,$matches); if(!empty($matches)){ $formhash =$matches[1]; } else{ die('Notfound theforumhash.'); } //POST數據,獲取COOKIE $cookie_file = dirname(__FILE__) .'/cookie.txt'; //$cookie_file =tempnam('/tmp'); $ch =curl_init($login_url); curl_setopt($ch, CURLOPT_HEADER,0); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_POST,1); curl_setopt($ch, CURLOPT_POSTFIELDS,$post_fields); curl_setopt($ch, CURLOPT_COOKIEJAR,$cookie_file); curl_exec($ch); curl_close($ch); //帶著上面得到的COOKIE獲取需要登錄后才能查看的頁面內容 $ch =curl_init($get_url); curl_setopt($ch, CURLOPT_HEADER,0); curl_setopt($ch, CURLOPT_RETURNTRANSFER,0); curl_setopt($ch, CURLOPT_COOKIEFILE,$cookie_file); $contents =curl_exec($ch); curl_close($ch); var_dump($contents); ?>新聞熱點
疑難解答
圖片精選