1. 程式人生 > >php curl學習筆記

php curl學習筆記

定義

  • curl:client url library function ,用來抓取遠端檔案或傳輸檔案
  • file_get_contents(url)雖然也能抓取網站資訊,但是功能及其有限

使用前提

  • windows下:進入php.ini下開啟extension=php_curl.dll 擴充套件
  • linux下:使用yum -y install php-culr 命令安裝即可使用_

基本設定

  • curl_init() 初始化
  • curl_setopt($ch,CURLOPT_URL , “www.baidu.com”) 設定訪問url
  • curl_setopt($ch , CRULOPT_HEADER , 1 ) 是否返回頭資訊,預設為0,不返回
    返回的一個例子:HTTP/1.1 200 OK Date: Mon, 29 Oct 2018 10:04:51 GMT Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16 mod_perl/2.0.10 Perl/v5.16.3 X-Powered-By: PHP/5.4.16 Transfer-Encoding: chunked Content-Type: text/html; charset=utf-8
  • curl_setopt($ch , CURLOPT_NOBODY , 0) 是否返回頁面主題,預設為0 ,返回
  • curl_setopt($ch , CURLOPT_TIMEOUT , 30 ) 設定抓取等待時間,預設一直等
  • curl_setopt($ch ,CRULOPT_MAXREDIRS, 5) 設定最大重定向時間
  • curl_setopt($ch , CURLOPT_USERAGENT , ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36’ ) 設定使用者代理,也就是以什麼身份去訪問該頁面
  • curl_setopt($ch , CURLOPT_HTTPHEADER , $arr) 自定義目標伺服器收到的header頭內容
  • curl_setopt($ch , CURLOPT_SSL_VERIFYPEER , 0) 設定是否以ssl加密的方式去訪問https網站
  • curl_setopt($ch , CURLOPT_POST , 1) ; 設定用post方式去提交訂單
  • curl_setopt( c h , C U L R O P T P O S T F I L E L D S , ch , CULROPT_POSTFILELDS , arr ) 提交的post資料
  • curl_setopt($ch , CURLOPT_PORT , 8080 ) 訪問埠號,預設時80
  • curl_exec($ch) 開始訪問
  • curl_getinfo($ch) 以陣列的方式返回response資訊
  • culr_close($ch) 關閉資源

簡單例項

抓取百度的資訊

public function index()
{
	$ch=curl_init() or die(curl_error($ch));
	curl_setopt($ch , CURLOPT_URL, 'https://www.baidu.com/s?wd=php');
	curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36');
	curl_setopt($ch , CURLOPT_SSL_VERIFYPEER,0);
	$result=curl_exec($ch) or die(curl_error($ch));
	echo $result;
	curl_close($ch);
}