php抓取網頁圖片

gxfw 9年前發布 | 2K 次閱讀 PHP

php抓取網頁圖片

    <?php
header('content-type:text/html;charset=utf-8');
set_time_limit(0);//抓取不受時間限制
if($_POST['Submit']=="開始抓取"){
$URL=$_POST['link'];
get_pic($URL);
}
function get_pic($pic_url) {
//獲取圖片二進制流
$data=CurlGet($pic_url);
//利用正則表達式得到圖片鏈接
$pattern_src1 = '/<img.?src\=\"(..jpg).?>/';//只匹配jpg格式的圖片
$pattern_src2 = '/<img.
?src\=\"(..bmp).?>/';//只匹配bmp格式的圖片
$pattern_src3 = '/<img.?src\=\"(..png).?>/';//只匹配png格式的圖片
$pattern_src4 = '/<img.
?src\=\"(..gif).?>/';//只匹配gif格式的圖片
$num1 = preg_match_all($pattern_src1, $data, $match_src1);
$num2 = preg_match_all($pattern_src2, $data, $match_src2);
$num3 = preg_match_all($pattern_src3, $data, $match_src3);
$num4 = preg_match_all($pattern_src4, $data, $match_src4);
$arr_src1=$match_src1[1];//獲得圖片數組
$arr_src2=$match_src2[1];
$arr_src3=$match_src3[1];
$arr_src4=$match_src4[1];
echo '=============================================抓取開始=============================================<br />';
get_name1($arr_src1);
get_name1($arr_src2);
get_name1($arr_src3);
get_name1($arr_src4);
get_name2($arr_src1);
get_name2($arr_src2);
get_name2($arr_src3);
get_name2($arr_src4);

  echo '=============================================抓取結束=============================================<br />';  
  return 0;  
 }  

 function get_name1($pic_arr){  
  //圖片編號和類型  
  $pattern_type = '/.*\/(.*?)$/';  

  foreach($pic_arr as $pic_item){//循環取出每幅圖的地址  
   $num = preg_match_all($pattern_type,$pic_item,$match_type);  
   //以流的形式保存圖片  
   $write_fd = @fopen($match_type[1][0],"wb");  
   echo "圖片網址:<a href='".$pic_item."' target='_blank'>".$pic_item."</a><br />";  
   @fwrite($write_fd, CurlGet($pic_item));  
   @fclose($write_fd);  
  }  
  return 0;  
 }  
  function get_name2($pic_arr){  
  //圖片編號和類型  
  $pattern_type = '/.*\/(.*?)$/';  

  foreach($pic_arr as $pic_item){//循環取出每幅圖的地址  
   $num = preg_match_all($pattern_type,$pic_item,$match_type);  
   //以流的形式保存圖片  
   $write_fd = @fopen($match_type[1][0],"wb");  
   echo "圖片網址:<a href='".$_POST['link'].$pic_item."' target='_blank'>".$_POST['link'].$pic_item."</a><br />";  
   @fwrite($write_fd, CurlGet($_POST['link'].$pic_item));  
   @fclose($write_fd);  
  }  
  return 0;  
 }  
 //抓取網頁內容  
 function CurlGet($url){  
  $url=str_replace('&','&',$url);  
  $curl = curl_init();  
  curl_setopt($curl, CURLOPT_URL, $url);  
  curl_setopt($curl, CURLOPT_HEADER, false);  

  //curl_setopt($curl, CURLOPT_REFERER,$url);  
  curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; SeaPort/1.2; Windows NT 5.1; SV1; InfoPath.2)");  
  curl_setopt($curl, CURLOPT_COOKIEJAR, 'cookie.txt');  
  curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookie.txt');  
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  
  curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 0);  
  $values = curl_exec($curl);  
  curl_close($curl);  
  return $values;  
 }      
?>  
<html>  
 <head>  
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  <title>網頁圖片抓取</title>  
 </head>  
 <body>  
  <form action="" method="post">  
   要抓取圖片的網址:<input type="text" id="link" name="link" value="請在這里輸入要抓取圖片的網址" OnClick="this.value=''" size="100" /><br />  
   <input type="submit" id="Submit" name="Submit" value="開始抓取" />  
  </form>  
 </body>  
</html>  </pre> 


 本文由用戶 gxfw 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!