PHP Liad 2個月前 (11-10) 393℃
這裡收集了3種利用php獲得網頁源代碼抓取網頁内容的方法,我們可以根據實際需要選用。
1、使用file_get_contents獲得網頁源代碼
這個方法最常用,隻需要兩行代碼即可,非常簡單友善。
參考代碼:
- $fh= file_get_contents('http://www.webkaka.com/');
- echo $fh;
2、使用fopen獲得網頁源代碼
這個方法用的人也不少,不過代碼有點多。
參考代碼:
- $fh = fopen('http://www.webkaka.com/', 'r');
- if($fh){
- while(!feof($fh)) {
- echo fgets($fh);
- }
- }
3、使用curl獲得網頁源代碼
使用curl獲得網頁源代碼的做法,往往是需要更高要求的人使用,例如當你需要在抓取網頁内容的同時,得到網頁header資訊,還有ENCODING編碼的使用,USERAGENT的使用等等。
參考代碼一:
- $ch = curl_init();// 建立一個新cURL資源
- curl_setopt($ch, CURLOPT_URL, "http://www.webkaka.com/");// 設定URL和相應的選項
- curl_setopt($ch, CURLOPT_HEADER, false);
- $data = curl_exec($ch);// 抓取URL并把它傳遞給浏覽器
- echo $data;//輸入結果
- curl_close($ch);//關閉cURL資源,并且釋放系統資源
複制代碼
參考代碼二:
- $szUrl = "http://www.webkaka.com/";
- $UserAgent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';
- $curl = curl_init();
- curl_setopt($curl, CURLOPT_URL, $szUrl);
- curl_setopt($curl, CURLOPT_HEADER, 0); //0表示不輸出Header,1表示輸出
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
- curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
- curl_setopt($curl, CURLOPT_ENCODING, '');
- curl_setopt($curl, CURLOPT_USERAGENT, $UserAgent);
- curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
- $data = curl_exec($curl);
- echo $data;
- //echo curl_errno($curl); //傳回0時表示程式執行成功 如何從curl_errno傳回值擷取錯誤資訊
- exit();
上例裡使用了幾個curl_setopt()參數的定義,HEADER、ENCODING、USERAGENT等,可以參考這裡http://cn2.php.net/curl_setopt檢視更多參數及用途。
需要注意的是,在使用curl_init()之前,你需要做下php.ini的安全設定,否則該函數不能執行