设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间23 现在时间23 缓存数据 轻轻的闭上眼睛,慢慢的酝酿心情,将白天所有烦恼不快撒向天空,随着流星的坠落一起沉淀,愿今夜有个好梦,晚安!

轻轻的闭上眼睛,慢慢的酝酿心情,将白天所有烦恼不快撒向天空,随着流星的坠落一起沉淀,愿今夜有个好梦,晚安!

查看: 1223|回复: 2

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

[复制链接]

  离线 

TA的专栏

  • 打卡等级:热心大叔
  • 打卡总天数:205
  • 打卡月天数:0
  • 打卡总奖励:3160
  • 最近打卡:2023-08-27 06:04:43
等级头衔

等級:晓枫资讯-上等兵

在线时间
0 小时

积分成就
威望
0
贡献
428
主题
385
精华
0
金钱
4402
积分
841
注册时间
2022-12-21
最后登录
2025-3-13

发表于 2023-6-12 10:34:20 | 显示全部楼层 |阅读模式
本文实例讲述了PHP通过CURL实现定时任务的图片抓取功能。分享给大家供大家参考,具体如下:
下文为各位介绍一个PHP定时任务通过CURL图片的抓取例子,希望例子对大家帮助,基本思路就是通过一个URL连接,将所有图片的地址抓取下来,然后循环打开图片,利用文件操作函数下载下来,保存到本地,并且把图片的alt属性也抓取下来,最后将数据保存到自己数据库.
废话不多说,看程序就能明白了,其中,需要用到PHP定时任务和PHP的一个第三方插件simple_html_dom.php 的使用,参考simple_html_dom的下载和使用.
  1. <?php
  2. function getLink($url){
  3.   include_once('simple_html_dom.php');
  4.   $ch = curl_init();
  5.   curl_setopt($ch,CURLOPT_URL,$url);
  6.   curl_setopt($ch,CURLOPT_HEADER,false);
  7.   curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  8.   $output = curl_exec($ch);
  9.   curl_close($ch);
  10.   $html = new simple_html_dom();
  11.   $html->load($output);
  12. $links = array();
  13.   $arr = array();
  14. $title = array();
  15.   foreach($html->find('a') as $element){
  16.    if(preg_match('#^\/content_[0-9]+_1\.html$#i',$element->href)){
  17.       array_push($links,'https://www.jb51.net'.$element->href);
  18.   array_push($title,$element->title);
  19. }
  20. }
  21. $links = array_values(array_unique($links));
  22. $title = array_values(array_unique($title));
  23. $arr['links'] = $links;
  24. $arr['title'] = $title;
  25. return $arr;
  26. }
  27. function loadimg($url,$dirname){
  28. include_once('simple_html_dom.php');
  29. $ch = curl_init();
  30. curl_setopt($ch,CURLOPT_URL,$url);
  31. curl_setopt($ch,CURLOPT_HEADER,false);
  32. curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  33. $output = curl_exec($ch);
  34. curl_close($ch);
  35. $html = new simple_html_dom();
  36. $html->load($output);
  37. $arr = array();
  38. foreach($html->find('img[w]') as $element){
  39.   $image = $element->src;
  40. }
  41. $data = file_get_contents($image);
  42.   $info = getimagesize($image);//获取图片信息,大小,格式
  43.   switch($info[2]){
  44.    case 1:
  45.     $str = 'gif';
  46.     break;
  47.    case 2:
  48.     $str = 'jpg';
  49.     break;
  50.    case 3:
  51.     $str = 'png';
  52.     break;
  53.    default:
  54.     continue;
  55.     break;
  56.   }
  57.   if($info[1] < 10 || $info[0] < 10) continue;//图片太小,不是有价值的图片,跳过本次循环
  58.   $filename = time().rand(1,999999).'.'.$str;
  59.   if(!is_dir($dirname)){
  60.    mkdir($dirname,0777,true);
  61.   }
  62.   $fp = fopen($dirname.$filename,'w');
  63.   fwrite($fp,$data);
  64.   fclose($fp);
  65.   return $dirname.$filename;
  66. }
  67. do{
  68.   set_time_limit(0);
  69.   ignore_user_abort();
  70.   $img = getLink('https://www.jb51.net/qutu_1.html');
  71.   $count = count($img['links']);
  72.   $arr = array();
  73.   for($i=0;$i<$count;$i++){
  74.   $arr[]=loadimg($img['links'][$i],'images/');
  75.   }
  76.   $img['url'] = $arr;
  77.   echo '<br/>';
  78.   $img['title'];
  79.   $res = array();
  80.   $len = count($img['title']);
  81.   //重新将数据组装成我们常用的二维数组,方便数据的数据库处理
  82.   for($i=0;$i<$len;$i++){
  83.    $res[$i]['title'] = $img['title'][$i];
  84.   $res[$i]['url'] = $img['url'][$i];
  85.   }
  86.   foreach($res as $item){
  87.    echo '<img src='.$item["url"].'>'.$item["title"].'<br />';
  88.   }
  89.   $interval = 24*3600;
  90.   sleep($interval);
  91.   }while(true);
  92. ?>
复制代码
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php curl用法总结》、《PHP数组(Array)操作技巧大全》、《php排序算法总结》、《PHP常用遍历算法与技巧总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP数学运算技巧总结》、《php正则表达式用法总结》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
14
积分
8
注册时间
2023-12-16
最后登录
2023-12-16

发表于 2024-7-16 12:46:42 | 显示全部楼层
感谢楼主分享。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

  • 打卡等级:无名新人
  • 打卡总天数:1
  • 打卡月天数:0
  • 打卡总奖励:20
  • 最近打卡:2025-03-15 10:26:53
等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
32
积分
4
注册时间
2024-12-31
最后登录
2025-3-15

发表于 6 天前 | 显示全部楼层
路过,支持一下
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼
3楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表