熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

使用PHP的cURL庫進行網頁抓取

2013-11-15 12:43:54  來源: PHP編程 

  使用PHP的cURL庫可以簡單和有效地去抓網頁你只需要運行一個腳本然後分析一下你所抓取的網頁然後就可以以程序的方式得到你想要的數據了無論是你想從從一個鏈接上取部分數據或是取一個XML文件並把其導入數據庫那怕就是簡單的獲取網頁內容cURL 是一個功能強大的PHP庫本文主要講述如果使用這個PHP庫

  啟用 cURL 設置

首先我們得先要確定我們的PHP是否開啟了這個庫你可以通過使用php_info()函數來得到這一信息

﹤?php
phpinfo();
?﹥

  如果你可以在網頁上看到下面的輸出那麼表示cURL庫已被開啟

  如果你看到的話那麼你需要設置你的PHP並開啟這個庫如果你是在Windows平台下那麼非常簡單你需要改一改你的phpini文件的設置找到php_curldll並取消前面的分號注釋就行了如下所示

//取消下在的注釋
extension=php_curldll

  如果你是在Linux下面那麼你需要重新編譯你的PHP了編輯時你需要打開編譯參數——在configure命令上加上–withcurl 參數

  一個小示例

  如果一切就緒下面是一個小例程

﹤?php
// 初始化一個 cURL 對象
$curl = curl_init();

// 設置你需要抓取的URL
curl_setopt($curl CURLOPT_URL http://cocrecom);

// 設置header
curl_setopt($curl CURLOPT_HEADER );

// 設置cURL 參數要求結果保存到字符串中還是輸出到屏幕上
curl_setopt($curl CURLOPT_RETURNTRANSFER );

// 運行cURL請求網頁
$data = curl_exec($curl);

// 關閉URL請求
curl_close($curl);

// 顯示獲得的數據
var_dump($data);

   如何POST數據

  上面是抓取網頁的代碼下面則是向某個網頁POST數據假設我們有一個處理表單的網址http://wwwexamplecom/sendSMSphp其可以接受兩個表單域一個是電話號碼一個是短信內容

﹤?php
$phoneNumber = ;
$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://wwwexamplecom/sendSMSphp);
curl_setopt($ch CURLOPT_HEADER );
curl_setopt($ch CURLOPT_RETURNTRANSFER );
curl_setopt($ch CURLOPT_POST );
curl_setopt($ch CURLOPT_POSTFIELDS $curlPost);
$data = curl_exec();
curl_close($ch);
?﹥

  從上面的程序我們可以看到使用CURLOPT_POST設置HTTP協議的POST方法而不是GET方法然後以CURLOPT_POSTFIELDS設置POST的數據

  關於代理服務器

  下面是一個如何使用代理服務器的示例請注意其中高亮的代碼代碼很簡單我就不用多說了

﹤?php 
$ch = curl_init();
curl_setopt($ch CURLOPT_URL http://wwwexamplecom);
curl_setopt($ch CURLOPT_HEADER );
curl_setopt($ch CURLOPT_RETURNTRANSFER );
curl_setopt($ch CURLOPT_HTTPPROXYTUNNEL );
curl_setopt($ch CURLOPT_PROXY fakeproxycom:);
curl_setopt($ch CURLOPT_PROXYUSERPWD user:password);
$data = curl_exec();
curl_close($ch);
?﹥

  關於SSL和Cookie

  關於SSL也就是HTTPS協議你只需要把CURLOPT_URL連接中的http://變成https://就可以了當然還有一個參數叫CURLOPT_SSL_VERIFYHOST可以設置為驗證站點

  關於Cookie你需要了解下面三個參數

  CURLOPT_COOKIE在當面的會話中設置一個cookie

  CURLOPT_COOKIEJAR當會話結束的時候保存一個Cookie

  CURLOPT_COOKIEFILECookie的文件

  HTTP服務器認證

  最後我們來看一看HTTP服務器認證的情況

﹤?php
$ch = curl_init();
curl_setopt($ch CURLOPT_URL http://wwwexamplecom);
curl_setopt($ch CURLOPT_RETURNTRANSFER );
curl_setopt($ch CURLOPT_HTTPAUTH CURLAUTH_BASIC);
curl_setopt(CURLOPT_USERPWD [username]:[password])

$data = curl_exec();
curl_close($ch);
?﹥

  關於其它更多的內容請參看相關的cURL手冊


From:http://tw.wingwit.com/Article/program/PHP/201311/21491.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.