1. 程式人生 > >php curl數據傳輸神器

php curl數據傳輸神器

ima ftp服務器 技術分享 return 設置 nbsp bubuko post發送 網頁爬蟲

一、curl的概念:

curl (Client Url Library Functions)

定義: curl is a command line tool for transfering data with url syntax

即 使用 URL 語法傳輸數據的命令行工具

技術分享圖片

CURL是訪問網絡資源的工具

二、curl的使用場景

1、訪問網頁資源 (例如:編寫網頁爬蟲)

2、訪問WebService 數據接口資源 (例如:動態獲取數據接口,天氣,號碼歸屬地等)

3、下載FTP服務器裏面的文件資源等 (例如:下載FTP服務器裏面的文件)

所有的網絡資源都可以用CRUL訪問和下載到

三、在PHP中使用cUrl

windows: 在cmd中執行命令

 php -i  // 所有php的設置都會被打印出來, i 代表 infomations的意思

然後 右鍵 -> 編輯 -> 查找->輸入 cUrl ,可以看到類似如下信息:

技術分享圖片

說明cUrl 可用,且版本為 7.25.0

Linux:輸入命令:

php -i | grep cUrl

技術分享圖片

幾乎所有的工具都需要經歷:

去初始化它 -> 去使用它 -> 去關閉它

curl也是這樣。

技術分享圖片

curl_exec() 把發送請求和接收數據都一起做了。

四、使用示例

1、一個最簡單的 curl 示例(編寫一個網頁爬蟲,獲取百度首頁的 html)

$curl = curl_init(‘www.baidu.com‘);  // 初始化
curl_exec($curl);  // 執行
curl_close($curl); // 關閉

這樣子會得到百度首頁的 html 代碼,並且會直接輸出,用瀏覽器顯示的話,和輸入www.baidu.com顯示的內容一模一樣。

2、對網頁代碼做一些修改(例如將百度改為慕課)

$url = ‘www.baidu.com‘;
$curl = curl_init();  // 初始化 curl
curl_setopt($curl,CURLOPT_URL,$url); // 設置訪問的 url
curl_setopt($curl
,CURLOPT_RETURNTRANSFER,true); // CURLOPT_RETURNTRANSFER 設為 tuue,表示執行結果不直接打印出來,以便對結果做一些後續的處理 $output = curl_exec($curl); //執行 curl_close($curl); // 關閉 curl str_replace(‘百度‘,‘慕課‘,$output); // 對返回結果做替換

3、訪問 WebService 數據接口資源(查詢深圳的天氣)

使用的天氣接口為 http://www.webxml.com.cn/WebServices/WeatherWebService.asmx ,雖說是免費的,但是有使用次數限制

$url = ‘http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName‘;
$data = ‘theCityName=北京‘;  // 多個參數用 & 連接
$httpHeader = array(
    ‘Content-type: application/x-www-form-urlencoded;charset=utf-8‘,  // 數據被編碼為名稱/值對的形式,字符集為utf-8
    ‘content-length: ‘.strlen($data), // post發送都需要指定一下數據的長度
);
$curl = curl_init();  // 初始化 curl
curl_setopt($curl,CURLOPT_URL,$url); // 設置訪問的 url
curl_setopt($curl,CURLOPT_HEADER,0); // 不設置 header
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true); // CURLOPT_RETURNTRANSFER 設為 tuue,表示執行結果不直接打印出來,以便對結果做一些後續的處理
// post請求,下面這 3 行是重點
curl_setopt($curl,CURLOPT_POST,true);  // 通過 post 的方式請求
curl_setopt($curl,CURLOPT_POSTFIELDS,$data); // 設置請求的參數
curl_setopt($curl,CURLOPT_HTTPHEADER,$httpHeader); // 設置 httpheader
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER[‘HTTP_USER_AGENT‘]); //聲明瀏覽器用於 HTTP 請求的用戶代理頭的值。簡單來說,就是“聲明用什麽瀏覽器來打開目標網頁”,當抓取網頁資源不能正確返回結果時,可以加入這一項
$output = curl_exec($curl); //執行
if(! curl_errno($curl)){  // 如果執行的過程中出錯了,將錯誤打印出來
    echo $output; // 返回的是一個 xml
    //$info = curl_getinfo($curl);  // 返回的是數組格式
    //print_r($info);
}else{
    echo ‘curl error:‘.curl_error($curl);
}
curl_close($curl); // 關閉 curl

php curl數據傳輸神器