用php写一个功能获取httpsapisenlscnmeinv这个目录下全部的子目录里的jpg图片并下载到本地服务器
以下是使用PHP获取https://api.senls.cn/meinv/目录下所有子目录中的jpg图片并下载到本地服务器的实现方法:
<?php
// 目标目录
$base_url = 'https://api.senls.cn/meinv/';
// 获取目标目录下的所有子目录
$sub_dirs = get_subdirs($base_url);
// 循环遍历所有子目录并下载其中的jpg图片
foreach ($sub_dirs as $sub_dir) {
download_jpg_images($base_url . $sub_dir);
}
/**
* 获取目标目录下的所有子目录
* @param string $url 目标目录的url
* @return array 所有子目录的url
*/
function get_subdirs($url) {
$html = file_get_contents($url);
$dom = new DOMDocument();
@$dom->loadHTML($html);
$links = $dom->getElementsByTagName('a');
$sub_dirs = array();
foreach ($links as $link) {
$href = $link->getAttribute('href');
if ($href !== '../' && strpos($href, '.') === false) {
$sub_dirs[] = $href;
}
}
return $sub_dirs;
}
/**
* 下载目标目录下的所有jpg图片
* @param string $url 目标目录的url
*/
function download_jpg_images($url) {
$html = file_get_contents($url);
$dom = new DOMDocument();
@$dom->loadHTML($html);
$imgs = $dom->getElementsByTagName('img');
foreach ($imgs as $img) {
$src = $img->getAttribute('src');
if (strpos($src, '.jpg') !== false) {
$filename = basename($src);
$img_url = $url . $src;
$img_content = file_get_contents($img_url);
file_put_contents($filename, $img_content);
}
}
}
?>
这个代码会先获取目标目录下的所有子目录,然后循环遍历每个子目录并下载其中的jpg图片。其中,get_subdirs函数会使用file_get_contents函数获取目标目录的HTML内容,然后使用PHP的DOMDocument类解析HTML内容并获取所有的子目录。download_jpg_images函数则会使用类似的方法获取子目录中的所有jpg图片,并使用file_put_contents函数将图片保存到本地服务器。需要注意的是,这个代码中并没有对图片的下载进行任何错误处理,如果下载过程中发生错误可能会导致程序崩溃。如果需要更加健壮的代码,可以在下载图片的过程中添加错误处理机制。
原文地址: https://www.cveoy.top/t/topic/b5Zi 著作权归作者所有。请勿转载和采集!