Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Общие темы > Болтовня

Болтовня Разговоры на любые темы (думайте, о чем пишите)

Ответ
 
Опции темы
Старый 21.12.2015, 07:50   #16
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Как загрузить все изображения с веб-сайта?

Почему Teleport Pro не подошёл? Он умеет делать полную копию сайта - при создании проекта опция Duplicate file structure.
Что ещё нужно?

Скрин
(Offline)
 
Ответить с цитированием
Старый 21.12.2015, 09:25   #17
Program23
Бывалый
 
Аватар для Program23
 
Регистрация: 26.04.2009
Адрес: Россия, Уфа
Сообщений: 680
Написано 182 полезных сообщений
(для 406 пользователей)
Ответ: Как загрузить все изображения с веб-сайта?

Сообщение от Жека Посмотреть сообщение
Почему Teleport Pro не подошёл? Он умеет делать полную копию сайта - при создании проекта опция Duplicate file structure.
Что ещё нужно?

Скрин
1. Мне Offline Explorer больше нравится. Он выигрывает как по скорости, так и по возможностям.
2. Но почему-то обе эти программы не хотят вытаскивать все фотки товаров из каталога.
__________________
Фриланс:
Freelancer.com
Upwork
(Offline)
 
Ответить с цитированием
Старый 21.12.2015, 11:13   #18
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Как загрузить все изображения с веб-сайта?

2. Вероятно, потому что на них нет ссылки внутри html.
(Offline)
 
Ответить с цитированием
Старый 21.12.2015, 11:47   #19
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Как загрузить все изображения с веб-сайта?

Сообщение от Жека Посмотреть сообщение
2. Вероятно, потому что на них нет ссылки внутри html.
Может быть, она через время прогружается при помощи Ajax, топикстартер не проверял?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 22.12.2015, 07:51   #20
Program23
Бывалый
 
Аватар для Program23
 
Регистрация: 26.04.2009
Адрес: Россия, Уфа
Сообщений: 680
Написано 182 полезных сообщений
(для 406 пользователей)
Ответ: Как загрузить все изображения с веб-сайта?

Вдоволь поизвращался и с jquery, и с C#.
Проблему решить не смог.

Но нашел другое, еще более извращенное решение:
Решил заранее подготовить все ссылки страниц, а после сохранять их в формате .mht
Можно ли это реализовать через код? Например, в .txt файле находятся все ссылки (каждая с новой строчки). Программа должна читать оттуда ссылки и сохранять в формате .mht на жесткий диск.
__________________
Фриланс:
Freelancer.com
Upwork
(Offline)
 
Ответить с цитированием
Старый 22.12.2015, 10:08   #21
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Как загрузить все изображения с веб-сайта?

Да просто отследи какие ajax запросы делает сайт во время прокрутки/загрузки страниц. Сделай такие же запросы. Получишь все что необходимо.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
Program23 (23.12.2015), St_AnGer (22.12.2015)
Старый 22.12.2015, 13:39   #22
ingko
Мерцающий
 
Аватар для ingko
 
Регистрация: 18.04.2006
Сообщений: 5,838
Написано 1,519 полезных сообщений
(для 3,030 пользователей)
Ответ: Как загрузить все изображения с веб-сайта?

Я делал всё куда проще: Если картинки сайта отличались только цифрами (например, image01.jpg, image02.jpg, image03.jpg и т. д.), то я просто в блокноте создавал HTML-файлик, куда выводил все картинки разом и потом, через браузер "сохранял страничку автономно", тем самым скачивались все картинки, что нам и надо было.
__________________
Относись к человеку как к себе, иначе...
---
ДАННЫЕ:
qiwi 9150424059
Яндекс-деньги: 410012612648498
(Offline)
 
Ответить с цитированием
Старый 22.12.2015, 19:38   #23
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: Как загрузить все изображения с веб-сайта?

Сообщение от ingko Посмотреть сообщение
Я делал всё куда проще: Если картинки сайта отличались только цифрами (например, image01.jpg, image02.jpg, image03.jpg и т. д.), то я просто в блокноте создавал HTML-файлик, куда выводил все картинки разом и потом, через браузер "сохранял страничку автономно", тем самым скачивались все картинки, что нам и надо было.
Всего картинок должно быть примерно 100 тысяч.
Интересно сколько времени займет вбивание ссылок в блокнот.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Program23 (23.12.2015)
Старый 22.12.2015, 20:52   #24
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Как загрузить все изображения с веб-сайта?

И вот я в недоумении..
Сообщение от Program23 Посмотреть сообщение
Javascript, Php
Ты знаешь что такое отладчик в браузере? Прямо там в консоли можно написать:
$('img').each(function() {
    console.log($(this).attr('src'));
});
* - требует чтоб на сайте был jquery.
"Ванильный" способ:
var imgs = document.querySelectorAll('img');
for(var i =0, len = i < imgs.length; i < len; i++){
   console.log(imgs[i].src);
}
И получаешь все пути всех изображений на странице, вставленных через img.
В данном случае "img" это селектор. Усложнить чтоб показывал только требуемые ссылки элементарно.

