Перейти к содержанию
bogdan281989

Парсинг изображений с помощью curl

Рекомендуемые сообщения

Встала зада сделать парсер небольшой, который бы со списка ссылок прямых на картинки грузил их на хостинг в папку. набросал приблизительно такую функцию небольшую, но почему-то сохраняет только последнюю картинку со списка. Что я сделал не так? Прошу помочь, если возможно. На входе простой массив, в нем ничего лишнего нет.

public function savePic ($pictures) {

    foreach($pictures as $url) {
        $ch = curl_init(); // инициализация
        $path_parts = pathinfo($url); //получаем название файла из URL
        $fp = fopen(DIR_IMAGE .'tm/'.$path_parts['basename'], 'w+');

        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_FILE, $fp);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_exec($ch);
        curl_close($ch);
        fclose($fp);

    }   

}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Выполнил данный код в виде отдельного скрипта, и он отработал нормально.

Значит дело НЕ в этом участке. Может в массив попадает что-то не то?...

 

<?php

$pictures = array (
	'...',
	'...',
);

foreach($pictures as $url) {
	$ch = curl_init(); // инициализация
	$path_parts = pathinfo($url); //получаем название файла из URL
	$fp = fopen('curl/'.$path_parts['basename'], 'w+');

	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_FILE, $fp);
	curl_setopt($ch, CURLOPT_HEADER, 0);
	curl_exec($ch);
	curl_close($ch);
	fclose($fp);
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сделать перебор "простого" массива, и при переборе каждого изображения - отдельно его подгружать в нужный каталог, например:

public function savePic($pictures) {
    foreach($pictures as $url) {
        $ch = curl_init(); // инициализация
        $path_parts = pathinfo($url); //получаем название файла из URL
        $fp = fopen(DIR_IMAGE .'tm/'.$path_parts['basename'], 'w+');
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_FILE, $fp);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_exec($ch);
        curl_close($ch);
        fclose($fp);
    }
}

$images = array('https://site.com/image-one.jpeg','https://site.com/image-two.jpeg','https://site.com/image-three.jpeg');
	foreach($images as $image) {
		$this->savePic($image);
	}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 минуты назад, auditor сказал:

сделать перебор "простого" массива, и при переборе каждого изображения - отдельно его подгружать в нужный каталог, например:


public function savePic($pictures) {
    foreach($pictures as $url) {
        $ch = curl_init(); // инициализация
        $path_parts = pathinfo($url); //получаем название файла из URL
        $fp = fopen(DIR_IMAGE .'tm/'.$path_parts['basename'], 'w+');
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_FILE, $fp);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_exec($ch);
        curl_close($ch);
        fclose($fp);
    }
}

$images = array('https://site.com/image-one.jpeg','https://site.com/image-two.jpeg','https://site.com/image-three.jpeg');
	foreach($images as $image) {
		$this->savePic($image);
	}

 

Понял, ок, спасибо, буду пробовать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, SergeTkach сказал:

Выполнил данный код в виде отдельного скрипта, и он отработал нормально.

Значит дело НЕ в этом участке. Может в массив попадает что-то не то?...

Вы были правы, уже разобрался, там список урл с простого txt файла, кодировка, бом-символы. Спарсил список по новому, через запятую, все работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Вы комментируете как гость. Если у вас есть аккаунт, пожалуйста, войдите
Ответить в этой теме...

×   Вы вставили контент с форматированием.   Удалить форматирование

  Разрешено использовать не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.