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

做为一个仿站工作者,当遇到网站有版权时甚至加密的时候,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源码批量抓取远程网页图片并保存到本地的实现方法,希望大家喜欢。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索批量抓取网页
短信轰炸接口批量抓取、网页源代码抓取工具、网站源码抓取工具、抓取访客手机号源码、网站抓取访客qq源代码,以便于您获取更多的相关知识。

时间: 2024-10-02 15:58:59

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

PHP 下载远程网页图片并且保存在本地实例

fopen函数实例 ob_start : 打开输出缓冲 readfile : 读入一个文件并写入到输出缓冲 返回从文件中读入的字节数.如果出错返回 FALSE 并且除非是以 @readfile() 形式调用,否则会显示错误信息. ob_get_contents : Return the contents of the output buffer(返回输出缓冲的内容) This will return the contents of the output buffer without cleari

php 采集远程网页图片并保存到本地

ob_start : 打开输出缓冲 readfile : 读入一个文件并写入到输出缓冲 返回从文件中读入的字节数.如果出错返回 FALSE 并且除非是以 @readfile() 形式调用,否则会显示错误信息. ob_end_clean() : Clean (erase) the output buffer and turn off output buffering(清除输出缓冲) <?php教程 //URL是远程的完整图片地址,不能为空, $filename 是另存为的图片名字 //默认把图片放

php采集远程网页图片并保存到本地代码

ob_start : 打开输出缓冲 readfile : 读入一个文件并写入到输出缓冲 返回从文件中读入的字节数.如果出错返回 FALSE 并且除非是以 @readfile() 形式调用,否则会显示错误信息. ob_end_clean() : Clean (erase) the output buffer and turn off output buffering(清除输出缓冲) <?php教程 //URL是远程的完整图片地址,不能为空, $filename 是另存为的图片名字 //默认把图片放

XMLHTTP批量抓取远程资料

xml 可以在此基础上结合正则表达式做成更好的效果,希望大家能分享一下Xmlhttp的session共享技术 <html> <head> <title>AUTOGET</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body bgcolor="#FFFFFF

XMLHTTP批量抓取远程资料_小偷/采集

可以在此基础上结合正则表达式做成更好的效果,希望大家能分享一下Xmlhttp的session共享技术  <html>  <head>  <title>AUTOGET</title>  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">  </head>  <body bgcolor="#FFFF

分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)_php实例

复制代码 代码如下: <?php/** * HOST: www.icbase.com *///set_time_limit(0);// base functionfunction curl_get($url, $data = array(), $header = array(), $timeout = 15, $port = 80, $reffer = '', $proxy = ''){ $ch = curl_init(); if (!empty($data)) { $data = is_arr

PHP抓取、分析国内视频网站的视频信息工具类_php实例

使用方法: 复制代码 代码如下: require_once "VideoUrlParser.class.php";$url = "http://v.youku.com/v_show/id_XMjkwMzc0Njg4.html";$info = VedioUrlParser::parse($url);echo $info; 说明:调用该工具php文件VideoUrlParser.class.php,$url变量后面的字符串为视频页的地址,然后使用echo输出变量$in

php使用curl简单抓取远程url的方法

 这篇文章主要介绍了php使用curl简单抓取远程url的方法,涉及php操作curl的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php使用curl抓取远程url的方法.分享给大家供大家参考.具体如下: cURL是一个非常有用的php库,可以用来连接不通类型的服务器和协议,下面是一个最基本的范例用来抓取远程网页 ? 1 2 3 4 5 6 <?php $c = curl_init('http://www.w3mentor.com/robots.txt'); curl

php使用curl简单抓取远程url的方法_php技巧

本文实例讲述了php使用curl抓取远程url的方法.分享给大家供大家参考.具体如下: cURL是一个非常有用的php库,可以用来连接不通类型的服务器和协议,下面是一个最基本的范例用来抓取远程网页 <?php $c = curl_init('http://www.w3mentor.com/robots.txt'); curl_setopt($c, CURLOPT_RETURNTRANSFER, true); $page = curl_exec($c); curl_close($c); ?> 希