PHP的cURL庫簡單和有效地抓網頁

2021-10-14 11:02:19 字數 2883 閱讀 3477

使用php的curl庫可以簡單和有效地去抓網頁。你只需要執行乙個指令碼,然後分析一下你所抓取的網頁,然後就可以以程式的方式得到你想要的資料了。無論是你想從從乙個鏈結上取部分資料,或是取乙個xml檔案並把其匯入資料庫,那怕就是簡單的獲取網頁內容,curl 是乙個功能強大的php庫。本文主要講述如果使用這個php庫。

啟用 curl 設定

首先,我們得先要確定我們的php是否開啟了這個庫,你可以通過使用php_info()函式來得到這一資訊。

<?php

phpinfo();

?>

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

如果你看到的話,那麼你需要設定你的php並開啟這個庫。如果你是在windows平台下,那麼非常簡單,你需要改一改你的php.ini檔案的設定,找到php_curl.dll,並取消前面的分號注釋就行了。如下所示:

//取消下在的注釋

extension=php_curl.dll

如果你是在linux下面,那麼,你需要重新編譯你的php了,編輯時,你需要開啟編譯引數——在configure命令上加上「–with-curl」 引數。

乙個小示例

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

<?php

// 初始化乙個 curl 物件

$curl = curl_init();

// 設定你需要抓取的url

curl_setopt($curl, curlopt_url, '');

// 設定header

curl_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資料

上面是抓取網頁的**,下面則是向某個網頁post資料。假設我們有乙個處理表單的**其可以接受兩個表單域,乙個是**號碼,乙個是簡訊內容。

<?php

$phonenumber = '13912345678';

$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, '');

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設定http協議的post方法,而不是get方法,然後以curlopt_postfields設定post的資料。

關於**伺服器

下面是乙個如何使用**伺服器的示例。請注意其中高亮的**,**很簡單,我就不用多說了。

關於ssl和cookie

關於ssl也就是https協議,你只需要把curlopt_url連線中的http://變成https://就可以了。當然,還有乙個引數叫curlopt_ssl_verifyhost可以設定為驗證站點。

關於cookie,你需要了解下面三個引數:

curlopt_cookie,在當面的會話中設定乙個cookie

curlopt_cookiejar,當會話結束的時候儲存乙個cookie

curlopt_cookiefile,cookie的檔案。

http伺服器認證

最後,我們來看一看http伺服器認證的情況。

PHP的cURL庫簡單和有效地抓網頁

使用php的curl庫可以簡單和有效地去抓網頁。你只需要執行乙個指令碼,然後分析一下你所抓取的網頁,然後就可以以程式的方式得到你想要的資料了。無論是你想從從乙個鏈結上取部分資料,或是取乙個xml檔案並把其匯入資料庫,那怕就是簡單的獲取網頁內容,curl 是乙個功能強大的php庫。本文主要講述如果使用...

有效地閱讀和學習

作為乙個it從業者,經常會碰到新的技術或者需要再學習的情況。在過去很長一段時間裡面,我都習慣,簡單翻閱一下技術文件,或者通過搜尋引擎來尋找答案。幾年過去,做了不少事情,卻發現真正自己能立刻上手的技能卻很少。同樣,自己平常也會看一下自己感興趣的書,但看完似乎沒留多少在自己腦子裡。反思過後,我發現我的問...

力扣20 有效地括號(簡單)

給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 false 示例 5 輸入 輸...