Показать сообщение отдельно
Старый 23.12.2015, 02:21   #26
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,371
Написано 2,477 полезных сообщений
(для 6,865 пользователей)
Ответ: Как загрузить все изображения с веб-сайта?

Сообщение от Program23 Посмотреть сообщение
То, что в консоли можно писать. Я знаю.
А как мне получить те же ссылки, если не из под консоли?
1) То есть сначала мне нужно будет как-то загрузить html.
2) Потом его запарсить с помощью твоих способов.
3) Вывести результат.

Первый пункт вызывает у меня проблемы. Я уже весь stackoverflow перерыл
Открытие веб страницы
$ch curl_init();
curl_setopt($chCURLOPT_URL'http://boolean.name/');
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);
$html curl_exec($ch);
curl_close($ch); 
* поменять boolean.name на твою url

Скачивание картинки
$file fopen('moi_golie_fotki.jpg',"wb");// Тут путь куда сохранять картинку
$ch curl_init();
curl_setopt($chCURLOPT_URL'http://forum.boolean.name/image.php?u=4572&dateline=1368302793'); // url до твоей авы
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);
curl_setopt($chCURLOPT_FILE$file); 
$html curl_exec($ch);
curl_close($ch); 
Комборешение, поиск всех картинок на странице и их сохранение:
<?php

error_reporting
(E_ALL);
ini_set('display_errors''On');
ini_set('display_startup_errors''On');
ini_set('error_reporting''-1');
ini_set('log_errors''On');

set_time_limit(0); // Чтоб скрипт не вышибло по таймауту


include 'phpQuery-onefile.php';

$ch curl_init();
curl_setopt($chCURLOPT_URL'http://forum.boolean.name/showthread.php?t=20132');
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);
$html curl_exec($ch);
curl_close($ch);

$doc phpQuery::newDocument($html);
$stats = array();

foreach (
$doc['img'] as $img) { // 'img' - селектор элемента
    
$src pq($img)->attr('src');
    
// фик относительных путей типа /images/photo.png
    
$url = (mb_strpos($src'http') !== 0) ? 'http://forum.boolean.name/' ltrim($src'/.') : $src;

    
$filename "./grabbed/" uniqid(); // Временное имя файла в папке "grabbed"
    // Скачиваем каждую картинку в папку "grabbed"
    
$file fopen($filename"wb"); // Тут путь куда сохранять картинку
    
$ch curl_init();
    
curl_setopt($chCURLOPT_URL$url); // url до твоей авы
    
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
    
curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);
    
curl_setopt($chCURLOPT_FILE$file);
    
curl_exec($ch);
    

    
$mime curl_getinfo($chCURLINFO_CONTENT_TYPE); // Получаем mime типа скачаной херни
    
    
curl_close($ch);

    
$mime2ext = array(// Словарик для волшебных превращений mime в расширение
        
'image/jpeg' => 'jpeg',
        
'image/png' => 'png',
        
'image/gif' => 'gif'
    
);

    
// Переименовываем файл так чтоб у него появилось расширение, если хз что за файл будет .wtf
    
rename($filename$filename '.' . (isset($mime2ext[$mime]) ? $mime2ext[$mime] : '.wtf'));
}
Скачивает все картинки из элемнтов img со страницы "http://forum.boolean.name/showthread.php?t=20132" и сохраняет их в папку ./grabbed/ с уникальными именами.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti

Последний раз редактировалось Randomize, 23.12.2015 в 04:15. Причина: Забыл расширение для image/gif и пару ошибок пофиксил
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
Program23 (23.12.2015), St_AnGer (23.12.2015)