PHP定時任務通過CURL圖片的抓取例子

來源:互聯網
上載者:User

基本思路就是通過一個URL串連,將所有圖片的地址抓取下來,然後迴圈開啟圖片,利用檔案操作函數下載下來,儲存到本地,並且

把圖片的alt屬性也抓取下來,最後將資料儲存到自己資料庫。

廢話不多說,看程式就能明白了,其中,需要用到PHP定時任務和PHP的一個第三方外掛程式simple_html_dom.php,的使用,參考simple_html_dom的下載和使用

代碼:

<?php  function getLink($url){    include_once('simple_html_dom.php');    $ch = curl_init();    curl_setopt($ch,CURLOPT_URL,$url);    curl_setopt($ch,CURLOPT_HEADER,false);    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);    $output = curl_exec($ch);    curl_close($ch);    $html = new simple_html_dom();    $html->load($output); $links = array();    $arr = array(); $title = array();    foreach($html->find('a') as $element){      if( preg_match('#^\/content_[0-9]+_1\.html$#i',$element->href)){            array_push($links,'http://www.111cn.net'.$element->href);   array_push($title,$element->title);  }   }  $links = array_values(array_unique($links)); $title = array_values(array_unique($title)); $arr['links'] = $links; $arr['title'] = $title; return $arr;  }    function loadimg($url,$dirname){   include_once('simple_html_dom.php');  $ch = curl_init();  curl_setopt($ch,CURLOPT_URL,$url);  curl_setopt($ch,CURLOPT_HEADER,false);  curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);  $output = curl_exec($ch);  curl_close($ch);  $html = new simple_html_dom();  $html->load($output);  $arr = array();  foreach($html->find('img[w]') as $element){    $image =  $element->src;   }  $data = file_get_contents($image);   $info = getimagesize($image);//擷取圖片資訊,大小,格式   switch($info[2]){     case 1:       $str = 'gif';       break;     case 2:       $str = 'jpg';       break;     case 3:       $str = 'png';       break;     default:       continue;       break;   }   if($info[1] < 10 || $info[0] < 10) continue;//圖片太小,不是有價值的圖片,跳過本次迴圈   $filename = time().rand(1,999999).'.'.$str;    if(!is_dir($dirname)){     mkdir($dirname,0777,true);   }   $fp = fopen($dirname.$filename,'w');   fwrite($fp,$data);   fclose($fp);   return $dirname.$filename;   }  do{    set_time_limit(0);    ignore_user_abort();    $img = getLink('http://www.111cn.net /qutu_1.html');    $count = count($img['links']);    $arr = array();    for($i=0;$i<$count;$i++){   $arr[]=loadimg($img['links'][$i],'images/');    }    $img['url'] = $arr;    echo '<br/>';    $img['title'];    $res = array();    $len = count($img['title']);    //重新將資料群組裝成我們常用的二維數組,方便資料的資料庫處理    for($i=0;$i<$len;$i++){      $res[$i]['title'] = $img['title'][$i];   $res[$i]['url'] = $img['url'][$i];    }    foreach($res as $item){      echo '<img src='.$item["url"].'>'.$item["title"].'<br />';     }    $interval = 24*3600;    sleep($interval);   }while(true);  ?>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.