PHP定时任务通过CURL图片的抓取例子
发布:smiling 来源: PHP粉丝网 添加日期:2015-04-13 09:52:55 浏览: 评论:0
下文为各位介绍一个PHP定时任务通过CURL图片的抓取例子,希望例子对大家帮助,基本思路就是通过一个URL连接,将所有图片的地址抓取下来,然后循环打开图片,利用文件操作函数下载下来,保存到本地,并且把图片的alt属性也抓取下来,最后将数据保存到自己数据库.
废话不多说,看程序就能明白了,其中,需要用到PHP定时任务和PHP的一个第三方插件simple_html_dom.php 的使用,参考simple_html_dom的下载和使用.
- <?php
 - function getLink($url){
 - <a href="/tags.php/include/" target="_blank">include</a>_once('simple_html_dom.php');
 - $ch = curl_init();
 - <a href="/tags.php/curl_setopt/" target="_blank">curl_setopt</a>($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();
 - <a href="/tags.php/foreach/" target="_blank">foreach</a>($html->find('a') as $element){
 - if( <a href="/tags.php/preg_match/" target="_blank">preg_match</a>('#^\/content_[0-9]+_1\.html$#i',$element->href)){
 - array_push($links,'http://www.phpfensi.com'.$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 = <a href="/tags.php/fopen/" target="_blank">fopen</a>($dirname.$filename,'w');
 - fwrite($fp,$data);
 - fclose($fp);
 - return $dirname.$filename;
 - }
 - do{
 - set_time_limit(0);
 - ignore_user_abort();
 - $img = getLink('http://www.phpfensi.com /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);
 - ?>
 
Tags: PHP定时任务 CURL图片抓取
- 上一篇:php抓取网站图片并保存本地服务器实例
 - 下一篇:PHP混合验证码生成程序代码
 
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
 - PHP新手上路(一)(7)
 - 惹恼程序员的十件事(5)
 - PHP邮件发送例子,已测试成功(5)
 - 致初学者:PHP比ASP优秀的七个理由(4)
 - PHP会被淘汰吗?(4)
 - PHP新手上路(四)(4)
 - 如何去学习PHP?(2)
 - 简单入门级php分页代码(2)
 - php中邮箱email 电话等格式的验证(2)
 
