![]() |
Как загрузить все изображения с веб-сайта?
Привет, булчане!
У меня есть задача: Загрузить изображения товаров с этого веб-сайта: 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 тысяч картинок. Что посоветуете? |
Ответ: Как загрузить все изображения с веб-сайта?
Сам скрипт напиши, там же ничего сложного. Получить список всех разделов (рекурсивно, если там дерево), далее по каждому разделу все товары и по картинке к каждому товару.
|
Ответ: Как загрузить все изображения с веб-сайта?
Цитата:
|
Ответ: Как загрузить все изображения с веб-сайта?
А какой язык программирования тебе ближе всего ?
|
Ответ: Как загрузить все изображения с веб-сайта?
Цитата:
|
Ответ: Как загрузить все изображения с веб-сайта?
ну тогда возьми nodejs скачай страницу, распарси (наверняка библиотека/модуль для этого уже написаны), далее составь список всех разделов, для каждого раздела получи список товаров (также запрашивая страницу и парся её), далее для каждого товара опять же запрашиваешь страницу находишь там элемент с картинкой, скачиваешь её, готово.
можно даже не nodejs а http://phantomjs.org/ |
Ответ: Как загрузить все изображения с веб-сайта?
Цитата:
Распарсить на браузере, составить список ссылок на картинки. Далее скачать удобным способом (поюзать какой-нибудь менеджер загрузок) |
Ответ: Как загрузить все изображения с веб-сайта?
я написал что можно вместо nodejs phantomjs взять. это тот же браузер (webkit)
ни разу в браузере ничего не парсил (я на C# пишу), но разве браузер не будет загружать вместе со страницей картинки и выполнять скрипты ? если отменить это поведение в js нельзя, то это будет ощутимо медленнее чем просто стянуть html и распарсить его, к тому же в nodejs есть место для оптимизаций - например грузить много страниц одновременно заходя через разные прокси или при загрузке картинки оптимизировать ее (конвертнуть в png и пройтись по ней pngquant/optipng) и т.д.. |
Ответ: Как загрузить все изображения с веб-сайта?
Чего-то я посмотрел все это дело. Да, долго я буду вникать. PhantomJS вообще не смог поставить (так и не понял что за глобальные переменные там нужно редактировать).
Мне хотя бы что-то вроде этого сервиса нужно: http://backlinks-checker.dimax.biz/t...r_kartinok.php |
Ответ: Как загрузить все изображения с веб-сайта?
В общем, попробовал с помощью C# запарсить страницу и загрузить изображение. Все вроде бы грузится, да не все.
Что с Offline Explorer, что с самописными парсерами, почему-то, например, с этой страницы: http://www.onlinetrade.ru/catalogue/ip_telefoni-c517/ (на которой 46 товаров, а следовательно 46 картинок) Загружается только 5 картинок товара. Почему не загружаются остальные, вообще не понятно. |
Ответ: Как загрузить все изображения с веб-сайта?
Ну у варианта с js прямо в браузере есть важное преимущество: Document Object Model строит сам браузер, "переваривая" все нештатные ситуации (верстальщик Вася не закрыл тег — приехали), которые при ручном парсинге придётся предусматривать.
Если грузить ссылки через Ajax, будет грузиться только сама страница, без прилинкованного контента. |
Ответ: Как загрузить все изображения с веб-сайта?
Цитата:
к тому же парсер для C# htmlagilitypack учитывает такие ситуации, соответствующие модули для nodejs/других платформ тоже должны такое уметь |
Ответ: Как загрузить все изображения с веб-сайта?
Цитата:
PHP код:
|
Ответ: Как загрузить все изображения с веб-сайта?
Короче вариантов решений задачи в топике накидали уже вагон
|
Ответ: Как загрузить все изображения с веб-сайта?
Я решил на javascript в браузере писать. Спасибо за подсказки. Пойду копать документацию.
|
Ответ: Как загрузить все изображения с веб-сайта?
Почему Teleport Pro не подошёл? Он умеет делать полную копию сайта - при создании проекта опция Duplicate file structure.
Что ещё нужно? Скрин |
Ответ: Как загрузить все изображения с веб-сайта?
Цитата:
2. Но почему-то обе эти программы не хотят вытаскивать все фотки товаров из каталога. |
Ответ: Как загрузить все изображения с веб-сайта?
2. Вероятно, потому что на них нет ссылки внутри html.
|
Ответ: Как загрузить все изображения с веб-сайта?
Цитата:
|
Ответ: Как загрузить все изображения с веб-сайта?
Вдоволь поизвращался и с jquery, и с C#.
Проблему решить не смог. Но нашел другое, еще более извращенное решение: Решил заранее подготовить все ссылки страниц, а после сохранять их в формате .mht Можно ли это реализовать через код? Например, в .txt файле находятся все ссылки (каждая с новой строчки). Программа должна читать оттуда ссылки и сохранять в формате .mht на жесткий диск. |
Ответ: Как загрузить все изображения с веб-сайта?
Да просто отследи какие ajax запросы делает сайт во время прокрутки/загрузки страниц. Сделай такие же запросы. Получишь все что необходимо.
|
Ответ: Как загрузить все изображения с веб-сайта?
Я делал всё куда проще: Если картинки сайта отличались только цифрами (например, image01.jpg, image02.jpg, image03.jpg и т. д.), то я просто в блокноте создавал HTML-файлик, куда выводил все картинки разом и потом, через браузер "сохранял страничку автономно", тем самым скачивались все картинки, что нам и надо было. :)
|
Ответ: Как загрузить все изображения с веб-сайта?
Цитата:
Цитата:
|
Ответ: Как загрузить все изображения с веб-сайта?
И вот я в недоумении..
Цитата:
Код:
$('img').each(function() {"Ванильный" способ: Код:
var imgs = document.querySelectorAll('img');В данном случае "img" это селектор. Усложнить чтоб показывал только требуемые ссылки элементарно. Изич же |
Ответ: Как загрузить все изображения с веб-сайта?
Цитата:
А как мне получить те же ссылки, если не из под консоли? 1) То есть сначала мне нужно будет как-то загрузить html. 2) Потом его запарсить с помощью твоих способов. 3) Вывести результат. Первый пункт вызывает у меня проблемы. Я уже весь stackoverflow перерыл. А в плане возможностей мне понравился C# + htmlagilitypack. Вот только с селекторами я так и не смог разобраться. Находит только малую часть изображений на странице. Зато можно сразу же загрузить картинки в несколько потоков и положить в одну папочку. |
Ответ: Как загрузить все изображения с веб-сайта?
Цитата:
PHP код:
Скачивание картинки PHP код:
PHP код:
|
Ответ: Как загрузить все изображения с веб-сайта?
Вложений: 1
Спасибо за подробное объяснение! Но пока код не удалось испытать. Использую Денвер. Curl установил. Все подключил. Но после запуска твоего кода, у меня вылетают предупреждения, связанные с Curl. Возможно это как-то связано с несовместимостью версий curl и php? Вложение 22171 UPD Попробую скачать Open Server и из под него запустить. |
Ответ: Как загрузить все изображения с веб-сайта?
Цитата:
Папка "grabbed" существует? Права на запись есть? cwd точно верный? Попробуй это впиндюрить после ini_set`ов PHP код:
upd2, исправил пару тупых ошибок |
Ответ: Как загрузить все изображения с веб-сайта?
Цитата:
В папку сохраняются подобные файлы: 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')); |
Ответ: Как загрузить все изображения с веб-сайта?
Странно, ладно, попробуй fclose($file); добавить после curl_close($ch);
|
Ответ: Как загрузить все изображения с веб-сайта?
Цитата:
Сейчас у меня такая проблема: >При загрузке изображения, иногда может выдать ошибку, как реализовать повторную загрузку? Я слышал что-то о Retry паттернах + Polly библиотека. Что посоветуешь, если, конечно, разбираешься в этом? |
Ответ: Как загрузить все изображения с веб-сайта?
Цитата:
Цитата:
Код:
var img = await DownloadImage("http://google.com/img.png"); |
Ответ: Как загрузить все изображения с веб-сайта?
Цитата:
2. Определяем количество страниц в каталоге 3. Загружаем другие страницы (HtmlNode) Теперь у нас есть коллекция страниц. 1. Загружаем нужные нам img nodes 2. Создаем tuple с URL изображения и новым WebClient instance 3. Загружаем изображение Код:
public class ImageDownloaderКод:
DownloadImagesFromUrl("http://www.onlinetrade.ru/catalogue/televizori-c181/", @"C:\temp\televizori-c181\images"); |
Ответ: Как загрузить все изображения с веб-сайта?
Ок, но у тебя нету кода который страницы разделов выдергивает, ты их руками перебирвать будешь? (там больше 1000 разделов на самом деле).
+ все картинки товаров ты так не получишь, ты получишь только превьюшки 100х100 (по 1 на товар). Чтобы картинки товаров (полноразмерные + там их несколько на товар) получить тебе надо еще на каждый товар запрос сделать. |
Ответ: Как загрузить все изображения с веб-сайта?
Цитата:
А ссылки я выдернул со страницы onlinetrade/catalogue по тому же алгоритму, только искал href. Все сохранилось в txt файл. |
Ответ: Как загрузить все изображения с веб-сайта?
Цитата:
|
Ответ: Как загрузить все изображения с веб-сайта?
|
| Часовой пояс GMT +4, время: 17:31. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Перевод: zCarot