我想从网址下载大约200张图片。例如:获取www.web.com/images/001.png并下载,获取www.web.com/images/002.png并下载并完成200.png。
我已阅读Grab/download images from multiple pages using php preg_match_all & cURL但我不知道如何修改PHP来做那件事。
如果你能帮助我,我将非常感激。非常感谢你
答案 0 :(得分:1)
最简单的方法是创建一个for循环,从1到200计数,然后对于每个计数,它会对图像进行请求并将其保存到磁盘(我假设您要保存图像到你的磁盘)。 可以在底部找到工作示例。
让我们从设置一些变量开始:
$baseUrl = 'http://www.web.com/';
$localDirectory = 'downloaded_images/';
$maxImageNumber = 200;
第一个变量$baseUrl
定义了图像的加载位置。第二个定义了保存图像的本地目录。 运行代码之前请确保此目录存在,因为它不会自动生成。最后一个变量$maxImageNumber
存储了最大的图像编号,我们需要for循环。
设置变量后,我们可以编写for循环。由分号;
分隔,括号中有三个部分。第一个是数字的起点,我们将向上计数。第二个确保我们不会超过我们的限制,最后一个只是使用++
简写表示该数字将被计算在内。
for($imageNumber = 1; $imageNumber <= $maxImageNumber; $imageNumber++) {
// code goes here
}
在这个for循环中,我们现在可以生成我们的文件名并将图像下载/保存到磁盘。第一行使用函数str_pad()
将前导0添加到图像文件中(就像在您的示例中一样),然后将扩展名.png
添加到名称中。这允许我们重复使用文件名进行加载和保存。第二行通过组合基础和图像文件名来加载具有函数file_get_contents()
的图像。在最后一行中,我们使用file_put_contents()
将我们之前加载的$fileData
保存到磁盘(使用本地目录和图像文件名)。
$imageFileName = str_pad($imageNumber, 3, '0', STR_PAD_LEFT) . '.png';
$fileData = file_get_contents($baseUrl . $imageFileName);
file_put_contents($localDirectory . $imageFileName, $fileData);
完整代码应如下所示:
<?php
$baseUrl = 'http://www.web.com/images/';
$localDirectory = 'downloaded_images/';
$maxImageNumber = 10;
for($imageNumber = 1; $imageNumber <= $maxImageNumber; $imageNumber++) {
$imageFileName = str_pad($imageNumber, 3, '0', STR_PAD_LEFT) . '.png';
$fileData = file_get_contents($baseUrl . $imageFileName);
file_put_contents($localDirectory . $imageFileName, $fileData);
}
万一这一切都不起作用,你可以尝试一些事情
$localDirectory
是否存在且可写。file_get_contents()
不起作用,您可以use curl instead 答案 1 :(得分:0)
非常感谢你,但想象一下pics在www.web.com/image_0001_big.png和www.web.com/image_002_big.png等等......(最后一次是web.com/image_0200_big.png)
这不起作用(我不知道为什么)
accoreconsole.exe
感谢。你真了不起!谢谢您的帮助!我正在学习PHP,而我还是初学者:(
我的错误:
警告:str_pad()最多需要4个参数,在第9行的C:\ xampp \ htdocs \ auto.php中给出5个
警告:file_get_contents(http://www.web.com/images/.png):无法打开流:HTTP请求失败!在第10行的C:\ xampp \ htdocs \ auto.php中找不到HTTP / 1.1 404
答案 2 :(得分:0)
我找到了一个半解决方案:_
<?php
$baseUrl = 'http://web.com/images';
$localDirectory = 'downloaded_images/';
$maxImageNumber = 400;
$input='image0';
$input2='big';
$extension ='.png';
for($imageNumber = 100; $imageNumber <= $maxImageNumber; $imageNumber++) {
$fileData = file_get_contents($baseUrl . $input . $imageNumber . $input2 . $extension);
file_put_contents($localDirectory . $imageNumber, $fileData);
}
?>
问题是...... 0001 0009 0010 !!我想告诉php&#34;嘿,总是4位&#34;