PHP是一種通用的開源腳本語言,常用于網頁開發。我們經常需要在網站中顯示圖片,而有時候需要從其他網站抓取圖片作為展示或下載。這時候就需要使用PHP curl庫對圖片進行抓取。PHP curl庫提供了豐富的選項和功能,使得我們可以輕松地抓取網頁上各種類型的圖片。
下面以抓取豆瓣電影排行榜上的電影海報為例,演示如何使用PHP curl進行圖片抓取。
//初始化cURL $ch = curl_init(); //設置請求頭信息,模擬瀏覽器訪問,防止被服務器拒絕訪問 $header = array( 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36' ); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); //設置請求的URL地址 curl_setopt($ch, CURLOPT_URL, "https://movie.douban.com/chart"); //設置請求方式為GET curl_setopt($ch, CURLOPT_HTTPGET, 1); //設置結果轉化成字符串 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //執行請求,并將結果轉化成字符串 $html = curl_exec($ch); //關閉cURL curl_close($ch); //匹配電影海報圖片的URL地址 preg_match_all('//U', $html, $matches); //將匹配到的URL地址存儲到數組中 $posters = $matches[1]; //遍歷URL地址數組,下載圖片并保存到本地 foreach ($posters as $poster) { $url = "https://" . $poster; $imageName = "/path/to/image/" . basename($poster); file_put_contents($imageName, file_get_contents($url)); }
在以上代碼中,我們首先使用curl_init()函數初始化一個cURL的會話,然后通過curl_setopt()函數設置請求頭信息,請求URL地址,請求方式為GET,將結果轉化成字符串,最后執行請求并將結果保存到變量$html中。接著,使用preg_match_all()函數匹配電影海報圖片的URL地址,并將匹配到的URL地址存儲到數組$posters中。最后,使用file_put_contents()函數將圖片下載并保存到本地。
當然,以上代碼僅供參考,具體實現方式因網站各異而略有差別。在使用PHP curl進行圖片抓取時,我們需要注意一些問題:
- 設置請求頭信息,模擬瀏覽器訪問,避免被服務器拒絕訪問。
- 設置curl_setopt()函數的選項,如CURLOPT_RETURNTRANSFER,CURLOPT_FOLLOWLOCATION等,以獲取正確的結果。
- 對獲取到的結果進行解析,使用正則表達式或DOM解析器等。
總之,PHP curl庫是進行圖片抓取、爬蟲等操作的強大工具,掌握它對于我們的開發工作會有很大幫助。
上一篇php curl 投票