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 в браузере писать. Спасибо за подсказки. Пойду копать документацию.


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

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