分享PHP源码批量抓取远程网页图片并保存到本地的实现方法


Posted in PHP onDecember 01, 2015

做为一个仿站工作者,当遇到网站有版权时甚至加密的时候,WEBZIP也熄火,怎么扣取网页上的图片和背景图片呢。有时候,可能会想到用火狐,这款浏览器好像一个强大的BUG,文章有版权,屏蔽右键,火狐丝毫也不会被影响。

但是作为一个热爱php的开发者来说,更多的是喜欢自己动手。所以,我就写出了下面的一个源码,php远程抓取图片小程序。可以读取css文件并抓取css代码中的背景图片,下面这段代码也是针对抓取css中图片而编写的。

<?php
 header("Content-Type: text/html; charset=utf-8");
    error_reporting(E_ERROR|E_WARNING);
 //全局配置
 $fromFile = "aaa.css";  //要抓取的文件
 $savePath = "ttttttttt";  //保存路径
 $fromDomain = "http://www.xxx.com/"; //要抓取的域名
 //读取css样式并且分离出所有image的url
 $str = file_get_contents($fromFile);
 $strArr = explode("url(",$str); 
 $i = 0;
 foreach($strArr as $val){
 $val1 = explode(")",$val);
 if(strpos($val1[0],'jpg')||strpos($val1[0],'png')||strpos($val1[0],'gif'))
 $imgUrl[$i++] = $val1[0];
 }
    //PS:上面可以用正则的,但是我觉得这样也不错
 //开始抓取
 foreach($imgUrl as $url){
 if($url=="") continue;
 $filename = $savePath.$url;
 $url = $fromDomain.$url;
 getImage($url,$filename);
 }
 function getImage($url,$filename){
 ob_start();
 $context = stream_context_create(
       array (
     'http' => array (
      'follow_location' => false // don't follow redirects
      )
     )
 );
 //请确保php.ini中的fopen wrappers已经激活
 readfile( $url,false,$context);
 $img = ob_get_contents();
        ob_end_clean();
 $fp2 = @fopen($filename,"a");
 fwrite($fp2,$img);
 fclose($fp2);
 echo $filename." ok √<br/>";
 }
?>

然后没有意外的话,你会发现,你指定的文件夹下面已经满满的都是图片了,哈哈..

ps:php获取远程图片并下载保存到本地

分享一个利用php获取远程图片并将远程图片下载保存到本地的函数代码:

/* 
*功能:php完美实现下载远程图片保存到本地 
*参数:文件url,保存文件目录,保存文件名称,使用的下载方式 
*当保存文件名称为空时则使用远程文件原来的名称 
*/ 
function getImage($url,$save_dir='',$filename='',$type=0){ 
  if(trim($url)==''){ 
    return array('file_name'=>'','save_path'=>'','error'=>1); 
  } 
  if(trim($save_dir)==''){ 
    $save_dir='./'; 
  } 
  if(trim($filename)==''){//保存文件名 
    $ext=strrchr($url,'.'); 
    if($ext!='.gif'&&$ext!='.jpg'){ 
      return array('file_name'=>'','save_path'=>'','error'=>3); 
    } 
    $filename=time().$ext; 
  } 
  if(0!==strrpos($save_dir,'/')){ 
    $save_dir.='/'; 
  } 
  //创建保存目录 
  if(!file_exists($save_dir)&&!mkdir($save_dir,0777,true)){ 
    return array('file_name'=>'','save_path'=>'','error'=>5); 
  } 
  //获取远程文件所采用的方法 
  if($type){ 
    $ch=curl_init(); 
    $timeout=5; 
    curl_setopt($ch,CURLOPT_URL,$url); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); 
    $img=curl_exec($ch); 
    curl_close($ch); 
  }else{ 
    ob_start(); 
    readfile($url); 
    $img=ob_get_contents(); 
    ob_end_clean(); 
  } 
  //$size=strlen($img); 
  //文件大小 
  $fp2=@fopen($save_dir.$filename,'a'); 
  fwrite($fp2,$img); 
  fclose($fp2); 
  unset($img,$url); 
  return array('file_name'=>$filename,'save_path'=>$save_dir.$filename,'error'=>0); 
}

以上内容是小编给大家分享的PHP源码批量抓取远程网页图片并保存到本地的实现方法,希望大家喜欢。

PHP 相关文章推荐
php入门小知识
Mar 24 PHP
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
Mar 13 PHP
PHP+MySQL 制作简单的留言本
Nov 02 PHP
分享下PHP register_globals 值为on与off的理解
Sep 26 PHP
php绘图中显示不出图片的原因及解决
Mar 05 PHP
destoon复制新模块的方法
Jun 21 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
Nov 04 PHP
php中实现xml与mysql数据相互转换的方法
Dec 25 PHP
PHP中使用imagick实现把PDF转成图片
Jan 26 PHP
Windows平台实现PHP连接SQL Server2008的方法
Jul 26 PHP
thinkPHP5框架设置404、403等http状态页面的方法
Jun 05 PHP
Yii框架函数简单用法分析
Sep 09 PHP
基于php实现七牛抓取远程图片
Dec 01 #PHP
使用Huagepage和PGO来提升PHP7的执行性能
Nov 30 #PHP
深入解析PHP中foreach语句控制数组循环的用法
Nov 30 #PHP
简单了解PHP编程中数组的指针的使用
Nov 30 #PHP
PHP 微信支付类 demo
Nov 30 #PHP
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
Nov 30 #PHP
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
Nov 30 #PHP
You might like
PHP中创建并处理图象
2006/10/09 PHP
PHP开发文件系统实例讲解
2006/10/09 PHP
php四种基础算法代码实例
2013/10/29 PHP
php实现指定字符串中查找子字符串的方法
2015/03/17 PHP
PHP实现Session入库/存入redis的方法
2017/05/04 PHP
JQuery $.each遍历JavaScript数组对象实例
2014/09/01 Javascript
微信小程序 地图(map)实例详解
2016/11/16 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
nodejs后台集成ueditor富文本编辑器的实例
2017/07/11 NodeJs
Vue Object 的变化侦测实现代码
2020/04/15 Javascript
JavaScript数组排序功能简单实现
2020/05/14 Javascript
微信小程序收藏功能的实现代码
2020/06/19 Javascript
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
Python实现测试磁盘性能的方法
2015/03/12 Python
python读取word文档的方法
2015/05/09 Python
Python在Console下显示文本进度条的方法
2016/02/14 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
Python实现字典按key或者value进行排序操作示例【sorted】
2019/05/03 Python
python实现智能语音天气预报
2019/12/02 Python
关于tf.nn.dynamic_rnn返回值详解
2020/01/20 Python
tensorflow查看ckpt各节点名称实例
2020/01/21 Python
Matplotlib使用字符串代替变量绘制散点图的方法
2020/02/17 Python
如何基于线程池提升request模块效率
2020/04/18 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
2021/03/03 Python
路易威登和香奈儿手袋:LuxeDH
2017/01/12 全球购物
香港通票:Hong Kong Pass
2019/02/26 全球购物
2014年高中生自我评价范文
2014/09/26 职场文书
个人贷款收入证明
2014/10/26 职场文书
2014年专项整治工作总结
2014/11/17 职场文书
幼儿教师辞职信范文
2015/03/02 职场文书
初中班主任工作总结2015
2015/05/13 职场文书
离婚起诉书范本
2015/05/18 职场文书
领导干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
用Python进行栅格数据的分区统计和批量提取
2021/05/27 Python
python中super()函数的理解与基本使用
2021/08/30 Python
使用Cargo工具高效创建Rust项目
2022/08/14 Javascript