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

 更新时间:2016年10月03日 10:02:22   作者:smiling  
这篇文章主要介绍了PHP通过CURL实现定时任务的图片抓取功能,涉及php的curl及dom操作相关技巧,需要的朋友可以参考下

本文实例讲述了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,'https://www.jb51.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('https://www.jb51.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);
?>

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php curl用法总结》、《PHP数组(Array)操作技巧大全》、《php排序算法总结》、《PHP常用遍历算法与技巧总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP数学运算技巧总结》、《php正则表达式用法总结》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总

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

相关文章

  • SQL server不支持utf8 php却用utf8的矛盾问题解决方法

    SQL server不支持utf8 php却用utf8的矛盾问题解决方法

    这篇文章主要介绍了SQL server不支持utf8 php却用utf8的矛盾问题解决方法,需要的朋友可以参考下
    2020-03-03
  • php实现将Session写入数据库

    php实现将Session写入数据库

    这篇文章主要介绍了php实现将Session写入数据库的相关资料,需要的朋友可以参考下
    2015-07-07
  • PHP中ltrim与rtrim去除左右空格及特殊字符实例

    PHP中ltrim与rtrim去除左右空格及特殊字符实例

    这篇文章主要介绍了PHP中ltrim与rtrim去除左右空格及特殊字符的用法,结合实例形式较为详细的说明了ltrim与rtrim的定义,参数作用及去除左右空格与特殊字符的使用技巧,需要的朋友可以参考下
    2016-01-01
  • php,ajax实现分页

    php,ajax实现分页

    之前用php写好了个分页程序,今天试着结合ajax实现这个功能,成功了。哈哈,代码不难写,但写好之后测试发现出了,然后又调试了好段时间才正确。深感开发人员的时间大部分都是花在调试代码上的。
    2008-03-03
  • PHP执行普通shell命令流程解析

    PHP执行普通shell命令流程解析

    这篇文章主要介绍了PHP执行普通shell命令流程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • 使用PHP接受文件并获得其后缀名的方法

    使用PHP接受文件并获得其后缀名的方法

    这篇文章主要介绍了使用PHP接受文件并获得其后缀名的方法,作者着重提到了其中$_FILES全局变量的使用,需要的朋友可以参考下
    2015-08-08
  • Git命令之分支详解

    Git命令之分支详解

    这篇文章主要介绍了Git命令之分支详解,步骤介绍的很详细,有需要的同学可以参考下
    2021-03-03
  • PHP的中使用非缓冲模式查询数据库的方法

    PHP的中使用非缓冲模式查询数据库的方法

    缓冲查询和非缓冲查询(Buffered and Unbuffered queries)。PHP的查询缺省模式是缓冲模式。也就是说,查询数据结果会一次全部提取到内存里供PHP程序处理,需要的朋友可以参考下
    2017-02-02
  • php向js函数传参的几种方法

    php向js函数传参的几种方法

    php向js函数传参可以使用$_POST也可使用$_SESSION[' '],也可用echo语句进行输出
    2014-08-08
  • PHP实现webshell扫描文件木马的方法

    PHP实现webshell扫描文件木马的方法

    这篇文章主要介绍了PHP实现webshell扫描文件木马的方法,涉及php针对数值传输的过滤操作与文件识别等相关安全操作技巧,需要的朋友可以参考下
    2017-07-07

最新评论