设为首页收藏本站

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 140|回复: 0

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

[复制链接]
发表于 2013-11-1 14:53:08 | 显示全部楼层 |阅读模式
下面的一个源码,php远程抓取图片小程序。可以读取css文件并抓取css代码中的背景图片,下面这段代码也是针对抓取css中图片而编写的。
  1. <?php


  2. header("Content-Type: text/html; charset=utf-8");

  3.         error_reporting(E_ERROR|E_WARNING);


  4. //全局配置

  5. $fromFile = "aaa.css";    //要抓取的文件

  6. $savePath = "ttttttttt";   //保存路径

  7. $fromDomain = "http://www.xxx.com/"; //要抓取的域名


  8. //读取css样式并且分离出所有image的url

  9. $str = file_get_contents($fromFile);

  10. $strArr = explode("url(",$str);

  11. $i = 0;

  12. foreach($strArr as $val){

  13. $val1 = explode(")",$val);

  14. if(strpos($val1[0],'jpg')||strpos($val1[0],'png')||strpos($val1[0],'gif'))

  15. $imgUrl[$i++] = $val1[0];

  16. }

  17.         //PS:上面可以用正则的,但是我觉得这样也不错


  18. //开始抓取

  19. foreach($imgUrl as $url){

  20. if($url=="") continue;

  21. $filename = $savePath.$url;

  22. $url = $fromDomain.$url;

  23. getImage($url,$filename);

  24. }


  25. function getImage($url,$filename){

  26. ob_start();

  27. $context = stream_context_create(

  28.            array (

  29.         'http' => array (

  30.         'follow_location' => false // don't follow redirects

  31.         )

  32.         )

  33. );

  34. //请确保php.ini中的fopen wrappers已经激活

  35. readfile( $url,false,$context);

  36. $img = ob_get_contents();

  37.                 ob_end_clean();

  38. $fp2 = @fopen($filename,"a");

  39. fwrite($fp2,$img);

  40. fclose($fp2);

  41. echo $filename." ok √<br/>";

  42. }


  43. ?>


复制代码

没有意外的话,你会发现,你指定的文件夹下面已经满满的都是图片了。
代潇瑞博客
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|BC Morning Website ( Best Deal Inc. 001 )  

GMT-8, 2025-12-12 22:29 , Processed in 0.012985 second(s), 16 queries .

Supported by Best Deal Online X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表