- Регистрация
- 04.04.2015
- Сообщения
- 3 835
- Реакции
- 3 564
- Баллы
- 113
Фотостоки – это отличный источник качественных изображений по Вашим запросам. Поиск по ключевым словам на стоках дает куда более приближенный к реальности (к запросу) результат, нежели поиск в Яндекс или Google картинках, за счет обильного количества описательных меток и иного подхода к публикации изображений – все-таки это специализированное место, упор идет на качество.
Средняя стоимость одного изображения колеблется в районе 0.5$. По текущему курсу ЦБ это 33.4 рубля.
Рассмотрим Shutterstock.
Возьмем за основу тариф базовый, 350 изображений в месяц – 199$.
Итого с нас возьмут 0.56$ за одну пикчу.
Люди ежечасно покупают изображения и публикуют их в интернете, так почему бы нам этим и не воспользоваться?
Риторический вопрос.
Итак, что же нам потребуется для того, чтобы стрясти со стоков немного халявы:
1. Парсинг миниатюр;
2. Поиск по изображению;
3. Получение ссылки на оригинал без водяных знаков в случае успеха.
Заходим на shutterstock.com и вбиваем в поисковую строку наш запрос, пусть это будет couple (пара). На выходе у нас будет ссылка:
Где {-Variable.searchImage-} наш поисковый запрос.
Отлично, у нас 1 492 807 результатов.
Теперь необходимо получить прямые ссылки на миниатюры, размер которых колеблется в районе 400px по ширине. Опытным путем определяем, что все стоковые изображения загружены на поддомен thumb*.shutterstock.com. Готовим регулярку:
Складываем все это добро в список и при необходимости переходим на следующую страницу и повторяем операцию. Чтобы нам не уйти в бесконечный цикл, установим максимум, за который будет отвечать переменая parsing_img_count во входных настройках.
Добавим немного обработок, проверок, любви и 1 из 2 логических блоков готов.
Первая часть работает на GET запросах, а вот 2-ой этап, к сожалению, пришлось реализовать на браузере т.к. иначе мне просто не хватило бы времени для завершения статьи в рамках конкурса, может быть чуть позже выложу обновленную версию, работающую без использования браузера.
Собрали тестовый список на 100 изображений.
Теперь необходимо его прочекать. Отправляемся в Google, переходим в раздел «Картинки», далее щелкаем по иконке фотоаппарата, которая отвечает за функционал поиска по картинке и указываем ссылку на изображение из списка.
Как только мы совершим запрос, нас будет интересовать самый первый блок, в частности ссылка, указывающая на размер изображения «Большие».
Если нам встречается нечто подобное этому:
Или сообщение о том, что ничего не найдено – проходим мимо, это не наш клиент!
А вот пример ниже нам подходит идеально:
Переходим по ссылке «Большие» и забираем самое первое изображение. Можно сделать алгоритм по-хитрее, но для примера сойдет и так
Чтобы получить полный URL на изображение, необходимо было нажать на кнопку «Открыть в полном размере», но она оказалась «геморойной» по части единственно-определяющего её признака, поэтому я просто вытащил его из кода страницы регуляркой:
Поздравляю с экономией!
Кладем сие добро в список и продолжаем гонять сей процесс в цикле, пока лист не опустеет.
За несколько минут работы на 1IP с минимальными таймаутами 1-2 секунды было найдено 23 изображения из 100 возможных. Это 23%.
А наша экономия составила 11.5$.
Для больших объемов нужно будет подкрутить таймауты, анти-каптчу и прокси, иначе Google нас завалит проверками.
У нас на выходе получился файл good.txt со ссылками на найденные оригиналы изображений без водяных знаков фотостока. Теперь необходимо выбрать подходящие и скачать, но не щелкать же так каждую ссылку – р-у-у-у-у-у-у-у-у-у-тина.
Я предлагаю решить это 2 способами:
Всё это мы будем делать на основе второго мини-шаблона, а в конце статьи будет так же прикреплен шаблон «PicMonsterDownload», в котором всё это будет объединено.
Вариант первый: создаем галерею.
Недолго думая, я остановился на варианте с HTML страничкой и выгрузки ссылок в <img> теги.
Но опять же есть момент, что выставить их плотными рядами будет проблематично в силу того, что они имеют разное разрешение и поэтому всё будет съезжать. Присвоить всем <img> объектам одинаковый width и height мы тоже не можем, иначе некоторые фотографии будут сплющены.
Благо нам не придется ломать голову или изобретать велосипед, ведь есть JS плагин под названием Isotope (isotope.metafizzy.co), который способен фильтровать и сортировать слои волшебным образом, например, так:
То, что нам нужно!
Так-с, знаете, верстать мне сейчас тоже лень. Нужен готовый вариант, который мы немного отредактируем под свои нужды. Где же его найти? Верно, Demo. Заходим в Demos -> Images (на сайте разработчика) и перед нами красота:
Нужно всего лишь убрать левый сайдбар, да текст сверху. Поехали. Сохраняем страницу и включаем режим «верстальщика», если в Вашей черепной коробке такого функционала нет – не переживайте, готовое решение будет в конце статьи, в виде шаблона
Итак, что мы имеем: набор ссылок и слои <div class="photo"><img src="ССЫЛКА” /></div>, которые делают «красиво». Что ж, нам нужно регулярочка!
Отправляем все содержимое файла good.txt в переменную и обрабатываем Regex заменой.
Что искать:
На что заменить:
Сохраняем в переменную OUTPUT.
Теперь все это дело, нужно встроить в нашу страницу и сохранить.
Сохранять будем в файл imagelist_%дата%.html
Но так как у меня не работает {-TimeNow.Date[Format]-} т.к. установлена старая версия ZP, я воспользуюсь C# кодом и сохраню в переменную time:
Откроем полученный HTMLфайл:
Ляпота
Для того, чтобы сохранить изображение на компьютер достаточно сделать 2 простых телодвижения: правый клик мыши -> сохранить картинку как.
Вариант второй: Качаем всё сразу!
Воспользуемся потрясающей консольной утилитой Wget для загрузки файлов по сети. Поддерживает протоколы HTTP, FTP и HTTPS, а также работу через HTTP прокси-сервер. Если в процессе работы сетевое соединение оборвется, утилита возобновит работу с того места, где она была прервана – это одно из преимуществ. Так же поддерживает закачку по списку в фоновом режиме – супер, то что нам нужно.
Скачать: http://gnuwin32.sourceforge.net/packages/wget.htm Вам нужен «Complete package, except sources»
Я очень скудно описал возможности этой утилиты, но уверяю Вас их огромное количетво. С мануалом можете ознакомиться здесь: http://www.opennet.ru/man.shtml?topic=wget&category=1 или http://www.gnu.org/software/wget/manual/wget.html
Думаю, что ни у кого не возникнет трудностей со скачиванием дистрибутива и прохождением мастера установки.
Далее нам нужно добавить путь Wget’a к системному пути, да бы мы смогли вызвать из командной строки без указания пути к ней. Копируем путь, где установлена программа, у меня это: C:\ProgramFiles (x86)\GnuWin32\bin
Жмем правой кнопкой мыши на «Мой компьютер» -> Свойства -> Дополнительные параметры системы -> Дополнительно. И в этом окошке мы кликаем по кнопке «Переменные среды».
В открывшемся окне выбираем PATHи кликаем на «Изменить».
В строке «Значение переменной» в самом конце ставим «;» (без кавычек) и прописываем путь к утилите wget. У меня это выглядит так:
Подтверждаем свои действия, нажатием кнопки «ОК».
Возвращаемся в ProjectMaker и напишем код для C# кубика, который будем взаимодействовать с утилитой wget:
В переменной command пишем:
Так же доступен альтернативный вариант через Свой код -> Запуск программы.
Исполняемый файл: C:\Windows\System32\cmd.exe
Параметры запуска: /c cd {-Project.Directory-} && wget -P img -i good.txt
Время закачки зависит от скорости Вашего соединения и объема данных.
О шаблонах:
PicMonster - шаблон для парсинга оригинальных стоковых изображений без водяных знаков.
PicDownload - шаблон для скачивания изображений и создания галереи.
PicMonsterDownload v1.1- обновленный шаблон, который включает в себя все вышеперечисленные функции.
Средняя стоимость одного изображения колеблется в районе 0.5$. По текущему курсу ЦБ это 33.4 рубля.
Рассмотрим Shutterstock.
Возьмем за основу тариф базовый, 350 изображений в месяц – 199$.
Итого с нас возьмут 0.56$ за одну пикчу.
Люди ежечасно покупают изображения и публикуют их в интернете, так почему бы нам этим и не воспользоваться?
Риторический вопрос.Итак, что же нам потребуется для того, чтобы стрясти со стоков немного халявы:
1. Парсинг миниатюр;
2. Поиск по изображению;
3. Получение ссылки на оригинал без водяных знаков в случае успеха.
Заходим на shutterstock.com и вбиваем в поисковую строку наш запрос, пусть это будет couple (пара). На выходе у нас будет ссылка:
Код:
http://www.shutterstock.com/cat.mhtml?autocomplete_id=&language=ru&lang=ru&search_source=&safesearch=1&version=llv1&searchterm={-Variable.searchImage-}&media_type=images&media_type2=images&searchtermx=&photographer_name=&people_gender=&people_age=&people_ethnicity=&people_number=&color=
Отлично, у нас 1 492 807 результатов.
Теперь необходимо получить прямые ссылки на миниатюры, размер которых колеблется в районе 400px по ширине. Опытным путем определяем, что все стоковые изображения загружены на поддомен thumb*.shutterstock.com. Готовим регулярку:
Код:
(?<=img\ src=")http://thumb[^"]+(?="[^>]+)
Добавим немного обработок, проверок, любви и 1 из 2 логических блоков готов.
Первая часть работает на GET запросах, а вот 2-ой этап, к сожалению, пришлось реализовать на браузере т.к. иначе мне просто не хватило бы времени для завершения статьи в рамках конкурса, может быть чуть позже выложу обновленную версию, работающую без использования браузера.
Собрали тестовый список на 100 изображений.
Теперь необходимо его прочекать. Отправляемся в Google, переходим в раздел «Картинки», далее щелкаем по иконке фотоаппарата, которая отвечает за функционал поиска по картинке и указываем ссылку на изображение из списка.
Как только мы совершим запрос, нас будет интересовать самый первый блок, в частности ссылка, указывающая на размер изображения «Большие».
Если нам встречается нечто подобное этому:
Или сообщение о том, что ничего не найдено – проходим мимо, это не наш клиент!
А вот пример ниже нам подходит идеально:
Переходим по ссылке «Большие» и забираем самое первое изображение. Можно сделать алгоритм по-хитрее, но для примера сойдет и так
Чтобы получить полный URL на изображение, необходимо было нажать на кнопку «Открыть в полном размере», но она оказалась «геморойной» по части единственно-определяющего её признака, поэтому я просто вытащил его из кода страницы регуляркой:
Код:
(?<=ou":")[^"]+
Кладем сие добро в список и продолжаем гонять сей процесс в цикле, пока лист не опустеет.За несколько минут работы на 1IP с минимальными таймаутами 1-2 секунды было найдено 23 изображения из 100 возможных. Это 23%.
А наша экономия составила 11.5$.
Для больших объемов нужно будет подкрутить таймауты, анти-каптчу и прокси, иначе Google нас завалит проверками.
У нас на выходе получился файл good.txt со ссылками на найденные оригиналы изображений без водяных знаков фотостока. Теперь необходимо выбрать подходящие и скачать, но не щелкать же так каждую ссылку – р-у-у-у-у-у-у-у-у-у-тина.
Я предлагаю решить это 2 способами:
- Создать галерею, где мы сможем визуально оценить сразу весь материал и сохранить подходящие варианты.
- Скачать всё сразу.
Всё это мы будем делать на основе второго мини-шаблона, а в конце статьи будет так же прикреплен шаблон «PicMonsterDownload», в котором всё это будет объединено.
Вариант первый: создаем галерею.
Недолго думая, я остановился на варианте с HTML страничкой и выгрузки ссылок в <img> теги.
Но опять же есть момент, что выставить их плотными рядами будет проблематично в силу того, что они имеют разное разрешение и поэтому всё будет съезжать. Присвоить всем <img> объектам одинаковый width и height мы тоже не можем, иначе некоторые фотографии будут сплющены.
Благо нам не придется ломать голову или изобретать велосипед, ведь есть JS плагин под названием Isotope (isotope.metafizzy.co), который способен фильтровать и сортировать слои волшебным образом, например, так:
То, что нам нужно!
Так-с, знаете, верстать мне сейчас тоже лень. Нужен готовый вариант, который мы немного отредактируем под свои нужды. Где же его найти? Верно, Demo. Заходим в Demos -> Images (на сайте разработчика) и перед нами красота:
Нужно всего лишь убрать левый сайдбар, да текст сверху. Поехали. Сохраняем страницу и включаем режим «верстальщика», если в Вашей черепной коробке такого функционала нет – не переживайте, готовое решение будет в конце статьи, в виде шаблона

Итак, что мы имеем: набор ссылок и слои <div class="photo"><img src="ССЫЛКА” /></div>, которые делают «красиво». Что ж, нам нужно регулярочка!
Отправляем все содержимое файла good.txt в переменную и обрабатываем Regex заменой.
Что искать:
Код:
(https?://[^\s]+)
На что заменить:
Код:
<div class="photo"><img src="$1" /></div>
Сохраняем в переменную OUTPUT.
Теперь все это дело, нужно встроить в нашу страницу и сохранить.
Сохранять будем в файл imagelist_%дата%.html
Но так как у меня не работает {-TimeNow.Date[Format]-} т.к. установлена старая версия ZP, я воспользуюсь C# кодом и сохраню в переменную time:
Код:
return DateTime.Now.ToString("MM.dd.yyyy hh:mm:ss");
Откроем полученный HTMLфайл:
Ляпота

Для того, чтобы сохранить изображение на компьютер достаточно сделать 2 простых телодвижения: правый клик мыши -> сохранить картинку как.
Вариант второй: Качаем всё сразу!
Воспользуемся потрясающей консольной утилитой Wget для загрузки файлов по сети. Поддерживает протоколы HTTP, FTP и HTTPS, а также работу через HTTP прокси-сервер. Если в процессе работы сетевое соединение оборвется, утилита возобновит работу с того места, где она была прервана – это одно из преимуществ. Так же поддерживает закачку по списку в фоновом режиме – супер, то что нам нужно.
Скачать: http://gnuwin32.sourceforge.net/packages/wget.htm Вам нужен «Complete package, except sources»
Я очень скудно описал возможности этой утилиты, но уверяю Вас их огромное количетво. С мануалом можете ознакомиться здесь: http://www.opennet.ru/man.shtml?topic=wget&category=1 или http://www.gnu.org/software/wget/manual/wget.html
Думаю, что ни у кого не возникнет трудностей со скачиванием дистрибутива и прохождением мастера установки.
Далее нам нужно добавить путь Wget’a к системному пути, да бы мы смогли вызвать из командной строки без указания пути к ней. Копируем путь, где установлена программа, у меня это: C:\ProgramFiles (x86)\GnuWin32\bin
Жмем правой кнопкой мыши на «Мой компьютер» -> Свойства -> Дополнительные параметры системы -> Дополнительно. И в этом окошке мы кликаем по кнопке «Переменные среды».
В открывшемся окне выбираем PATHи кликаем на «Изменить».
В строке «Значение переменной» в самом конце ставим «;» (без кавычек) и прописываем путь к утилите wget. У меня это выглядит так:
Подтверждаем свои действия, нажатием кнопки «ОК».
Возвращаемся в ProjectMaker и напишем код для C# кубика, который будем взаимодействовать с утилитой wget:
Код:
var process = new System.Diagnostics.Process {
StartInfo = new System.Diagnostics.ProcessStartInfo {
UseShellExecute = false,
//CreateNoWindow = true,
RedirectStandardError = true,
RedirectStandardInput = true,
RedirectStandardOutput = true,
FileName = "cmd.exe",
WorkingDirectory = project.Directory,
Arguments = @"/c "+project.Variables["command"].Value
}
};
process.Start();
string output = process.StandardOutput.ReadToEnd();
process.WaitForExit();
process.Close();
process.Dispose();
return output;
В переменной command пишем:
Код:
wget -P img -i good.txt
Так же доступен альтернативный вариант через Свой код -> Запуск программы.
Исполняемый файл: C:\Windows\System32\cmd.exe
Параметры запуска: /c cd {-Project.Directory-} && wget -P img -i good.txt
Время закачки зависит от скорости Вашего соединения и объема данных.
О шаблонах:
PicMonster - шаблон для парсинга оригинальных стоковых изображений без водяных знаков.
PicDownload - шаблон для скачивания изображений и создания галереи.
PicMonsterDownload v1.1- обновленный шаблон, который включает в себя все вышеперечисленные функции.
- v.1.1 Добавлена проверка стоп-сайтов.
Благодарю за внимание!
- Номер конкурса статей
- Пятый конкурс статей
- Тема статьи
- Другое
Вложения
Последнее редактирование:




Поэтому давайте не будем зацикливаться.
сильно удивился не обнаружив такого фильтра... Все-таки ресурс продающий, но наверное им виднее)