当前位置: 首页> 最新文章列表> 如何使用PHP抓取和下载不带后缀的图片

如何使用PHP抓取和下载不带后缀的图片

gitbox 2025-06-30

简介

使用PHP抓取不带后缀的图片是一项具有挑战性的任务,但通过合适的技术,可以轻松完成。本文将介绍如何使用PHP编写一个脚本来抓取并下载页面中不带后缀的图片。

创建PHP脚本

首先,我们需要创建一个PHP脚本来实现抓取和下载图片的功能。使用cURL库可以发送HTTP请求,而正则表达式用于匹配不带后缀的图片链接。

创建一个名为"grab_images.php"的PHP文件,并在文件中添加以下代码:


// 设置要抓取的站点URL
$url = "https://example.com";
// 创建cURL句柄
$ch = curl_init();
// 设置cURL选项
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 执行cURL请求
$response = curl_exec($ch);
// 关闭cURL句柄
curl_close($ch);
// 初始化一个数组来存储找到的图片链接
$images = array();
// 使用正则表达式找到不带后缀的图片链接
preg_match_all('/src="([^"]+)"[^>]*>/', $response, $matches);
// 遍历找到的匹配结果
foreach ($matches[1] as $match) {
    // 如果链接不包含文件后缀,则将其添加到数组中
    if (!pathinfo($match, PATHINFO_EXTENSION)) {
        $images[] = $match;
    }
}
// 输出找到的图片链接
foreach ($images as $image) {
    echo $image . "\n";
}

解析页面

上面的代码会向指定的URL发送HTTP请求并返回页面内容。然后,我们使用正则表达式从HTML中提取图片链接,并通过判断链接中是否含有后缀来筛选出不带后缀的图片。

接下来,我们需要在脚本中添加代码来下载这些图片:


// 遍历找到的图片链接
foreach ($images as $image) {
    // 生成图片文件名
    $filename = basename($image);
    // 下载图片
    file_put_contents($filename, file_get_contents($image));
}

运行脚本

要执行PHP脚本,请在命令行中运行以下命令:

php grab_images.php

脚本会抓取指定URL的页面,提取不带后缀的图片链接,并将其下载保存为本地文件。

请确保脚本所在的文件夹具有写入权限,以便保存下载的图片。

总结

通过本文中的PHP脚本示例,我们展示了如何抓取不带后缀的图片。使用cURL库发送HTTP请求,并利用正则表达式提取图片链接,最后通过PHP函数下载并保存图片。这个脚本适用于自动化任务或个性化功能。