Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Recommended Posts

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

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 файла, кодировка, бом-символы. Спарсил список по новому, через запятую, все работает.

  • +1 1
Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.