分享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 相关文章推荐
六酷社区论坛HOME页清新格调免费版 下载
Mar 07 PHP
php xfocus防注入资料
Apr 27 PHP
php preg_match_all结合str_replace替换内容中所有img
Oct 11 PHP
PHP 防恶意刷新实现代码
May 16 PHP
用PHP写的基于Memcache的Queue实现代码
Nov 27 PHP
thinkphp中memcache的用法实例
Nov 29 PHP
Web程序工作原理详解
Dec 25 PHP
使用PHP生成PDF方法详解
Jan 23 PHP
yum命令安装php7和相关扩展
Jul 04 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
Oct 25 PHP
在laravel中使用Symfony的Crawler组件分析HTML
Jun 19 PHP
PHP赋值的内部是如何跑的详解
Jan 13 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
十大催泪虐心动漫电影,有几部你还没看
2020/03/04 日漫
php中的MVC模式运用技巧
2007/05/03 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
js left,right,mid函数
2008/06/10 Javascript
jquery的extend和fn.extend的使用说明
2011/01/09 Javascript
jQuery中的read和JavaScript中的onload函数的区别
2014/08/27 Javascript
编写简单的jQuery提示插件
2014/12/21 Javascript
jQuery中[attribute*=value]选择器用法实例
2014/12/31 Javascript
jQuery仿天猫实现超炫的加入购物车
2015/05/04 Javascript
浅析JavaScript 调试方法和技巧
2015/10/22 Javascript
jQuery操作iframe中js函数的方法小结
2016/07/06 Javascript
详解使用nvm管理多版本node的方法
2017/08/30 Javascript
详解Vue基于vue-quill-editor富文本编辑器使用心得
2019/01/03 Javascript
详解Vue用cmd创建项目
2019/02/12 Javascript
微信小程序实现搜索指定景点周边美食、酒店
2019/05/18 Javascript
vue.js表单验证插件(vee-validate)的使用教程详解
2019/05/23 Javascript
vue单页应用的内存泄露定位和修复问题小结
2019/08/02 Javascript
layui table 获取分页 limit的方法
2019/09/20 Javascript
微信小程序实现音乐播放器
2019/11/20 Javascript
Python中DJANGO简单测试实例
2015/05/11 Python
python获取一组汉字拼音首字母的方法
2015/07/01 Python
python最长回文串算法
2018/06/04 Python
Python列表(list)所有元素的同一操作解析
2019/08/01 Python
pytorch 实现删除tensor中的指定行列
2020/01/13 Python
python db类用法说明
2020/07/07 Python
python高级特性简介
2020/08/13 Python
CSS3 flex布局之快速实现BorderLayout布局
2015/12/03 HTML / CSS
HTML5 device access 设备访问详解
2018/05/24 HTML / CSS
俄罗斯旅游网站:Tripadvisor俄罗斯
2017/03/21 全球购物
市场营销方案范文
2014/03/11 职场文书
任命书怎么写
2014/06/04 职场文书
个人对照检查材料思想汇报
2014/09/26 职场文书
群众路线教育实践活动总结
2014/10/30 职场文书
创业计划书之宠物店
2019/09/19 职场文书
Mysql关于数据库是否应该使用外键约束详解说明
2021/10/24 MySQL
JavaScript实现九宫格拖拽效果
2022/06/28 Javascript