Вы находитесь на странице: 1из 11

Проект на тему:Компьютерная интеграция

группа КСМ21/1
Голенищев Антон Олександрович

Парсер
Первый проект в списке – парсер сайтов. Это программа, которая
просматривает код веб-сайта и получает оттуда какую-то информацию.

Предположим, есть сайт «Авто риа». Мы можем сделать программу,


которая будет «как бы заходить» на Авто риа; просматривать объявления
из раздела «Продажа машин в Ураине » (через программный код на
страницах); и записывать в текстовый файл информацию из этих
объявлений.

Пусть скрипт пишет в файл ссылку на объявление, контактный телефон,


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

В тренировочно-образовательных целях необходимо всё сделать


максимально вручную, но без фанатизма. Поэтому используем модуль
requests для работы с сетевыми запросами (для получения кода сайта,
регистрации, авторизации). Библиотека BeautifulSoup понадобится для
разбора и выдергивания информации из HTML-кода сайта, который мы
получили с помощью requests.

Разработка парсера заставит разобраться с тем, что такое, зачем нужны и


как работают сетевые протоколы HTTP/HTTPS. Придётся выяснить, что
такое HTTP-запрос – из чего он состоит; как работать с GET, POST, PUT,
DELETE-запросами; чем они отличаются; как формировать заголовки
запросов. Предстоит покопаться со статус-кодами, URL-адресами,
схемами авторизации, сессиями, редиректами, прокси и куки-файлами.
Параллельно познакомиться с форматом JSON и вникнуть в
HTML/CSS-код, семантику и DOM-модель веб-страницы.
работа с сетевыми протоколами – это фундаментальные computer science
навыки, без которых называть себя полноценным программистом
немного не справедливо.

Мне кажется, пример с квартирами на Авто риа идеально подходит для


пробы пера. Поэтому попробуйте написать скрипт, который создаст файл
с информацией о всех машинах которые продают в твоем городе, по
цене, скажем, дороже 3 000 000 гривен.
На скелет подобного проекта можно нарастить мяса в виде подключения
базы данных, многопоточного выполнения или вообще превратить
парсер в пул Telegram-ботов, о которых мы и поговорим дальше.

Бот
Каждый мужчина должен посадить сына, вырастить дом и построить
дерево, а каждый питонист должен сделать хотя бы одного бота для
социальной сети или мессенджера.

Бот – это простой проект, но в тоже время, он даст новичку навыки


работы со сторонними библиотеками, асинхронностью и, что самое
главное, опыт работы со сторонним API.

Однако прежде придётся разобраться, что такое API, вникнуть в понятие


синхронности/асинхронности, потренировать понимание ООП, если
сделать бота классом, а не просто набором функций.

Масштабировать сложность проекта можно до бесконечности. Например,


прикрутить базу данных или заставить бота присылать уведомления,
когда изменяются цены в интернет-магазине. Если бот как-то
взаимодействует с файлами на компьютере, то придётся параллельно
освоить и работу с файловой системой.

В ходе разработки возникнут вопросы: как хранить в проекте секретные


данные (токены, пароли), и как разделить бизнес логику приложения.
Веcь код, отвечающий за работу непосредственно с площадкой, стоит
вынести в один модуль, а код обработки полученных данных в другой
модуль. Этим всё не ограничится. В процессе всплывёт ещё много других
подводных камней. А это ценный практический опыт, который нам и
нужен.
Загрузка (то есть деплой) бота на хостинг по типу Heroku или Google App
Engine – уже отдельная история, которая также прокачает твои
технические навыки.

Для Telegram рекомендую полностью асинхронный Aiogram.

В качестве альтернативы можно использовать модуль pytelegrambotapi.


Он попроще и поддерживает как синхронный, так и асинхронный режим
работы.

В случае с Discord ботами самым популярным является модуль


discord.py (c 9 000 звёзд на GitHub). Он асинхронный, хорошо
документирован и прост в освоении. По принципу использования и
написания кода похож на Aiogram и vkwave.

Если разобраться, как работать с одной из перечисленных библиотек, то


