分享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 相关文章推荐
Dedecms常用函数解析
Feb 01 PHP
php开启安全模式后禁用的函数集合
Jun 26 PHP
php5.5中类级别的常量使用介绍
Oct 02 PHP
php实现执行某一操作时弹出确认、取消对话框
Dec 30 PHP
php自定义函数截取汉字长度
May 15 PHP
php微信支付之APP支付方法
Mar 04 PHP
php安装ssh2扩展的方法【Linux平台】
Jul 20 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
Nov 10 PHP
yii2多图上传组件的使用教程
May 10 PHP
Laravel使用RabbitMQ的方法示例
Jun 18 PHP
php的命名空间与自动加载实现方法
Aug 25 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
Apr 06 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
yii框架中的Url生产问题小结
2012/01/16 PHP
PHP中time(),date(),mktime()区别介绍
2013/09/28 PHP
PHP根据传来的16进制颜色代码自动改变背景颜色
2014/06/13 PHP
php操作(删除,提取,增加)zip文件方法详解
2015/03/12 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
Javascript模板技术
2007/04/27 Javascript
关于jquery input textare 事件绑定及用法学习
2013/04/03 Javascript
javascript禁用键盘功能键让右击及其他键无效
2013/10/09 Javascript
不提示直接关闭网页窗口的JS示例代码
2013/12/17 Javascript
js弹出对话框方式小结
2015/11/17 Javascript
一次$.getJSON不执行的简单记录
2016/07/19 Javascript
AngularJS应用开发思维之依赖注入3
2016/08/19 Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
2018/03/01 Javascript
js实现二级菜单点击显示当前内容效果
2018/04/28 Javascript
Node.js中,在cmd界面,进入退出Node.js运行环境的方法
2018/05/12 Javascript
AngularJS实现与后台服务器进行交互的示例讲解
2018/08/13 Javascript
JavaScript享元模式原理与用法实例详解
2020/03/09 Javascript
JS监听组合按键思路及实现过程
2020/04/17 Javascript
微信小程序实现简单购物车功能
2020/12/30 Javascript
python getopt 参数处理小示例
2009/06/09 Python
Python抓取Discuz!用户名脚本代码
2013/12/30 Python
python对html代码进行escape编码的方法
2015/05/04 Python
python opencv实现任意角度的透视变换实例代码
2018/01/12 Python
基于pandas数据样本行列选取的方法
2018/04/20 Python
在windows下使用python进行串口通讯的方法
2019/07/02 Python
python中利用numpy.array()实现俩个数值列表的对应相加方法
2019/08/26 Python
简单了解python中的f.b.u.r函数
2019/11/02 Python
python进程的状态、创建及使用方法详解
2019/12/06 Python
Python3爬虫中pyspider的安装步骤
2020/07/29 Python
如何利用Python写个坦克大战
2020/11/18 Python
成人毕业生自我鉴定
2013/10/18 职场文书
批评与自我批评范文
2014/10/15 职场文书
黑白记忆观后感
2015/06/18 职场文书
先进个人事迹材料(2016推荐版)
2016/03/01 职场文书
2016年安全月活动总结
2016/04/06 职场文书
浅谈JavaScript浅拷贝和深拷贝
2021/11/07 Javascript