分享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 相关文章推荐
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
Jun 04 PHP
php设置编码格式的方法
Mar 05 PHP
深入PHP5中的魔术方法详解
Jun 17 PHP
PHP中使用break跳出多重循环代码实例
Jan 21 PHP
基于PHP实现商品成交时发送短信功能
May 11 PHP
CodeIgniter框架验证码类库文件与用法示例
Mar 18 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
Jun 21 PHP
PHP观察者模式原理与简单实现方法示例
Aug 25 PHP
PHP基于回溯算法解决n皇后问题的方法示例
Nov 07 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
Apr 08 PHP
laravel 获取某个查询的查询SQL语句方法
Oct 12 PHP
laravel 框架结合关联查询 when()用法分析
Nov 22 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
web方式ftp
2006/10/09 PHP
joomla数据库操作示例代码
2016/01/06 PHP
php生成图片验证码的方法
2016/04/15 PHP
javascript中的delete使用详解
2013/04/11 Javascript
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
2013/10/11 Javascript
JS实现的3D拖拽翻页效果代码
2015/10/31 Javascript
js实现瀑布流的三种方式比较
2020/06/28 Javascript
zTree插件下拉树使用入门教程
2016/04/11 Javascript
js实现消息滚动效果
2017/01/18 Javascript
js仿QQ邮箱收件人选择与搜索功能
2017/02/10 Javascript
Vuex之理解Store的用法
2017/04/19 Javascript
node.js express中app.param的用法详解
2017/07/16 Javascript
细说webpack源码之compile流程-入口函数run
2017/12/26 Javascript
10行原生JS实现文字无缝滚动(超简单)
2018/01/02 Javascript
使用iView Upload 组件实现手动上传图片的示例代码
2018/10/01 Javascript
vue+Element-ui前端实现分页效果
2020/11/15 Javascript
[56:47]Ti4 循环赛第三日 iG vs Liquid
2014/07/12 DOTA
python实现图书借阅系统
2019/02/20 Python
python tkinter实现彩球碰撞屏保
2019/07/30 Python
opencv 图像滤波(均值,方框,高斯,中值)
2020/07/08 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
2020/07/28 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
python 合并多个excel中同名的sheet
2021/01/22 Python
HTML5 Video/Audio播放本地文件示例介绍
2013/11/18 HTML / CSS
TripAdvisor印尼站:全球领先的旅游网站
2018/03/15 全球购物
凯普林包包西班牙官网:Kipling西班牙
2019/04/12 全球购物
PHP面试题-$message和$$message的区别
2015/12/08 面试题
什么造成了Java里面的异常
2016/04/24 面试题
前台文员岗位职责及工作流程
2013/11/19 职场文书
车贷收入证明范本
2014/01/09 职场文书
大学军训感想
2014/02/12 职场文书
高中军训感想300字
2014/03/04 职场文书
室内趣味活动方案
2014/08/24 职场文书
售后服务质量承诺书
2015/04/29 职场文书
2015年妇产科工作总结
2015/05/18 职场文书
Python上下文管理器Content Manager
2021/06/26 Python