Поиск (парсинг) контента для любых нужд, сортировка, оптимизация и редактирование пакетными методами.

И так, задача найти как можно больше картинок с мультипликационными персонажами и их именами, отсортировать имя персонажа/название файла, отредактировать все изображения в PhotoShop. В принципе ничего сложного если речи идет о пяти, десяти персонажах. В этой статье пойдет речь о том как за пару часов не интенсивной работы можно собрать не менее четырехсот имен/картинок персонажей и провести с ними работу по сведению к общему «знаменателю».

Справка

Синтакси́ческий ана́лиз (жарг. па́рсинг) в лингвистике и информатике — процесс сопоставления линейной последовательности лексем (слов, токенов)естественного или формального языка с его формальной грамматикой. Результатом обычно является дерево разбора (синтаксическое дерево). Обычно применяется совместно с лексическим анализом. Wikipedia

[свернуть]

И так где же нам за столь короткое время найти такой объем мультяшек? Конечно же в каталоге/списке на каком нибудь интернет ресурсе. Ищем, выбираем ресурс с картинками.

Как пример можно взять мультяшки.ру выбираем вкладку «Персонажи» и открываем исходный код страницы. Нам важно что бы в теге <img> был атрибут с именем персонажа на данной картинке.Снимок

И так из данного тега мы имеем ссылку на картинку и имя персонажа. Далее нам понадобится программа для парсинга сайтов. Я использовал ДатаКол. Не буду подробно останавливаться на настройках всей программы. Рекомендую почитать статьи о XPATH и Регулярных выражениях. Наша задача заставить парсер пробежаться по всем страницам каталога и выцепить все теги <img> с персонажами. Замете, что на сайте помимо картинок с персонажами много и не нужного нам хлама, а по этому стоит внимательно изучить исходный код и понять в каких именно местах находятся нужные нам изображения и внести соответствующие настройки в парсер. Из следующих скриншотов все станет ясней.Снимок3Т.е. Мы вырезаем тег только из определенных мест в странице.Снимок2

Далее еще несколько скриншотов с настройками программы:

Снимок4

Строка в списке начальных URL означает что мы перебираем все такие страницы от 0 до 29Снимок5

 «Возвращать полное значение» — означает что файл будет сохранен на диск с тем же именем что и в исходном коде HTML страницы. И так, ставим экспорт в txt формат, сохраняем и запускаем парсинг. Работа в 4 потока Снимок6+ быстрый интернет у меня заняла примерно 12 секунд и я получил 414 картинок. Помните, что имя Арнольд не означает, что файл тоже будет называться Arnold.jpg скорее всего будет совсем наоборот, но об этом позже.

 

Не отформатированный файл TXT с кучей не нужных нам атрибутов. Открываем его текстовым редактором и удаляем все, что нам не нужно, переносим строкиСнимок7 и т.д. С четырех стами тегов еще можно кое как справится в ручную. Ну а если вы напарсили 1500 и более строк длинной в 1000 символов каждая? По этому я рекомендую Вам обзавестись таким полезным инструментом как NotePad++ а я расскажу пару примеров редактирования текста с помощью регулярных выражений. 

И так начнем: Выделяем текст → Правка → Работа со строками → Убрать пустые строки.

То же самое можно сделать и с пробелами. Уже приятнее смотреть. Дальше к примеру у нас есть в каждом теге <img> атрибут width:145px вот только в каждой строке он равен разным значениям, а посему просто так воспользоваться инструментом «Найти и заменить» не получится. И так выбираем Найти и заменить ставим Снимок8галочку «Регулярн. Выражен.» вводим в поиск «width:…..» жмем поиск. На я зыке регулярных выражений точка означает любой символ. Т.е. Мы сказали после «width:» выделить еще пять следующих символа.

Так как у нас один тег <img> равен одной картинке то закрытие этого тега спокойно можно заменить на перенос строки тем же образом: Поиск «</img>» заменить на «\r» Так же у вас могут оказаться лишние нижние подчеркивания и простой заменой их не удалить так как в названиях файлов то же они встречаются. «\b» — означает начало слова. Посмотрите на скриншоте выделены только те подчеркивания с которых начинается слово.Снимок9

\B конец слова.
^ — начало строки.
$ конец строки.
\tтабуляция
\sпробел
\Sне пробел
\dчисло

И еще куча куча значений простых и сложных. К примеру бывают и такие сложные:

/(?:(?:\s*[+>~,]\s*|\s+)|[^:+>~,\s\\[\]]+(?:\\.[^:+>~,\s\\[\]]*)*)|\[(?:[^\\[\]]*(?:\\.[^\\[\]]*)*|[^=]+=~?\s*(?:»[^\\»]*(?:\\.[^»\\]*)*»|'[^\\’]*(?:\\.[^’\\]*)*’))\]|:[^\\:([]+(?:\\.[^\\:([]*)*(?:\((?:[^\\()]*(?:\\.[^\\()]*)*|»[^\\»]*(?:\\.[^»\\]*)*»|'[^\\’]*(?:\\.[^’\\]*)*’)\))?/g

И так, у меня получилось 2 файла TXT где в одном имена, а в другом названия файлов с изображениями. Причем строки в них соответствуют порядковому номеру. Правда строк у меня получилось 489 а файлов только 414 скорее всего этих недостающих изображений просто нет на ресурсе, но это дело я поправлю не большим скриптом который просто вычеркнет из файла те имена которых изображений нет. Плюс для себя я переименую каждый Снимок10файл в порядковый номер строки которой он соответствует. Хочу сказать, что написать такой скрипт на любом языке программирования не составит большого труда и займет он не более 20-30 строк кода, а то и меньше.

Далее пакетная обработка файлов в PhotoShop. Для начала необходимо создать сценарий по которому будут обрабатываться наши картинки. Окно → Операции → Добавить новую. Затем кнопку записи. После этого момента все ваши действия записываются как бы в шаблон. Когда завершите нажмите стоп.Снимок11

Далее идем в вкладку Файл → Сценарии Обработчик изображений. Выбираем папку с исходными изображениями и папку для сохранения обработанных. Ставим галочку на «Выполнить операцию» и выбираем созданную вами операцию. Жмем выполнить. Готово. И так мы имеем набор из герой/имя картинки в нужном нам формате и 400+ изображений отредактированных в PhotoShop. Изначально лучше выбирать интернет ресурсы где все изображения одинаковые по размерам что бы на последнем этапе все получилось более менее в одном масштабе. И помните, что на каждое изображение в интернете у кого то есть авторские права.

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *