最近研究了一下爬蟲相關的一些代碼,可以簡單理解爬蟲其實就是訪問頁面,並將其資訊進行一定的歸納或者處理,達成自己預想的目標的程式,研究了一下後,參考網上的一些代碼,自己封裝了一個訪問url並將上面的img標籤內的圖片儲存下來的php指令碼,話不多說,上代碼
<?php class getImg { function __construct($url = 'http://blog.csdn.net/wang_jingxiang/article/details/4864705') { $ret = $this->setRequest($url); $total = $this->image($ret); foreach($total as $pic) { $this->savePics($pic); } } public function image($url) { preg_match_all("/<img([^>]*)\s*src=('|\")([^'\"]+)('|\")/", $url,$matches);//帶引號 //preg_match_all("/<img([^>]*)\ssrc=([^\s>]+)/",$string,$matches);//不帶引號 $matches=array_unique($matches[0]);//去除數組中重複的值 foreach($matches as $key=>$val) { $matches[$key] = $this->stringSolve($val); } return $matches; } public function stringSolve($str) { $pos1 = stripos($str, '"'); $pos2 = stripos($str, '"', $pos1+2); $str = substr($str, $pos1+1, $pos2-10); return $str; } public function savePics($pic) { $rt = $this->setRequest($pic); $fp = fopen('pics'.'/'.md5($pic).'.jpg', 'a'); fwrite($fp, $rt); fclose($fp); } public function setRequest($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); $ret = curl_exec($ch); curl_close($ch); return $ret; } } $test = new getImg;?>
主要的網路訪問,使用的是php的curl的方法,封裝在了setRequest這個函數中,而另外一個比較重要的是圖片的解析函數,也就是imgae用來解析img標籤,擷取其中的圖片的載入路徑,並最終調用savePics儲存在本地
整個指令碼寫的還是比較簡單的,只是實現了基本的基礎功能,後續進一步拓展做成比較方便的圖片爬蟲的話可以考慮添加html前端代碼,可視化地選擇要扒的網頁的url,同時可以可視地拉取到該頁面所有圖片後篩選圖片並儲存到本地的功能