我想從URL下載約200張圖像。例如:抓取www.web.com/images/001.png並下載,抓取www.web.com/images/002.png並下載並以200.png完成。如何從各種URL(相同路徑)下載圖像
我讀過Grab/download images from multiple pages using php preg_match_all & cURL但我不知道如何修改PHP來做這件事。
如果你能幫助我,我將非常感激。非常感謝你
我想從URL下載約200張圖像。例如:抓取www.web.com/images/001.png並下載,抓取www.web.com/images/002.png並下載並以200.png完成。如何從各種URL(相同路徑)下載圖像
我讀過Grab/download images from multiple pages using php preg_match_all & cURL但我不知道如何修改PHP來做這件事。
如果你能幫助我,我將非常感激。非常感謝你
想到最簡單的方法,就是創建一個for循環,它從1到200計數,對於每一個計數,然後對圖像做出請求並將其保存到磁盤(I假設你想將圖像保存到你的磁盤)。 工作示例可以在底部找到。
讓我們開始設置一些變量:
$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太感謝你了,但可想而知,照片是在www.web。 com/image_0001_big.png和www.web.com/image_002_big.png等等...(最後將是web.com/image_0200_big.png)
這不起作用(我不知道爲什麼)
<?php
$baseUrl = 'http://www.web.com/images';
$localDirectory = 'downloaded_images/';
$maxImageNumber = 200;
$input='image_';
for($imageNumber = 001; $imageNumber <= $maxImageNumber; $imageNumber++) {
$imageFileName = str_pad($input, $imageNumber, 4, '_big', STR_PAD_LEFT) . '.png';
$fileData = file_get_contents($baseUrl . $imageFileName);
file_put_contents($localDirectory . $imageFileName, $fileData);
}
謝謝。你太棒了!謝謝您的幫助!我正在學習PHP和我是一個初學者但:(
我的錯誤:
警告:str_pad()預計最多4個參數,5 C中給出:\ XAMPP \ htdocs中\ auto.php上線9
警告:的file_get_contents(http://www.web.com/images/.png):未能打開流:HTTP請求失敗HTTP/1.1 404未找到在C:!\ XAMPP \ htdocs中\ auto.php第10行
我發現半解決方案:_
<?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「嘿,總是4位數」