《PHP應(yīng)用:PHP通過CURL實(shí)現(xiàn)定時任務(wù)的圖片抓取功能示例》要點(diǎn):
本文介紹了PHP應(yīng)用:PHP通過CURL實(shí)現(xiàn)定時任務(wù)的圖片抓取功能示例,希望對您有用。如果有疑問,可以聯(lián)系我們。
本文實(shí)例講述了PHP通過CURL實(shí)現(xiàn)定時任務(wù)的圖片抓取功能.分享給大家供大家參考,具體如下:PHP實(shí)例
下文為各位介紹一個PHP定時任務(wù)通過CURL圖片的抓取例子,希望例子對大家?guī)椭?基本思路就是通過一個URL連接,將所有圖片的地址抓取下來,然后循環(huán)打開圖片,利用文件操作函數(shù)下載下來,保存到本地,并且把圖片的alt屬性也抓取下來,最后將數(shù)據(jù)保存到自己數(shù)據(jù)庫.PHP實(shí)例
廢話不多說,看程序就能明白了,其中,需要用到PHP定時任務(wù)和PHP的一個第三方插件simple_html_dom.php 的使用,參考simple_html_dom的下載和使用.PHP實(shí)例
<?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,''.$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;//圖片太小,不是有價值的圖片,跳過本次循環(huán) $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('/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']); //重新將數(shù)據(jù)組裝成我們常用的二維數(shù)組,方便數(shù)據(jù)的數(shù)據(jù)庫處理 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); ?>
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php curl用法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php排序算法總結(jié)》、《PHP常用遍歷算法與技巧總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》、《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》、《php正則表達(dá)式用法總結(jié)》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》及《php常見數(shù)據(jù)庫操作技巧匯總》PHP實(shí)例
希望本文所述對大家PHP程序設(shè)計(jì)有所幫助.PHP實(shí)例
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/3144.html