栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

php远程抓取网站图片并保存的代码

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

php远程抓取网站图片并保存的代码

save_path=$save_path;          $this->img_size=$img_size;      }                      public function recursive_download_images($capture_url)      {          if (!in_array($capture_url,self::$a_url_arr))   //没抓取过          {                                       self::$a_url_arr[]=$capture_url;   //计入静态数组          } else   //抓取过,直接退出函数          {              return;          }                            $this->download_current_page_images($capture_url);  //下载当前页面的所有图片                    //用@屏蔽掉因为抓取地址无法读取导致的warning错误          $content=@file_get_contents($capture_url);                     //匹配a标签href属性中?之前部分的正则          $a_pattern = "|]+href=['" ]?([^ '"?]+)['" >]|U";             preg_match_all($a_pattern, $content, $a_out, 例子,php抓取网站数据的代码。

class download_image
{
public $save_path; //抓取图片的保存地址
//抓取图片的大小限制(单位:字节) 只抓比size比这个限制大的图片
public $img_size=0;
//定义一个静态数组,用于记录曾经抓取过的的超链接地址,避免重复抓取
public static $a_url_arr=array();

public function __construct($save_path,$img_size)
{
$this->save_path=$save_path;
$this->img_size=$img_size;
}

public function recursive_download_images($capture_url)
{
if (!in_array($capture_url,self::$a_url_arr)) //没抓取过
{
self::$a_url_arr[]=$capture_url; //计入静态数组
} else //抓取过,直接退出函数
{
return;
}
$this->download_current_page_images($capture_url); //下载当前页面的所有图片
//用@屏蔽掉因为抓取地址无法读取导致的warning错误
$content=@file_get_contents($capture_url);
//匹配a标签href属性中?之前部分的正则
$a_pattern = "|]+href=['" ]?([^ '"?]+)['" >]|U";
preg_match_all($a_pattern, $content, $a_out, PREG_SET_ORDER);
$tmp_arr=array(); //定义一个数组,用于存放当前循环下抓取图片的超链接地址
foreach ($a_out as $k => $v)
{

if ( $v[1] && !in_array($v[1],self::$a_url_arr) &&!in_array($v[1],array('#','/',$capture_url) ) )
{
$tmp_arr[]=$v[1];
}
}
foreach ($tmp_arr as $k => $v)
{
//超链接路径地址
if ( strpos($v, 'http://')!==false ) //如果url包含http://,可以直接访问
{
$a_url = $v;
}else //否则证明是相对地址, 需要重新拼凑超链接的访问地址
{
$domain_url = substr($capture_url, 0,strpos($capture_url, '/',8)+1);
$a_url=$domain_url.$v;
}
$this->recursive_download_images($a_url);
}
}

public function download_current_page_images($capture_url)
{
$content=@file_get_contents($capture_url); //屏蔽warning错误
//匹配img标签src属性中?之前部分的正则
$img_pattern = "|]+src=['" ]?([^ '"?]+)['" >]|U";
preg_match_all($img_pattern, $content, $img_out, PREG_SET_ORDER);
$photo_num = count($img_out);
//匹配到的图片数量
echo '
'.$capture_url . "共找到 " . $photo_num . " 张图片
";
foreach ($img_out as $k => $v)
{
$this->save_one_img($capture_url,$v[1]);
}
}

public function save_one_img($capture_url,$img_url)
{
//图片路径地址
if ( strpos($img_url, 'http://')!==false )
{
// $img_url = $img_url;
}else
{
$domain_url = substr($capture_url, 0,strpos($capture_url, '/',8)+1);
$img_url=$domain_url.$img_url;
}
$pathinfo = pathinfo($img_url); //获取图片路径信息
$pic_name=$pathinfo['basename']; //获取图片的名字
if (file_exists($this->save_path.$pic_name)) //如果图片存在,证明已经被抓取过,退出函数
{
echo $img_url . '该图片已经抓取过!
';
return;
}
//将图片内容读入一个字符串
$img_data = @file_get_contents($img_url); //屏蔽掉因为图片地址无法读取导致的warning错误
if ( strlen($img_data) > $this->img_size ) //下载size比限制大的图片
{
$img_size = file_put_contents($this->save_path . $pic_name, $img_data);
if ($img_size)
{
echo $img_url . '图片保存成功!
';
} else
{
echo $img_url . '图片保存失败!
';
}
} else
{
echo $img_url . '图片读取失败!
';
}
}
} // END
set_time_limit(120); //设置脚本的最大执行时间 根据情况设置
$download_img=new download_image('E:/images/',0); //实例化下载图片对象
$download_img->recursive_download_images('http://bbs.it-home.org/'); //递归抓取图片方法
//$download_img->download_current_page_images($_POST['capture_url']); //只抓取当前页面图片方法
?>

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/229469.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号