Как скачать только нужные изображения на свой сервер через

Записи и примечания на тему HTML, CSS, PHP, JScript

Как скачать только нужные изображения на свой сервер через

» » Сообщение:

Привет вебмастера.
Помогите допилить php скрипт.

У меня есть скрипт, который скачивает все изображения со страницы на свой сервер и сам создаёт папки.
Но мне не нужны абсолютно все изображения с этой страницы, мне нужно перекачать только изображения с доменом dl.dropboxusercontent.com
Как можно сделать так? Чтобы он скачивал со страницы только эти картинки, а не абсолютно все.

Сразу скажу, что я пытаюсь скачать со своего же сайта, просто есть подозрение что dropbox скоро загнётся, и я хочу перекачать все изображения на свой серв, с сохранением исходного пути, чтобы когда дропбокс загнётся я смог просто массово изменить домен на свой, и на этом всё.

Вот сам скрипт.

php Код: Выделить всё Развернуть
<?php
get_img_in_dir
("http://мойсайт.ru/load/2-1-0-44""");
 
function 
get_img_in_dir($url$dir) {
 
    
$host parse_url($urlPHP_URL_HOST); // Нахожу хост в урле
 
    /* Для начала скачиваю код страницы... */
    
$curl curl_init(); // Инициализирую CURL
    
curl_setopt($curlCURLOPT_HEADER0); // Отключаю в выводе header-ы
    
curl_setopt($curlCURLOPT_RETURNTRANSFER1); //Возвратить данные а не показать в браузере
    
curl_setopt($curlCURLOPT_FOLLOWLOCATION1);
    
curl_setopt($curlCURLOPT_URL$url); // Указываю URL
    
$code curl_exec($curl); // Получаю данные
    
curl_close($curl); // Закрываю CURL сессию
     
    // Код скачан и сидит в переменной $code
    // Теперь можно через регулярные выражения
    // вынимать из него ссылки
    
$arrayImg = array(); // Массив для ссылок изображений
    
$regex '/<\s*img[^>]*src=[\"|\'](.*?)[\"|\'][^>]*\/*>/i';
    
preg_match_all($regex$code$arrayImg);
 
    
// Теперь в $arrayImg[1] сидит массив url-ами изображений
 
    // Исправляю все ссылки на абсолютные и скачиваю их...
    
for($i=0$i<count($arrayImg[1]); $i++) {
         
        
$path parse_url($arrayImg[1][$i], PHP_URL_PATH); // Нахожу в ссылке путь
        
$absolute_url 'http://dl.dropboxusercontent.com'.$path// Создаю абсолютный путь
    
        
mkdir(".".$path0777true);

        
// Вот так я нахожу имя файла....
        
$name explode("/"$absolute_url);
        
$name $name[count($name)-1];
 
        
// Скачиваю изображение
        
if (!copy($absolute_url$dir.'/'.$name)) {
            echo 
'<p style="color:red;">Error copy - '.$name.'</p>';
            }      
    }
}
?>




Re: Как скачать только нужные изображения на свой сервер чер

Admin » » Сообщение:

Мыдаров Рустам писал(а) › 09 май 2017, 17:29:Не знаешь почему так сохраняется?

а какой вид имеет ссылка на картинку?
кроме того, у вас вызов:

Код: Выделить всё Развернуть
get_img_in_dir("http://мойсайт.ru/load/2-1-0-44", "");

переменная $dir - пустая..
куда сохранится файл:

plain Код: Выделить всё Развернуть
if (!copy($absolute_url, $dir.'/'.$name)) {

?
Попробуйте подставить вместо $dir - $path..
А вообще, это делается локально, а потом заливается на сервер.
Так и ошибки отлавливать проще..


Re: Как скачать только нужные изображения на свой сервер чер

Мыдаров Рустам » » Сообщение:

Admin писал(а) › 09 май 2017, 18:32:а какой вид имеет ссылка на картинку?

Ссылки имеют вот такой вид

Код: Выделить всё Развернуть
https://dl.dropboxusercontent.com/s/umnw3dtdxxeor4o/1.png
Admin писал(а) › 09 май 2017, 18:32:Попробуйте подставить вместо $dir - $path..

Попробовал, получается тоже самое.

Я думаю ошибка в этом mkdir(".".$path, 0777, true); //$path заканчивается именем файла







Похожие темыКомментарии ПросмотрыПоследнее сообщение
91007Re: Как убрать поля: Значение "...
Сообщение от: Diselstrong
094Как защитить свой мозг от ошибок? Л...
Сообщение от: Admin