PHP例項 CURL實現簡單採集

2022-09-02 04:06:08 字數 2773 閱讀 1593

在php中我們可以通過編寫curl來實現採集的功能,先分析需要採集的資料的**的特點,加入到我們的curl的屬性中來,實現我們定製採集的功能,最終得到我們需要的結果。

curl的使用

preg_match_all

array_filter

explode

php中建立curl請求的基本步驟

1 . 建立乙個新curl資源: $curl = curl_init ()

2 . 設定url和相應的選項: curl_setopt ($curl,option,value)

常用引數:

curlopt_header: 如果你想把乙個頭包含在輸出中,設定這個選項為乙個非零值。

curlopt_url: 這是你想用php取回的url位址。你也可以在用curl_init()函式初始化時設定這個選項。

curlopt_returntransfer:如果成功只將結果返回,不自動輸出任何內容。

curlopt_ssl_verifyhost:禁用ssl證書的驗證

curlopt_ssl_verifypeer: 禁用ssl證書的驗證

3 . 抓取 url 並把它傳遞給瀏覽器:$output = curl_exec ($curl)

4 . 關閉 curl 資源,並且釋放系統資源:curl_close ( $ch )

三、開發準備

首先要檢視當前php環境是否支援curl.

建立並切換到code目錄

//建立code目錄

sudo mkdir /home/code

//修改code目錄許可權

sudo chmod -r 777 /home/code

//切換到code目錄

cd /home/code

//在此目錄啟動php內建伺服器

sudo php -s localhost:80

<?php

phpinfo();

?>

頁面上搜尋curl,如下圖是支援curl。

如果不支援的話請修改php.ini中;extension=php_curl.dll前的;去掉,重新啟動php伺服器就可以了。

1 簡單的採集

curl簡單實現獲取乙個**頁面功能

在 /home/code 新建乙個 curltest.php 檔案,抓取實驗樓首頁,並輸出到頁面:

<?php

//1.初始化,建立乙個新curl資源

$curl=curl_init();

//2.設定url和相應的選項,我們採集`頁面

curl_setopt($curl, curlopt_url, "");

//因為實驗樓的位址為https,所以引數為 false 代表不檢查ssl證書

curl_setopt($curl, curlopt_ssl_verifypeer, false);

//如果你想把乙個頭包含在輸出中,設定這個選項為乙個非零值

curl_setopt($curl, curlopt_header, 0);

//3.執行並獲取結果

curl_exec($curl);

//釋放curl

curl_close($curl);

?>

**執行效果如下,頁面展示效果可能會比較亂,因為一些 js 和 css 檔案的引用位址會失效,但是這並不影響我們獲取資料。

實現文字替換

上面實驗只是輸出實驗樓的頁面,我們也可以在輸出的時候把頁面上資料修改,建立curlreplace.php檔案,我們把頁面中的所有的"實驗樓"修改為"我喜歡在實驗樓學習"例子如下。

<?php

//1.初始化,建立乙個新curl資源

$curl=curl_init();

//2.設定url和相應的選項,我們採集`頁面

curl_setopt($curl, curlopt_url, "");

//因為實驗樓的位址為https,所以引數為 false 代表不檢查ssl證書

curl_setopt($curl, curlopt_ssl_verifypeer, false);

//如果你想把乙個頭包含在輸出中,設定這個選項為乙個非零值

curl_setopt($curl, curlopt_header, 0);

// 執行之後不直接列印出來

curl_setopt($curl, curlopt_returntransfer, true);

//3.執行並獲取結果

$resault=curl_exec($curl);

//4.釋放curl

curl_close($curl);

//把頁面中的實驗樓修改為我喜歡在實驗樓學習

echo str_replace("實驗樓","我喜歡在實驗樓學習",$resault);

?>

3.開始頁面採集

本次實驗用來採集實驗樓課程,url位址為courses/.

這個頁面中的課程的和標題,我要採集下來存入資料庫中。

我們檢視這個頁面的原始碼可以看出我們所需要的位址的規律。

檢視源**,我們可以看到課程標題和課程都有固定的格式,我們就可以使用正規表示式把內容匹配出來。

此處為把標題匹配,我們可以使用preg_match_all匹配的陣列是乙個二維陣列。

preg_match_all() 函式用於執行乙個全域性正規表示式匹配

語法://第乙個引數為匹配的正規表示式,第二個為要匹配的字串,第三個為所有匹配結果(陣列)

preg_match_all (pattern, subject, matches)

我們找到樣式為course-title所有span 

php使用curl實現模擬登入例項

function login post url,cookie,post function get content url,cookie post array username 使用者名稱 password 密碼 usecookie 0 action login submit 1,cookie coo...

使用curl的簡單例項

a 使用vs新建乙個win32的控制台程式。b 在工程目錄下,新建乙個include的資料夾,將libcurl 7.18.0 win32 msvc include curl這個目錄拷貝到include目錄下。c 專案 屬性 c c 常規 附加包含目錄 新增 include d 在工程目錄下,新建乙個...

php之curl簡單應用

1 什麼是curl且能實現什麼功能?什麼是curl curl php中常用都實現那些功能 1 實現遠端獲取和採集內容23 實現模擬登陸 4 實現介面對接 api 資料傳輸等 5 實現模擬cookie等 2 php 如何使用curl功能 1 整個操作過程中第一步是用cur init 函式進行初始化 2...