forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Болтовня (http://forum.boolean.name/forumdisplay.php?f=25)
-   -   Как загрузить все изображения с веб-сайта? (http://forum.boolean.name/showthread.php?t=20132)

Program23 20.12.2015 03:43

Как загрузить все изображения с веб-сайта?
 
Привет, булчане!

У меня есть задача:
Загрузить изображения товаров с этого веб-сайта: http://www.onlinetrade.ru/catalogue/
Всего картинок должно быть примерно 100 тысяч.

Изображения хранятся здесь: http://www.onlinetrade.ru/img/items/s/{IMAGE_NAME}.jpg
(например: http://www.onlinetrade.ru/img/items/...her niy_1.jpg)

Но к этой директории нет доступа: http://www.onlinetrade.ru/img/items/s

Я пробовал Teleport Pro, который плохо справился с задачей.
Потом перешел на Offline Explorer, он отлично выполняет задачу. Но почему-то загружает только около 5 тысяч картинок.

Что посоветуете?

h1dd3n 20.12.2015 04:04

Ответ: Как загрузить все изображения с веб-сайта?
 
Сам скрипт напиши, там же ничего сложного. Получить список всех разделов (рекурсивно, если там дерево), далее по каждому разделу все товары и по картинке к каждому товару.

Program23 20.12.2015 04:09

Ответ: Как загрузить все изображения с веб-сайта?
 
Цитата:

Сообщение от h1dd3n (Сообщение 302766)
Сам скрипт напиши, там же ничего сложного. Получить список всех разделов (рекурсивно, если там дерево), далее по каждому разделу все товары и по картинке к каждому товару.

Вообще не представляю с чего начать.

h1dd3n 20.12.2015 05:08

Ответ: Как загрузить все изображения с веб-сайта?
 
А какой язык программирования тебе ближе всего ?

Program23 20.12.2015 05:57

Ответ: Как загрузить все изображения с веб-сайта?
 
Цитата:

Сообщение от h1dd3n (Сообщение 302769)
А какой язык программирования тебе ближе всего ?

Javascript, Php

h1dd3n 20.12.2015 06:13

Ответ: Как загрузить все изображения с веб-сайта?
 
ну тогда возьми nodejs скачай страницу, распарси (наверняка библиотека/модуль для этого уже написаны), далее составь список всех разделов, для каждого раздела получи список товаров (также запрашивая страницу и парся её), далее для каждого товара опять же запрашиваешь страницу находишь там элемент с картинкой, скачиваешь её, готово.

можно даже не nodejs а http://phantomjs.org/

ABTOMAT 20.12.2015 06:27

Ответ: Как загрузить все изображения с веб-сайта?
 
Цитата:

Сообщение от h1dd3n (Сообщение 302772)
nodejs

Чем джаваскрипт прямо в браузере не угодил?
Распарсить на браузере, составить список ссылок на картинки.
Далее скачать удобным способом (поюзать какой-нибудь менеджер загрузок)

h1dd3n 20.12.2015 06:48

Ответ: Как загрузить все изображения с веб-сайта?
 
я написал что можно вместо nodejs phantomjs взять. это тот же браузер (webkit)
ни разу в браузере ничего не парсил (я на C# пишу), но разве браузер не будет загружать вместе со страницей картинки и выполнять скрипты ? если отменить это поведение в js нельзя, то это будет ощутимо медленнее чем просто стянуть html и распарсить его, к тому же в nodejs есть место для оптимизаций - например грузить много страниц одновременно заходя через разные прокси или при загрузке картинки оптимизировать ее (конвертнуть в png и пройтись по ней pngquant/optipng) и т.д..

Program23 20.12.2015 07:46

Ответ: Как загрузить все изображения с веб-сайта?
 
Чего-то я посмотрел все это дело. Да, долго я буду вникать. PhantomJS вообще не смог поставить (так и не понял что за глобальные переменные там нужно редактировать).

Мне хотя бы что-то вроде этого сервиса нужно:
http://backlinks-checker.dimax.biz/t...r_kartinok.php

Program23 20.12.2015 12:40

Ответ: Как загрузить все изображения с веб-сайта?
 
В общем, попробовал с помощью C# запарсить страницу и загрузить изображение. Все вроде бы грузится, да не все.
Что с Offline Explorer, что с самописными парсерами, почему-то, например, с этой страницы:
http://www.onlinetrade.ru/catalogue/ip_telefoni-c517/
(на которой 46 товаров, а следовательно 46 картинок)
Загружается только 5 картинок товара. Почему не загружаются остальные, вообще не понятно.

ABTOMAT 20.12.2015 14:23

Ответ: Как загрузить все изображения с веб-сайта?
 
Ну у варианта с js прямо в браузере есть важное преимущество: Document Object Model строит сам браузер, "переваривая" все нештатные ситуации (верстальщик Вася не закрыл тег — приехали), которые при ручном парсинге придётся предусматривать.
Если грузить ссылки через Ajax, будет грузиться только сама страница, без прилинкованного контента.

h1dd3n 20.12.2015 19:06

Ответ: Как загрузить все изображения с веб-сайта?
 
Цитата:

Сообщение от ABTOMAT (Сообщение 302785)
Ну у варианта с js прямо в браузере есть важное преимущество: Document Object Model строит сам браузер, "переваривая" все нештатные ситуации (верстальщик Вася не закрыл тег — приехали), которые при ручном парсинге придётся предусматривать.
Если грузить ссылки через Ajax, будет грузиться только сама страница, без прилинкованного контента.

phantomjs делает тоже самое, я же написал что это фактически браузер.
к тому же парсер для C# htmlagilitypack учитывает такие ситуации, соответствующие модули для nodejs/других платформ тоже должны такое уметь

Randomize 20.12.2015 19:42

Ответ: Как загрузить все изображения с веб-сайта?
 
Цитата:

Сообщение от Program23 (Сообщение 302771)
Javascript, Php

PhpQuery? (Если знаком с селекторами, jQuery и умеешь в curl)
PHP код:

<?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');

include 
'phpQuery-onefile.php';

$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);

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

foreach (
$doc['table tr td div a strong'] as $theme) {
    echo 
pq($theme)->html() . '<br />';
}


ABTOMAT 21.12.2015 05:43

Ответ: Как загрузить все изображения с веб-сайта?
 
Короче вариантов решений задачи в топике накидали уже вагон

Program23 21.12.2015 07:16

Ответ: Как загрузить все изображения с веб-сайта?
 
Я решил на javascript в браузере писать. Спасибо за подсказки. Пойду копать документацию.

Жека 21.12.2015 07:50

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

Скрин

Program23 21.12.2015 09:25

Ответ: Как загрузить все изображения с веб-сайта?
 
Цитата:

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

Скрин

1. Мне Offline Explorer больше нравится. Он выигрывает как по скорости, так и по возможностям.
2. Но почему-то обе эти программы не хотят вытаскивать все фотки товаров из каталога.

Жека 21.12.2015 11:13

Ответ: Как загрузить все изображения с веб-сайта?
 
2. Вероятно, потому что на них нет ссылки внутри html.

ABTOMAT 21.12.2015 11:47

Ответ: Как загрузить все изображения с веб-сайта?
 
Цитата:

Сообщение от Жека (Сообщение 302811)
2. Вероятно, потому что на них нет ссылки внутри html.

Может быть, она через время прогружается при помощи Ajax, топикстартер не проверял?

Program23 22.12.2015 07:51

Ответ: Как загрузить все изображения с веб-сайта?
 
Вдоволь поизвращался и с jquery, и с C#.
Проблему решить не смог.

Но нашел другое, еще более извращенное решение:
Решил заранее подготовить все ссылки страниц, а после сохранять их в формате .mht
Можно ли это реализовать через код? Например, в .txt файле находятся все ссылки (каждая с новой строчки). Программа должна читать оттуда ссылки и сохранять в формате .mht на жесткий диск.

pax 22.12.2015 10:08

Ответ: Как загрузить все изображения с веб-сайта?
 
Да просто отследи какие ajax запросы делает сайт во время прокрутки/загрузки страниц. Сделай такие же запросы. Получишь все что необходимо.

ingko 22.12.2015 13:39

Ответ: Как загрузить все изображения с веб-сайта?
 
Я делал всё куда проще: Если картинки сайта отличались только цифрами (например, image01.jpg, image02.jpg, image03.jpg и т. д.), то я просто в блокноте создавал HTML-файлик, куда выводил все картинки разом и потом, через браузер "сохранял страничку автономно", тем самым скачивались все картинки, что нам и надо было. :)

Nex 22.12.2015 19:38

Ответ: Как загрузить все изображения с веб-сайта?
 
Цитата:

Сообщение от ingko (Сообщение 302835)
Я делал всё куда проще: Если картинки сайта отличались только цифрами (например, image01.jpg, image02.jpg, image03.jpg и т. д.), то я просто в блокноте создавал HTML-файлик, куда выводил все картинки разом и потом, через браузер "сохранял страничку автономно", тем самым скачивались все картинки, что нам и надо было. :)

Цитата:

Всего картинок должно быть примерно 100 тысяч.
Интересно сколько времени займет вбивание ссылок в блокнот.

Randomize 22.12.2015 20:52

Ответ: Как загрузить все изображения с веб-сайта?
 
И вот я в недоумении..
Цитата:

Сообщение от Program23 (Сообщение 302771)
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" это селектор. Усложнить чтоб показывал только требуемые ссылки элементарно.

Изич же

Program23 23.12.2015 01:45

Ответ: Как загрузить все изображения с веб-сайта?
 
Цитата:

Сообщение от Randomize (Сообщение 302846)
И вот я в недоумении..


Ты знаешь что такое отладчик в браузере? Прямо там в консоли можно написать:
Код:

$('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. Вот только с селекторами я так и не смог разобраться. Находит только малую часть изображений на странице. Зато можно сразу же загрузить картинки в несколько потоков и положить в одну папочку.

Randomize 23.12.2015 02:21

Ответ: Как загрузить все изображения с веб-сайта?
 
Цитата:

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

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

Открытие веб страницы
PHP код:

$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

Скачивание картинки
PHP код:

$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 код:

<?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/ с уникальными именами.

Program23 23.12.2015 03:08

Ответ: Как загрузить все изображения с веб-сайта?
 
Вложений: 1
Цитата:

Сообщение от Randomize (Сообщение 302852)
Открытие веб страницы
PHP код:

$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

Скачивание картинки
PHP код:

$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 код:

<?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?

Вложение 22171

UPD Попробую скачать Open Server и из под него запустить.

Randomize 23.12.2015 04:06

Ответ: Как загрузить все изображения с веб-сайта?
 
Цитата:

Сообщение от Program23 (Сообщение 302853)
у меня вылетают предупреждения, связанные с Curl.

No such file...

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

cwd точно верный? Попробуй это впиндюрить после ini_set`ов
PHP код:

chdir(dirname(__FILE__)); 

upd, обновил тот пост, перекопируй сорс. Забыл расширение для mime image/gif
upd2, исправил пару тупых ошибок

Program23 23.12.2015 04:27

Ответ: Как загрузить все изображения с веб-сайта?
 
Цитата:

Сообщение от Randomize (Сообщение 302855)
Папка "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'));

Randomize 23.12.2015 12:35

Ответ: Как загрузить все изображения с веб-сайта?
 
Странно, ладно, попробуй fclose($file); добавить после curl_close($ch);

Program23 27.12.2015 17:54

Ответ: Как загрузить все изображения с веб-сайта?
 
Цитата:

Сообщение от h1dd3n (Сообщение 302769)
C#

Добился я нужного функционала от своего парсера на C#. Спасибо иностранным коллегам на Stackoverflow.

Сейчас у меня такая проблема:
>При загрузке изображения, иногда может выдать ошибку, как реализовать повторную загрузку?
Я слышал что-то о Retry паттернах + Polly библиотека.
Что посоветуешь, если, конечно, разбираешься в этом?

h1dd3n 27.12.2015 18:12

Ответ: Как загрузить все изображения с веб-сайта?
 
Цитата:

Сообщение от Program23 (Сообщение 302957)
Добился я нужного функционала от своего парсера на C#. Спасибо иностранным коллегам на Stackoverflow.

покажи...
Цитата:

Сейчас у меня такая проблема:
>При загрузке изображения, иногда может выдать ошибку, как реализовать повторную загрузку?
Я слышал что-то о Retry паттернах + Polly библиотека.
Что посоветуешь, если, конечно, разбираешься в этом?

Код:

var img = await DownloadImage("http://google.com/img.png");

while (img == null) {
    await Task.Delay(1000); // ждем секунду, это вместо Thread.Sleep

    img = DownloadImage("http://google.com/img.png");
}

File.WriteAllBytes("C:\\myimage.png", img);

public async Task<byte[]> DownloadImage(string url) {
    byte[] img;
    try {
        using (var webClient = new WebClient()) {
            img = await webClient.DownloadDataTaskAsync(url);
            return img;
        }
    }
    catch {
        return null;
    }
   

}

в цикл можно еще условие на кол-во попыток добавить и в WebClient вместо обычного catch - вставить конкретный тип исключения (если проблемы с сетью - то нужно картинку заново попробовать скачать, если сервер 404 вернул, то нет смысла дальше долбить его)

Program23 27.12.2015 21:24

Ответ: Как загрузить все изображения с веб-сайта?
 
Цитата:

Сообщение от h1dd3n (Сообщение 302958)
покажи...

1. Загружаем первую страницу (HtmlNode)
2. Определяем количество страниц в каталоге
3. Загружаем другие страницы (HtmlNode)
Теперь у нас есть коллекция страниц.

1. Загружаем нужные нам img nodes
2. Создаем tuple с URL изображения и новым WebClient instance
3. Загружаем изображение

Код:

public class ImageDownloader
{
    public void DownloadImagesFromUrl(string url, string folderImagesPath)
    {
        var uri = new Uri(url + "/?per_page=50");
        var pages = new List<HtmlNode> { LoadHtmlDocument(uri) };

        pages.AddRange(LoadOtherPages(pages[0], url));

        pages.SelectMany(p => p.SelectNodes("//a[@class='catalog__displayedItem__columnFotomainLnk']/img"))
            .Select(node => Tuple.Create(new UriBuilder(uri.Scheme, uri.Host, uri.Port, node.Attributes["src"].Value).Uri, new WebClient()))
            .AsParallel()
            .ForAll(t => DownloadImage(folderImagesPath, t.Item1, t.Item2));
    }

    private static void DownloadImage(string folderImagesPath, Uri url, WebClient webClient)
    {
        try
        {
            webClient.DownloadFile(url, Path.Combine(folderImagesPath, Path.GetFileName(url.ToString())));
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }

    private static IEnumerable<HtmlNode> LoadOtherPages(HtmlNode firstPage, string url)
    {
        return Enumerable.Range(1, DiscoverTotalPages(firstPage))
                        .AsParallel()
                        .Select(i => LoadHtmlDocument(new Uri(url + "/?per_page=50&page=" + i)));
    }

    private static int DiscoverTotalPages(HtmlNode documentNode)
    {
        var totalItemsDescription = documentNode.SelectNodes("//div[@class='catalogItemList__numsInWiev']").First().InnerText.Trim();
        var totalItems = int.Parse(Regex.Match(totalItemsDescription, @"\d+$").ToString());
        var totalPages = (int)Math.Ceiling(totalItems / 50d);
        return totalPages;
    }

    private static HtmlNode LoadHtmlDocument(Uri uri)
    {
        var doc = new HtmlDocument();
        var wc = new WebClient();
        doc.LoadHtml(wc.DownloadString(uri));

        var documentNode = doc.DocumentNode;
        return documentNode;
    }
}

Так используем функцию:
Код:

DownloadImagesFromUrl("http://www.onlinetrade.ru/catalogue/televizori-c181/", @"C:\temp\televizori-c181\images");
Спасибо!

h1dd3n 27.12.2015 22:00

Ответ: Как загрузить все изображения с веб-сайта?
 
Ок, но у тебя нету кода который страницы разделов выдергивает, ты их руками перебирвать будешь? (там больше 1000 разделов на самом деле).

+ все картинки товаров ты так не получишь, ты получишь только превьюшки 100х100 (по 1 на товар). Чтобы картинки товаров (полноразмерные + там их несколько на товар) получить тебе надо еще на каждый товар запрос сделать.

Program23 29.12.2015 21:43

Ответ: Как загрузить все изображения с веб-сайта?
 
Цитата:

Сообщение от h1dd3n (Сообщение 302964)
Ок, но у тебя нету кода который страницы разделов выдергивает, ты их руками перебирвать будешь? (там больше 1000 разделов на самом деле).

+ все картинки товаров ты так не получишь, ты получишь только превьюшки 100х100 (по 1 на товар). Чтобы картинки товаров (полноразмерные + там их несколько на товар) получить тебе надо еще на каждый товар запрос сделать.

Мне нужны именно эти превьюшки.
А ссылки я выдернул со страницы onlinetrade/catalogue по тому же алгоритму, только искал href. Все сохранилось в txt файл.

h1dd3n 30.12.2015 18:11

Ответ: Как загрузить все изображения с веб-сайта?
 
Цитата:

Сообщение от Program23 (Сообщение 303007)
Мне нужны именно эти превьюшки.
А ссылки я выдернул со страницы onlinetrade/catalogue по тому же алгоритму, только искал href. Все сохранилось в txt файл.

В итоге сколько таких ссылок ?

Randomize 30.12.2015 20:23

Ответ: Как загрузить все изображения с веб-сайта?
 
Шарписты - Маяковские. Столько буков и так мало толку.
Цитата:

Сообщение от Program23 (Сообщение 302853)
Но после запуска твоего кода, у меня вылетают предупреждения, связанные с Curl.
Вложение 22171

Цитата:

Сообщение от Program23 (Сообщение 302853)
связанные с Curl.

Где там CURL? Ты читать ошибку пробовал?
1) Warning при fopen
2) Warning при передаче хендла открытого файла в curl
Зачинщик именно файл. Curl тут ни при чём.
И да, я писал код "прямо тут", не тестил.
Цитата:

Если хочешь помочь голодному, не давай ему рыбы, дай ему удочку.
Похоже тебе всё же нужна изи-рыба.

Цитата:

Сообщение от Program23 (Сообщение 302771)
Javascript, Php

Обманул же. Не знаешь ты php ни разу. И даже не пытаешься узнать.


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Перевод: zCarot