如果要用php來抓取網頁,一般人最常想到的就是「fopen」這個函式了。但現在有了更強大的函式,「curl」,至於這個函式怎麼用呢?就往下看吧!

打開PHP安裝目錄,搜索以下三個文件ssleay32.dll、libeay32.dll和php_curl.dll,一一拷貝到系統目錄下的system32文件夾下,修改php.ini文件,找到;extension=php_curl.dll行,去掉前面的;號,保存,重啟服務器。

如使用mysql一樣,首先,我們必須先建立一個「curl」的連線,也因此,必須使用到「$ch = curl_init()」這個函式。而為了怕建立連線忘了關閉。因此,必須先寫好關閉的函式,「curl_close($ch)」。

接下來,你可以設定他截取網頁的選項, 一般來說常用的有「CURLOPT_RETURNTRANSFER」、「CURLOPT_URL」、「CURLOPT_HEADER」、 「CURLOPT_FOLLOWLOCATION」、「CURLOPT_USERAGENT」這幾個選項。而這幾個選項分別代表「將結果回傳成字串」、 「設定截取網址」、 「是否截取header的資訊」、「是否抓取轉址」及「瀏覽器的user agent」。最後,再執行「curl_exec($ch)」以取出結果就可以了。

而以抓取yahoo為例,若我們要偽裝成google bot去抓取,那麼我們可以寫成下列的樣子。

 

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, "www.yahoo.com.tw");
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_USERAGENT, "Google Bot");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$output = curl_exec($ch);
curl_close($ch);
echo $output;

當然,你也可以將選項們設定一個陣列,以增加設定時的閱讀度。這時就得動用「curl_setopt_array()」這個函式了。

而改寫上列程式如下:



$ch = curl_init();
$options = array(CURLOPT_URL => 'www.yahoo.com.tw',
CURLOPT_HEADER => false,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_USERAGENT => "Google Bot",
CURLOPT_FOLLOWLOCATION => true
);
curl_setopt_array($ch, $options);
$output = curl_exec($ch);
curl_close($ch);
echo $output;


arrow
arrow
    全站熱搜

    kingjoy1235 發表在 痞客邦 留言(0) 人氣()