с другими проблем уже не возникнет. Этот принцип справедлив для
многих модулей и фреймворков не только языка Python. Об этом я ещё
скажу дальше.

Идея проекта попроще: бот, который по запросу присылает случайный


фильм из файла или БД.

Вариант посложнее: бот для учёта финансов. Пишешь ему сообщение


сколько денег потратил и на что. Он записывает всё в Google-таблицу, БД
или Excel-таблицу и ведёт какую-нибудь статистику.

Можно сделать бота, который следит за ценами. Отправляешь ему ссылку


на товар. Если на этот товар появляется скидка, бот присылает
уведомление.

В случае с ботами всё ограничивается лишь вашей усидчивостью и


фантазией. Ковыряйтесь на здоровье!

Веб-приложение (интернете магазин)


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

В качестве усложнения проекта можно добавить систему оплаты,


скидочные промокоды, раздел с лидерами продаж, кеширование,
отправку чека на почту или рекомендательную систему, основанную на
in-memory СУБД Redis или вообще модели машинного обучения.

А если вы совсем без тормозов, то прикрутите REST API сайта. Для этого
потребуется дополнительно вникнуть в вопросы сериализации
JSON-объектов, работе с сетевыми протоколами и прочему.

Разработка веб-сайта познакомит вас с паттерном проектирования MVC


(модель-представление-контроллер), HTML/CSS и, возможно, JavaScript
кодом.

Основываясь на своём опыте, скажу, что для освоения веб-разработки


лучше варианта чем Django нет. Django большой фреймворк, в котором по
умолчанию есть модули для всего, что я перечислял выше. Кроме того, он
базируется на классическом, упомянутом ранее шаблоне MVC (правда там
он называется MVT, но не суть).

Изучая Django придётся научиться работать с маршрутизацией, моделями


данных, миграциями, контроллерами, шаблонизаторами HTML и ORM (это
специальная штука, которая позволяет работать с базой данных без SQL
запросов, а через питоновские объекты). Много предстоит поработать с
ООП, потому что все модели данных представлены классами. Часто
приходится использовать наследование.

Важно, что практически все современные популярные питоновские и не


только фреймворки устроены точно также, как Django. Если вы
разберётесь с Django, понять, как работает PHPшный Laravel, Jav'овый
Spring или Ruby on Rails не составит труда.

Django ORM практически идентичен Eloquent из Laravel, шаблонизаторы


тоже плюс/минус у всех похожи, модели и миграции отличаются чисто
косметически.
Потом, для расширения кругозора, можно ещё взглянуть на
микрофреймворк Flask.

Выбирайте предметную область, которая вам интересна. Любите


компьютерные игры – создаём магазин игр, тащитесь по топовому шмоту
– вот вам магазин одежды. Короче стараемся получить максимум
удовольствия. И едем дальше.

GUI
Разработка приложений с графическим интерфейсом не является
основной сферой применения Python. Однако это не значит, что GUI на
нем не пишут совсем.

GUI на PyQT5

В качестве тренировочного опыта, лично я бы остановился на создании


Аудио проигрывателя для компьютера. На функционал не скупимся.
Добавляем возможность работать с плейлистами, управление
воспроизведением (старт, стоп, пауза, перемотка), стоит добавить
анимацию звуковой дорожки, ползунки громкости и т.д. Про уникальный
дизайн также не забываем.
Для графики рекомендую использовать фреймворк PyQt, а для работы с
аудио библиотеку Pygame.

PyQt – более фундаментальный и сложный графический фреймворк, чем


tkinter или pysimplegui. Поэтому обратить внимание стоит именно на него.
Тут по аналогии с MVC веб-фреймворками. Разберись с базовыми
принципами и дальше проблем не будет. Под базой здесь я подразумеваю
концепцию событий (сигналов) и обработчиков событий (слотов).

PyQt также поможет прокачаться в понимании ООП, потому что все


графические объекты представлены классами, а наследование
используется повсеместно.

Внешний вид элементов в PyQt задаётся в графическом Дизайнере


