首页 > 语言 > PHP > 正文

PHP通过CURL实现定时任务的图片抓取功能示例

2024-05-04 23:50:35
字体:
来源:转载
供稿:网友

本文实例讲述了PHP通过CURL实现定时任务的图片抓取功能。分享给大家供大家参考,具体如下:

下文为各位介绍一个PHP定时任务通过CURL图片的抓取例子,希望例子对大家帮助,基本思路就是通过一个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.vevb.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 = fopen($dirname.$filename,'w');  fwrite($fp,$data);  fclose($fp);  return $dirname.$filename;} do{  set_time_limit(0);  ignore_user_abort();  $img = getLink('http://www.vevb.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);?>

希望本文所述对大家PHP程序设计有所帮助。


注:相关教程知识阅读请移步到PHP教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选