使用PHP的cURL庫可以簡單和有效地去抓網(wǎng)頁,你只需要運(yùn)行一個(gè)腳本,然后分析一下你所抓取的網(wǎng)頁,然后就可以以程序的方式得到你想要的數(shù)據(jù)了,無論是你想從從一個(gè)鏈接上取部分?jǐn)?shù)據(jù),或是取一個(gè)XML文件并把其導(dǎo)入數(shù)據(jù)庫,那怕就是簡單的獲取網(wǎng)頁內(nèi)容,cURL 是一個(gè)功能強(qiáng)大的PHP庫,本文主要講述如果使用這個(gè)PHP庫.
下面是一個(gè)利用cURL庫抓取網(wǎng)頁的簡單例子:
- <?php
- $curl = curl_init(); //初始化一個(gè)cURL對(duì)象
- curl_setopt($curl, CURLOPT_URL, 'http://Vevb.com'); //設(shè)置你需要抓取的URL
- curl_setopt($curl, CURLOPT_HEADER, 1); //設(shè)置header
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //設(shè)置cURL參數(shù)
- $data = curl_exec($curl); //運(yùn)行cURL,請(qǐng)求網(wǎng)頁
- curl_close($curl); //關(guān)閉URL請(qǐng)求
- var_dump($data); //顯示獲得的數(shù)據(jù)
- ?>
如何POST數(shù)據(jù):上面是抓取網(wǎng)頁的代碼,下面則是向某個(gè)網(wǎng)頁P(yáng)OST數(shù)據(jù),假設(shè)我們有一個(gè)處理表單的網(wǎng)址http://m.survivalescaperooms.com/sendSMS.php,其可以接受兩個(gè)表單域,一個(gè)是電話號(hào)碼,一個(gè)是短信內(nèi)容.
- <?php
- $phoneNumber = '13912345678';
- $message = 'This message was generated by curl and php';
- $curlPost = 'pNUMBER=' . urlencode($phoneNumber);
- $curlPost .= '&MESSAGE=' . urlencode($message);
- $curlPost .= '&SUBMIT=Send';
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, 'http://m.survivalescaperooms.com/sendSMS.php');
- curl_setopt($ch, CURLOPT_HEADER, 1);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
- $data = curl_exec();curl_close($ch);
- ?>
從上面的程序我們可以看到,使用CURLOPT_POST設(shè)置HTTP協(xié)議的POST方法,而不是GET方法,然后以CURLOPT_POSTFIELDS設(shè)置POST的數(shù)據(jù).
關(guān)于代理服務(wù)器:下面是一個(gè)如何使用代理服務(wù)器的示例,請(qǐng)注意其中高亮的代碼,代碼很簡單,我就不用多說了.
- <?php
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, 'http://m.survivalescaperooms.com');
- curl_setopt($ch, CURLOPT_HEADER, 1);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
- curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');
- curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');
- $data = curl_exec();curl_close($ch);
- ?>
關(guān)于SSL和Cookie
關(guān)于SSL也就是HTTPS協(xié)議,你只需要把CURLOPT_URL連接中的http://變成https://就可以了,當(dāng)然,還有一個(gè)參數(shù)叫CURLOPT_SSL_VERIFYHOST可以設(shè)置為驗(yàn)證站點(diǎn).
關(guān)于Cookie,你需要了解下面三個(gè)參數(shù):
CURLOPT_COOKIE,在當(dāng)面的會(huì)話中設(shè)置一個(gè)cookie
CURLOPT_COOKIEJAR,當(dāng)會(huì)話結(jié)束的時(shí)候保存一個(gè)Cookie
CURLOPT_COOKIEFILE,Cookie的文件.
HTTP服務(wù)器認(rèn)證:最后,我們來看一看HTTP服務(wù)器認(rèn)證的情況.
- <?php
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, 'http://m.survivalescaperooms.com');
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
- curl_setopt(CURLOPT_USERPWD, '[username]:[password]');
- $data = curl_exec();
- curl_close($ch);
- ?>
關(guān)于其它更多的內(nèi)容,請(qǐng)參看相關(guān)的cURL手冊(cè).
新聞熱點(diǎn)
疑難解答