Парсер картинок с 80% сайтов интернета

Тема в разделе "Бизнес и свое дело", создана пользователем avtostopshik, 25 апр 2018.

Статус обсуждения:
Комментирование ограничено.
  1. 25 апр 2018
    #1
    avtostopshik
    avtostopshik ЧКЧлен клуба (А)
    Привет всем! Представляю вам свой новый шаблон по парсингу картинок с большинства сайтов интернета.

    Для кого будет полезен этот шаблон:
    1. Для владельцев сайтов
    2. Арбитражникам

    3. SMM-щикам
    4. И всем всем всем, кому нужны в работе фотографии.


    ⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛

    Парсер-картинок-2.jpg

    ⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛​

    Являясь владельцем сайтов и добавляя много фотографий на них, я задумался о том, что было бы хорошо автоматизировать скачивание фотографий. Но те парсеры, которые мне попадались, не устраивали в полной мере - то фотографии парсили кашей (в одной папке были тысячи фотографий), то парсили дублями (программы не имели чёрных списков ссылок). То вообще фотографии скачивали битыми, из-за чего некоторые приходилось выкидывать. А отсутствующая многопоточность других парсеров вообще разачаровывала, так как хотелось и качественно спарсить, и быстро.

    И тогда я решил написать свой парсер, который полностью бы меня устраивал по всем параметрам и делал свою работу качественно, быстро и на полном автомате. Так и родился этот шаблон, который я и хочу предложить всем желающим, кто также работает с фотографиями не зависимо от того, есть у вас сайты, или нет. Этот шаблон подойдёт всем, кому нужны фотографии. А главное - чтобы начать пользоваться моим парсером, вам не нужны специальные познания в html и в XPath. Всё необходимое я объясняю в видео уроках к шаблону, так что разобраться сможет даже тот, кто никогда про html и в XPath не слышал:)

    ⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛

    В результате написания многие нюансы были учтены, была реализована настоящая многопоточная работа и наполняемость сайтов пошла в десятки раз быстрее.
    К слову о многопоточности - на самом деле сделать её было не просто, так как я замечал, что через некоторое время работы, если не сразу, потоки начинали конфликтовать между собой и скачивать фотографии с разных страниц сайтов-доноров в одну папку. Встречая у аналогов подобное, я постарался построить логику своего шаблона таким образом, чтобы все потоки в парсере работали параллельно друг другу и никогда не пересекались. Чтобы каждый поток скачивал фотографии строго в свою папку и не лез к другому. В результате, когда многопоток был готов, парсинг фотографий стал идти в разы быстрее, сохранив при этом качество работы.

    ПК-3.jpg

    ⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛

    6 режимов работы. В парсере реализовано 6 режимов работы, которые пригождаются в различных ситуациях при работе с ссылками и фотографиями. Что это за режимы? Это парсинг ссылок в двух вариантах, парсинг картинок также в двух вариантах, генерация ссылок и очистка чёрного списка ссылок от ненужных url'ов на случай, если вам вдруг захотелось перекачать фотографии ещё раз, или если вы качаете по тем же url адресам второй раз, но уже с другими параметрами.

    Два варианта парсинга ссылок и фотографий. Эти варианты произошли от двух основных типов сайтов:
    1) Самый распространенный тип сайтов, это где фотографии для одной новости находятся на одной странице. Таких сайтов большинство и это самые простые в плане структуры сайты, не нагромождённые различными скриптами, мешающими навигации. Парсинг с таковых проходит быстро и легко.
    2) Второй тип сайтов - это те сайты, у которых каждая фотография имеет свой отдельный URL. К таким сайтам приходится применять совсем другой подход при парсинге и учитывать их особенности. Но, к счастью, шаблон умеет работать и с такими сайтами. Сайтов второго типа меньше, но всё же попадаются.​

    Шаблон реализован полностью на C#. Что это означает? Означает, что шаблон лёгкий и стабильный. А ещё: написание на C# позволяет реализовывать самые сложные решения, получая в итоге именно тот функционал, который и задумывали.

    Навигация по XPath. Нахождение и парсинг элементов (ссылок и фото) по url адресам реализовано с помощью XPath. Что такое XPath? Это язык навигации по html странице в браузере. Сам язык прост в освоении, составлять пути также легко. Однако в видео уроках к шаблону я показываю, как можно находить пути до ссылок и фотографий совершенно не зная этого языка, используя лишь подручные элементы.

    Парсит через GET запросы. Думая над тем, как ещё можно ускорить парсинг, кроме многопоточности, я вспомнил о том, что парсинг GET запросами также даёт заметную прибавку к скорости и незамедлительно реализовал и этот способ в шаблоне. Теперь, кроме обычного парсинга через браузер, вы можете парсить ссылки и фото не открывая браузер - используя только GET запросы. А так как мы используем навигацию с помощью XPath, то для парсинга GET запросами понадобилась библиотека HTML Agility Pack, которая идёт в комплекте с шаблоном.

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

    Удобная генерация ссылок. Ещё один полезный инструмент при парсинге. Бывает так, что у сайта-донора очень много страниц одной категории. Их может быть как 10-20, так и 200-300 и даже больше. А прежде чем начать парсить фото, нам нужно собрать все ссылки с категории, и тут на помощь приходит инструмент генерации ссылок: чтобы вручную не кликать по всем 200-300 страницам, мы просто вставляем нужную ссылку в шаблон и указываем, до какого числа сгенерировать страницы. Всё, дальше парсер сгенерирует url адреса сам, и по получившемуся списку уже можно выпрашивать ссылки на страницы с фотографиями. Чтобы было понятней о чём речь, смотрите последний скрин настроек парсера.

    Фильтр по разрешению фотографий. Раньше было так: когда пасрер завершал работу, я брался за проверку скачанного архива фотографий и обнаруживал, что часть фоток слишком маленького разрешения. Мне такие фотографии были не нужны и приходилось специально их отыскивать и удалять. С внедрением же данного фильтра необходимость в этом отпала сама собой - теперь достаточно указать, с каким минимальным разрешением выпаршивать фотографии, и все фото меньшего разрешения просто не будут попадать в папки с фотографиями. Причём данная опция принимает несколько разных значений: к примеру, запись 600x400 означает, что нельзя парсить фотографии, у которых высота меньше 600 пикселей, а ширина - меньше 400. Запись 640 означает, что ни одна из сторон не должна быть меньше 640 пикселей.

    Проверка фотографий на целостность - 100% целых фотографий. Также при использовании других парсеров замечал, что фотографии не всегда были целыми. Нет нет, да и попадались фотки битые, которые просто приходилось выкидывать. Бывало что целые наборы битых фотографий выкидывал на свалку. А ведь это могли быть отличные фото для работы, для сайтов, но увы... И чтобы избежать подобного в своём парсере, для него я реализовал проверку каждой фотографии на целостность, и если фотография окажется битой, шаблон удалит её и перекачает заново. Таким образом я могу утверждать, что все 100% скачанных фотографий были целыми, так как выкачав уже около 300Гб фотографий, я не увидел ещё ни одной битой.

    Ведение чёрного списка ссылок. Ещё одной важной функции мне также не хватало в других парсерах - чёрного списка ссылок. Зачем он нужен? Чтобы не скачивать дважды с одной страницы одни и те же фотографии. Поэтому в своём парсере, прежде всего, я реализовал работу именно с чёрным списком. Теперь url адрес, с которого шаблон скачает фотографии, будет занесён в чёрный список и повторно с него не будут выпаршены фотографии.

    Структурированное сохранение фотографий. Самая важная часть процесса. Разрабатывая парсер, я преследовал цель не просто скачивать фото, а скачивать их так, чтобы не приходилось потом ещё и руками их перелопачивать. Объясню на примере: допустим, в одной папке мы выбрали, что должно быть фотографий минимум 15 (см. скрин настроек, опция "Минимум фотографий в наборе"). Есть сайт, у которого на одной странице обычно ~15 фото. Шаблон зайдёт на эту страницу и скачает 15 фотографий в одну папку с порядковым номером. После возьмёт следующую ссылку и перейдёт на неё. Однако тут следует добавить: перед скачиванием, парсер всегда проверяет сколько фотографий на странице, и если их меньше, чем должно быть в одной папке, то начнёт проверять уже существующие папки для этой категории и считать, сколько в каждой папке фотографий. Если в какой-то из папок фотографий окажется меньше, чем должно быть (15), то в эту папку шаблон и начнёт скачивать фотографии. А если на странице сайта-донора фотографий от 15 и больше, то тогда проверку делать не будет, а просто создаст новую папку и скачает в неё все фото.
    Перед скачиванием парсер создаёт папку с названием категории, и в ней папки с порядковыми именами (к примеру, начиная с 1 и дальше 2,3,4 и так далее). В результате мы получаем скачанные фотографий в удобной структуре. Для лучшего понимания, как работает парсер, смотрите демонстрационное видео внизу описания складчины.

    Продуманная система обработки ошибок и непредвиденных ситуаций. Путь XPath был составлен не правильно? Парсер наткнулся на не существующую страницу? Появилась непредвиденная ошибка во время работы шаблона? Внезапно пропала связь с интернетом, и парсер не успел завершить свою работу? Во всех этих и других случаях вам безпокоиться не о чем. В большинстве случаев парсер сам обрабатывает непредвиденные ситуации, не требуя участия пользователя в его работе. Пример: если вдруг во время парсинга фотографий произошла ошибка, то ссылка-донор будет возвращена обратно в список ссылок-доноров. из чёрного списка будет убрана, а те фотографии, что парсер успел скачать, будут удалены. Таким образом ни одна ссылка не затеряется, а каждая фотография обязательно будет скачана со второй попытки.

    Поддержка работы с прокси и юзерагентами. Бывает так, что некоторые особо крупные сайты запрещают доступ к своему содержимому, если заподозрят в том, что к их страницам обращается робот. Благо таких сайтов очень мало, и всё же они встречаются. И вот чтобы минимизировать вероятность возникновения подобных ситуаций, на помощь приходят прокси и юзерагенты. Где и какие брать прокси - тут на ваше усмотрение, я думаю можно даже пакетные прокси использовать. А вот юзерагенты я предоставляю в комплекте с шаблоном. Зачем нужны юзерагенты? Если кратко, то каждый новый юзерагент создаёт видимость, что на сайт пользователь заходит каждый раз с нового устройства. Таким образом с ситуациями, когда сайт закрыл от нас содержимое, будет минимум, если вообще кому-то доведётся с ними столкнуться.

    ⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛

    Почему именно 80% сайтов может парсить шаблон, а не 100%? Дело в том, что кроме однотипных, есть ещё и уникальные сайты со своими особенностями и нюансами, предусмотреть все из которых невозможно. К примеру, на некоторых сайтах нельзя парсить с мобильных юзерагентов - для мобильных юзерагентов всегда будут открываться только мобильные версии сайта. Эту проблему я решил, составив список юзерагентов для парсера исключительно из десктопных. А вот как быть с сайтами, предлагающими подтвердить, что вам есть 18? С сайтами, где нужно нужно регистрироваться, чтобы скачивать изображения? С сайтами, предлагающими делать какие-либо дополнительные действия для просмотра фото, но всегда разные, отличающиеся от сайта к сайту? Все эти сайты составляют оставшиеся 20% сайтов интернета (и это самые смелые подсчёты, вероятно в процентном соотношении их гораздо меньше) которые мы трогать не будем. Благо, всё, что нам нужно, мы легко находим и скачиваем со всех остальных сайтов.

    Шаблон продаю в таком виде, в каком он есть. То есть я не гарантирую каких-то обновлений по личным запросам пользователей, так как поле для улучшений в данном случае безконечное, а такой цели, как постоянно добавлять в шаблон новые функции - нет. В то же время это не означает, что я ничего и не добавлю. Я всегда рад новым предложениям и конструктивной критике. Если предложенное вами будет востребовано большинством пользователей, то скорее всего я добавлю это в шаблон.

    ⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛

    ★★★ Скрины настроек и видео демонстрации работы шаблона. ★★★
    1. Главная.png
    2. Парсинг ссылок.png
    3. Парсить картинки.png
    4. Генерировать ссылки.png
    5. Удалять ссылки.png

    Содержимое этого видео представляет из себя вырезки из видео уроков к шаблону, в которых я убрал озвучку, наложил музыку и увеличил скорость в 2 раза. Цель этого видео показать, как работает шаблон, как скачивает фотографии и что на в результате получаем.

    ⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛


    А теперь пара слов о БОНУСЕ:

    Всем, кто поставит складчину в подпись или прорекламирует в 5 смежных темах, получит возможность на личную консультацию по поиску путей XPath на 30 дней, а также я смогу по вашим запросам составлять для вас пути на парсинг ссылок и фото на нужных сайтах-донорах также в течении 30 дней.
    Ссылку в подписи буду засчитывать, если она не мелким шрифтом будет написана.
    После рекламы складчины пишите в комментариях об этом и там же присылайте ссылки на рекламные посты, которые вы оставили в других складчинах.
    Поставившим складчину в подпись также нужно отписываться в комментариях.

    ⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛

    Шаблон написан полностью на C#, а значит он работает быстро и стабильно.

    Работает на версии Zennoposter 5.16.2.0, должен работать на более ранних, вплоть до 5.9.9.1. Шаблон без абонентской платы.

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

    Возможна привязка к Zennobox (+ 10$ к цене шаблона). Будет отдельная складчина.

    ⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤜⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛⤛

    Нужны проверяющие. Желающих проверить со статусом "Организатор" или "Модератор" прошу отписываться в комментариях о желании проверить.

    Для всех остальных: пишите любые вопросы в теме этой складчины - буду рад на них ответить:)
     
    Последнее редактирование: 25 апр 2018
    3 пользователям это понравилось.
  2. 25 апр 2018
    #2
    Dol-X
    Dol-X ЧКЧлен клуба
  3. 26 апр 2018
    #3
    Trenobol
    Trenobol ОргОрганизатор
    Проверяем ?;)
     
  4. 26 апр 2018
    #4
    avtostopshik
    avtostopshik ЧКЧлен клуба (А)
    Привет! Ок, подождём, если кто-нибудь надумает записаться.
     
Статус обсуждения:
Комментирование ограничено.

Поделиться этой страницей