ручками или с помощью CSS-свойств в коде, что делает разработку
проще.

По PyQt в Интернете много уроков, есть даже отдельные книги, что также
плюс.
Отмечу, что многие графические приложения основаны на шаблоне
проектирования MVP (модель-представление-представитель). Это
вариация шаблона MVC на котором базируются веб-приложения.

Pygame – простая и популярная библиотека для работы с мультимедиа


объектами. Позволяет работать с аудио, видофайлами, а если в ней
хорошо разобраться, можно и 2D игру сделать.

Data Science-приблуды
Сферы искусственного интеллекта и Data Science занимают большую
часть сообщества Python-разработчиков. Да, проекты подобного рода
специфичны и вникать в них всем необязательно. Но не упомянуть о них
я не мог.
Анализ данных – гигантская область, в которую входит математика,
computer science и программирование. Разбор всех этих тем выходит за
рамки данной статьи и заслуживает отдельного цикла.

Как по мне интересный проект – анализ настроения пользователя по его


комментарию на форуме, или на вполне конкретном сайте, например,
Кинопоиске. Оригинальностью проект не блещет. Но покопаться придётся.

Это задача из сферы обработки естественного языка (Natural Language


Processing или NLP). Для работы с NLP стоит обратить внимание на
библиотеки: NLTK, TextBlob, spacy, Gensim и CoreNLP. Пара слов о каждой.

NLTK – основная библиотека для NLP, позволяет обрабатывать тексты


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

TextBlob – обёртка над NLTK, которая предоставляет простой интерфейс


для этой библиотеки. Иногда ею просто удобнее пользоваться.

spacy – модуль, который помогает решать спектр задач: от определения


частей речи и выделения именованных сущностей, до создания
собственных моделей анализа.

Gensim – библиотека тематического моделирования. Позволяет


обрабатывать тексты, работать с векторными моделями слов (например,
Word2Vec или FastText) и создавать тематические модели текстов.

CoreNLP – модуль для распознавания свойств текста.

Пока далеко не ушли от кино. Вспомним одну из классических задач


машинного обучения – разработку системы рекомендаций.
Рекомендательная система – это программа, которая будет угадывать
предпочтения пользователя в плане выбора фильма. Для её написания
придется научиться работать с такими базовыми библиотеками для
любого data scientist'а как Pandas, Numpy, Matplotlib и Scikit.

Pandas нужен для обработки данных, NumPy для математических


вычислений, Matplotlib позволяет визуализировать данные, то есть
строить диаграммы и графики, а Scikit содержит модели машинного
обучения и инструменты для работы с ними.
Следующий большой класс задач – компьютерное зрение. Не мудрствуя
лукаво, создаём приложение, которое по фото или видео определяет
наличие/отсутствие маски на лице человека. Самая ходовая библиотека
компьютерного зрения – это OpenCV. Её и предстоит изучать. Также стоит
ознакомиться со сверточными нейронными сетями и концепцией deep
learning в целом. Обучающие data-сеты для любого из указанных
проектов можно спокойно найти в Интернете.

В этом топе, как и в большинстве интернет-подборок, не оказалось из


рядя вон уникальных проектов. Почему так? Почему большинство
python-каналов переполнено роликами по написанию однотипных ботов,
парсеров и скриптов? Все просто! Все перечисленное – это базовые
вещи, отвечающие за понятные базовые навыки, через развитие которых
необходимо пройти каждому python -разработчику.

Чтобы найти что-то по-настоящему оригинальное, предлагаю поделиться


вашими идеями интересных pet-проектов в комментариях.

Знаете, учиться всегда тяжело. А по началу очень тяжело. Но я в тебя


верю! Господь тоже в тебя верит! Но на всякий случай, для подстраховки,
он создал тебе в помощь Google. Не забывай про это.
Доклад был сделан для большего познания в сфере (компютерной
интеграции),а также развития навыком в даном направлени,я очень
надеюсь что данный доклад поможет новичкам болие тесно
познакомиться с даным докладом, та дальше двигаться в этом
направлении,спасибо за внемание!

Вам также может понравиться