现在的位置: 首页 -> PHP学习 -> PHP源码 -> PHP批量抓取远程网页图片并存到本地实现方法和源码

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

2013-07-25 19:11评论数 2 ⁄ 被浏览 17200 views+

做为一个仿站工作者,当遇到网站有版权时甚至加密的时候,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/>";

}


?>


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


 

文章出自:https://www.daixiaorui.com/read/8.html 本站所有文章,除注明出处外皆为原创,转载请注明本文地址,版权所有。

目前有 2 条评论  @我要评论

  1. 2楼李清波博客 : 2015-09-23 11:43:48 评论说: @回复

    我试过了,不能用啊。

    回复留言标识 IT共享导航 回复 李清波博客: 我可以教你怎么用,需要修改一下

    2016-10-06 21:07:29  @回复

  2. 1楼李清波博客 : 2015-09-23 11:32:35 评论说: @回复

    这个方法真的可以吗

您的每一个评论都是对我的一份支持

 博客二维码

昵称 *

邮箱 *