随着互联网内容的丰富,网络上涌现了大量优质的图片资源。很多场景下,我们需要从指定网站批量采集图片,比如风景照、艺术作品等。本文将带你了解如何利用 PHP 编写脚本,实现自动采集网站中的高清图片。
采集前,首先要对目标网站的结构进行分析。通常,图片会以 img 标签形式嵌入页面。通过观察网页源码,我们能够找到图片地址的规律,进而提取出目标图片的链接。
明确采集思路后,我们使用 PHP 的 curl 功能抓取网页源码,再通过正则表达式匹配图片链接,最后循环下载保存图片。
// 设置 curl
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
// 获取 HTML 代码
$html = curl_exec($ch);
curl_close($ch);
// 定义正则表达式
$pattern = '/<img[^>]+src=["\']?([^"\'>]+)["\']?[^>]*>/is';
// 查找图片地址
preg_match_all($pattern, $html, $matches);
$matches = $matches[1];
// 去重
$matches = array_unique($matches);
// 定义图片保存路径
$path = "./images/";
if(!file_exists($path)){
mkdir($path);
}
// 下载图片
foreach($matches as $key => $value){
// 获取图片名
$imgname = basename($value);
// 打开文件
$fp = fopen($path . $imgname, 'w');
// 设置 curl
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $value);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
// 下载图片
curl_exec($ch);
curl_close($ch);
// 关闭文件
fclose($fp);
}
通过上述方法,您可以实现简单高效的网页图片采集功能。根据实际需求,可对代码进行调整优化。采集过程中如遇到图片无法下载等问题,可针对网络环境和权限等因素进行排查和调试。希望这篇教程能帮助您轻松掌握 PHP 采集图片的技巧。