Изич же
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 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
(Online)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Program23 (23.12.2015)
Старый 23.12.2015, 01:45   #25
Program23
Бывалый
 
Аватар для Program23
 
Регистрация: 26.04.2009
Адрес: Россия, Уфа
Сообщений: 680
Написано 182 полезных сообщений
(для 406 пользователей)
Ответ: Как загрузить все изображения с веб-сайта?

Сообщение от Randomize Посмотреть сообщение
И вот я в недоумении..


Ты знаешь что такое отладчик в браузере? Прямо там в консоли можно написать:
$('img').each(function() {
    console.log($(this).attr('src'));
});
* - требует чтоб на сайте был jquery.
"Ванильный" способ:
var imgs = document.querySelectorAll('img');
for(var i =0, len = i < imgs.length; i < len; i++){
   console.log(imgs[i].src);
}
И получаешь все пути всех изображений на странице, вставленных через img.
В данном случае "img" это селектор. Усложнить чтоб показывал только требуемые ссылки элементарно.

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

Первый пункт вызывает у меня проблемы. Я уже весь stackoverflow перерыл.

А в плане возможностей мне понравился C# + htmlagilitypack. Вот только с селекторами я так и не смог разобраться. Находит только малую часть изображений на странице. Зато можно сразу же загрузить картинки в несколько потоков и положить в одну папочку.
__________________
Фриланс:
Freelancer.com
Upwork
(Offline)
 
Ответить с цитированием
Старый 23.12.2015, 02:21   #26
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Как загрузить все изображения с веб-сайта?

Сообщение от 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 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 и пару ошибок пофиксил
(Online)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
Program23 (23.12.2015), St_AnGer (23.12.2015)
Старый 23.12.2015, 03:08   #27
Program23
Бывалый
 
Аватар для Program23
 
Регистрация: 26.04.2009
Адрес: Россия, Уфа
Сообщений: 680
Написано 182 полезных сообщений
(для 406 пользователей)
Ответ: Как загрузить все изображения с веб-сайта?

Сообщение от Randomize Посмотреть сообщение
Открытие веб страницы
$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"
    
$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);
    
curl_close($ch);

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

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

    
// Переименовываем файл так чтоб у него появилось расширение, если хз что за файл будет .wtf
    
rename($file$file . (isset($mime2ext[$mime]) ? $mime2ext[$mime] : '.wtf'));
}
Скачивает все картинки из элемнтов img со страницы "http://forum.boolean.name/showthread.php?t=20132" и сохраняет их в папку ./grabbed/ с уникальными именами.


Спасибо за подробное объяснение! Но пока код не удалось испытать.
Использую Денвер. Curl установил. Все подключил.
Но после запуска твоего кода, у меня вылетают предупреждения, связанные с Curl.
Возможно это как-то связано с несовместимостью версий curl и php?

Нажмите на изображение для увеличения
Название: Warning.png
Просмотров: 1306
Размер:	48.5 Кб
ID:	22171

UPD Попробую скачать Open Server и из под него запустить.
__________________
Фриланс:
Freelancer.com
Upwork
(Offline)
 
Ответить с цитированием
Старый 23.12.2015, 04:06   #28
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Как загрузить все изображения с веб-сайта?

Сообщение от Program23 Посмотреть сообщение
у меня вылетают предупреждения, связанные с Curl.
No such file...

Папка "grabbed" существует? Права на запись есть?

cwd точно верный? Попробуй это впиндюрить после ini_set`ов
chdir(dirname(__FILE__)); 
upd, обновил тот пост, перекопируй сорс. Забыл расширение для mime image/gif
upd2, исправил пару тупых ошибок
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 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
(Online)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Program23 (23.12.2015)
Старый 23.12.2015, 04:27   #29
Program23
Бывалый
 
Аватар для Program23
 
Регистрация: 26.04.2009
Адрес: Россия, Уфа
Сообщений: 680
Написано 182 полезных сообщений
(для 406 пользователей)
Ответ: Как загрузить все изображения с веб-сайта?

Сообщение от Randomize Посмотреть сообщение
Папка "grabbed" существует? Права на запись есть?
Существует, права тоже есть.

В папку сохраняются подобные файлы: 5679dcbde2c45, 5679dcbe134ef и т.д.
Они просматриваются как картинки.

Все равно выскакивают подобные ошибки:
Warning:rename(./grabbed/5679dcbc0ec1b,./grabbed/5679dcbc0ec1b.gif) [function.rename]: Процесс не может получить доступ к файлу, так как этот файл занят другим процессом. (code: 32) in X:\home\parser_curl\www\parser.php on line 72
если не убрать:
rename($filename, $filename . '.' . (isset($mime2ext[$mime]) ? $mime2ext[$mime] : '.wtf'));
__________________
Фриланс:
Freelancer.com
Upwork
(Offline)
 
Ответить с цитированием
Старый 23.12.2015, 12:35   #30
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Как загрузить все изображения с веб-сайта?

Странно, ладно, попробуй fclose($file); добавить после curl_close($ch);
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 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
(Online)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 07:57.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com