Питон для начинающих с нуля: изучаем python дома
Содержание:
Синтаксис питона
Для того, чтобы было удобнее работать программистам с языком Python был придуман достаточно простой синтаксис. Приведу основные принципы.
- Конец строки обозначает завершение инструкции. Не нужно специально обозначать точкой с запятой или какими — то другими символами;
- Для того, чтобы отделить вложенные блоки друг от друга, используется отступ при помощи табуляции. Как правило, это четыре пробела;
- Основная инструкция заканчивается двоеточием. После нее под строкой располагается вложенная инструкция или блок с отступом в четыре пробела.
Есть еще некоторые специальные случаи, которые лучше рассмотреть отдельно.
Известные пакеты и инструменты
Для веб-скрэпинга нет универсального решения, поскольку способ, с помощью которого хранится на каждом из веб-сайтов обычно специфичны. На самом деле, если вы хотите собрать данные с сайта, вам необходимо понять структуру сайта и, либо создать собственное решение, либо воспользоваться гибким и перенастраиваемым вариантом уже готового решения.
Изобретать колесо здесь не нужно: существует множество пакетов, которые скорее всего, вам вполне подойдут. В зависимости от ваших навыков программирования и предполагаемого варианта использования вы можете найти разные более или менее полезные для себя пакеты.
1.1 Проверяем параметры
Чтобы вам было проще проверять HTML-сайт, воспользуйтесь опцией инспектора в вашем вэб-браузере.
Раздел веб-сайта, который содержит мое имя, мой аватар и мое описание, называется (любопытно, что Medium называет своих писателей героями:)). Класс <h1>, который содержит мое имя, называется , а описание содержится в описании героя <p> классом .
Вы можете более подробно познакомиться с HTML-тэгами и различиями между классами и id здесь.
1.2 Скрэпинг
Существует отдельная готовая к использованию библиотека для извлечения данных под названием Scrapy. Кроме извлечения HTML, этот пакет располагает большим количеством функций, таких как экспорт данных в различные форматы, создание лог-файлов и т.д. Это достаточно гибкий и настраиваемый вариант: запуск отдельных скрэперов на разных процессах , отключение cookies (некоторые сайты используют cookies для идентификации ботов) и установка задержек загрузки (веб-сайт может быть перегружен из-за огромного количества запросов на сканирование). Его также можно использовать для извлечения данных с помощью API. Однако для начинающих программистов пакет, скорее всего, будет несколько сложноват: вам придется прочитать руководства и разобраться с примерами, прежде чем вы сможете приступить к работе.
В моем случае я воспользовалась готовым методом «из коробки»: я просто хотела извлечь ссылки со всех страниц, получить доступ по каждой ссылке и извлечь из нее информацию.
1.3 BeautifulSoup с библиотекой Request
BeautifulSoup — это библиотека, позволяющая сделать синтаксический разбор (парсинг) HTML-кода. Кроме того, вам также потребуется библиотека Request , которая будет отображать содержимое URL-адреса. Однако, вы также должны позаботиться и о решении ряда прочих вопросов, таких как обработка ошибок, экспорт данных, распараллеливание и т.д.
Курсы программированияPython для про
01.
«Профессия Python-разработчик» от Geekbrains
Длительность курса: 12 месяцев. Учебную программу можно сократить, в зависимости от предварительной подготовки.Стоимость: 150 000 руб. Возможна рассрочка — 12 500 руб./мес.На кого рассчитана программа: программисты, имеющие базовые навыки.Отзывы о курсах GeekBrains: читать на этой странице.
Чтобы сократить длительность обучения, нужно пройти тестирование, набрав от 25 балов. Авторы учебной программы рекомендуют пройти 4 подготовительных курса для новичков без опыта и знаний. Во время обучения студенты пройдут более 15 курсов. За год GeekUniversity выпускает профессиональных разработчиков.
На курсе студенты научатся:
- Работать с алгоритмами, структурами данных и библиотеками.
- Работать с HTML/CSS, JavaScript, Django Framework.
- Создавать клиент-серверные приложения.
- Разрабатывать графический интерфейс приложений.
- Использовать шаблоны и разрабатывать архитектуру программ.
- Создавать и тестировать программы любой сложности.
- Писать «чистый» код.
Нюансы:
- Некоторые материалы курса могут быть не актуальными, из-за предварительной подготовки студентов.
- Подготовительные курсы стоят 12 500 руб. (бесплатно первым 10 студентам).
02.
Онлайн-курс «Программирование на Python» от Фонда развития онлайн-образования
Длительность курса: 6 месяцев. 6-8 часов в неделю.
Стоимость: 50 000 руб. Возможна рассрочка на 6 или 12 месяцев с переплатой.
На кого рассчитана программа: джуниор разработчики на Python и других языках.
Для обучения потребуется опыт программирования. После каждого блока лекций студентов ждет курсовой проект. Так студенты разработают асинхронный сервер, игру, бота, нейронную сеть и сверстают stackoverflow. Преподаватели проверяют домашние задания и помогают с вопросами. Выпускники получают сертификат.
Учебная программа разбита на 4 блока:
- Основы языка Python и написание кода.
- ООП и паттерны проектирования.
- Разработка веб-сервисов на языке Python.
- Программирование на Python для Data Science.
Нюансы:
- Покупая курс в рассрочку, студент переплачивает до 32%.
- Курс больше рассчитан на программистов, работающих с другим языком разработки, которые желают расширить сферу своей деятельности.
03.
«Курс программирования на Python (продвинутый уровень)» от Фоксфорд
Длительность курса: 8 месяцев. 30 занятий по 3 ак. часа.
Стоимость: 15 990 руб. Доступна рассрочка — 2 000 руб./мес.
На кого рассчитана программа: люди с базовыми знаниями Python или других языков разработки.
После обучения ты можешь приступить к изучению машинного обучения, разрабатывать игры и веб-сервисы. Для поступления на курс тебе нужно иметь базовые знания программирования на любом языке. Преподаватели онлайн-курса проверяют домашние задания и помогают с вопросами. Ты можешь посмотреть первое занятие бесплатно на официальной странице курса.
Учебная программа для разработчиков состоит из 4 модулей:
- Основы программирования на Python.
- Алгоритмы и их реализация в Python-разработке.
- Объектно-ориентированное программирование.
- Продвинутое использование Python.
Нюансы:
Большая загрузка: одно занятие длится 3 академических часа, а в неделю может быть до 8 практических заданий.
04.
Очное обучение «Python. Продвинутый курс» от Luxoft Training
Длительность курса: 3 дня по программе на 20 обучающих часов. 2 дня по программе на 12 часов.
Стоимость: 13 900 руб. — 12-часовой курс. 23 500 руб. — 20-тичасовой курс. Обучение Python в Киеве — 3 700 грн.
На кого рассчитана программа: люди, имеющие знания в программировании и скриптовых языках. Опыт работы с Python.
Формат обучения — очный. Студенты могут записаться на обучающий курс по Python в Москве и Киеве. Преподаватели в двух странах разные, но оба имеют 15+ лет опыта. Цель учебного курса — изучить продвинутые возможности языка Python. Выпускники получают сертификат от Luxoft Training.
- Лучшие практики разработки на Python.
- Функция, как отдельный объект.
- Жизненный цикл объектов.
- Работа с объектом и ресурсами.
- Итератор и генератор в Python.
Нюансы:
- Учебная программа дает основные углубленные навыки, уделяя мало внимания современным возможностям языка.
- Одно занятие длится 6-8 часов.
Шаг 3 — HTML и CSS
Созданный нами сайт выглядит не очень красиво. Что нужно использовать, чтобы улучшить его? Конечно же, HTML и CSS. Они лучше всего подходят для этой задачи. Если вы разбираетесь в веб-разработке, вы можете создать новый файл .html с нуля. Но если вы не умеете это делать, в Интернете существует немало платформ для этого. Найдите наиболее подходящую для вас.
Теперь мы хотим, чтобы программа возвращала не простой текст, а конкретные html-страницы, которые мы создали. Для этого нужно импортировать ещё один класс, render_template. Тогда наша функция должна возвращать, чтобы мы видели конкретную html-страницу по этому маршруту.
#Import dependenciesfrom flask import Flask, render_template#Create instance of Flask Appapp = Flask(__name__)#Define Route and Contant of that page@app.route("/")def home(): return render_template("home.html")#Define 2nd Route and Content@app.route("/blog")def about(): return render_template("blog.html")#Running and Controlling the scriptif (__name__ =="__main__"): app.run(debug=True)
Для HTML — все файлы .html, которые вы вызываете, должны содержаться в папке под названием в вашей рабочей папке.
Для CSS — вам нужно создать папку и добавить в нее папку , а уже потом добавить в неё ваши файлы .css.
Какую библиотеку выбрать
Теперь можно подвести итоги и определиться с выбором библиотеки.
Гибкость
Архитектура Scrapy запрограммирована так, чтобы было удобно корректировать промежуточное программное обеспечение и добавлять свои функции. С помощью такого нюанса можно сделать приложение более гибким. Также с помощью Scrapy одна программа легко внедряется в другой проект. Для крупных проектов – идеальный выбор для программирования. Он предоставит прокси, конвейер информации.
Если приложение небольшое, не является высокоуровневым проектом, то можно выбрать Beautiful-Soup для решения задачи. С его помощью можно сделать код гибким. Если человек только изучает программирование и разрабатывает парсер, то Beautiful-Soup – идеальный вариант.
Selenium тоже имеет хорошую гибкость, особенно если речь идёт о работе с JavaScript на сайте. Но объём информации должен быть небольшим.
Производительность
Scrapy – наиболее скоростная из всех библиотек.
Beautiful-Soup сравнительно медленно решает отдельную задачу, но за счёт многопоточности легко обходит данную проблему. Но вебмастеру надо владеть этой технологией.
Selenium тоже быстро обрабатывает данные, но не так молниеносно, как Scrapy.
Экосистема
Scrapy обладает отличной экосистемой, библиотека позволяет применять прокси, VPN для автоматизации процессов. Поэтому фреймворк желательно использовать для крупных проектов. Приложение может выполнять запросы с различных прокси-адресов.
Beautiful-Soup – у библиотеки масса зависимостей. Фактически фреймворк не может работать самостоятельно. Это серьёзный минус.
Selenium – имеет достойную экосистему, но недостаток в том, что в базовом функционале нельзя применять прокси.
Распространенные ошибки
3.1 Check robots.txt
Правила скрэпинга веб-сайтов можно найти в файле robots.txt. Вы можете найти его, написав слова «robots.txt» после имени домена, например так: . Эти правила определяют, какие части веб-сайтов не могут быть автоматически извлечены или как часто боту разрешено запрашивать данные со страницы. Большинство не заботятся об этих правилах, но все же постарайтесь хотя бы почитать их, даже если вы и не планируете следовать им.
3.2 HTML может быть злом
HTML-теги могут содержать идентификатор (id), класс или сразу оба этих элемента. Идентификатор (т.е. id) HTML описывает уникальный идентификатор, а класс HTML не является уникальным. Изменения в имени или элементе класса могут либо сломать ваш код, либо выдать вам неправильные результаты.
Есть два способа избежать, или, по крайней мере, предупредить это:
• Используйте конкретный идентификатор , а не , поскольку он с меньшей вероятностью будет изменен
Проверьте, не возвращается ли элемент значение None.
Однако, поскольку некоторые поля могут быть необязательными (например, в нашем HTML-примере), соответствующие элементы не будут отображаться в каждом списке. В этом случае вы можете подсчитать процентное соотношение частоты возврата None конкретным элементом в списке. Если это 100%, вы, возможно, захотите проверить, было ли изменено имя элемента.
3.3 Обмануть программу-агент
Каждый раз, когда вы посещаете веб-сайт, он получает информацию о вашем браузере через пользовательский агент. Некоторые веб-сайты не будут показывать вам какой-либо контент, если вы не предоставите им пользовательский агент. Кроме того, некоторые сайты предлагают разные материалы для разных браузеров. Веб-сайты не хотят блокировать разрешенных пользователей, но вы будете выглядеть подозрительно, если вы отправите 200 одинаковых запросов в секунду с помощью одного и того же пользовательского агента. Выход из этой ситуации может заключаться в том, чтобы сгенерировать (почти) случайного пользовательского агента или задать его самостоятельно.
3.4 Время ожидания запроса
По умолчанию Request будет продолжать ожидать ответ в течение неопределенного срока. Поэтому рекомендуется установить параметр таймаута.
3.5 Я заблокирован?
Частое появление кодов состояния, таких как 404 (не найдено), 403 (Запрещено), 408 (Тайм-аут запроса), может указывать на то, что вы заблокированы. Вы можете проверить эти коды ошибок и действовать соответственно.
Кроме того, будьте готовы обработать исключения из запроса.
3.6 Смена IP
Даже если вы рандомизировали своего пользовательского агента, все ваши запросы будут отправлены с одного и того же IP-адреса. Это вполне нормально, поскольку библиотеки, университеты, а также компании имеют всего несколько IP-адресов. Однако, если очень много запросов поступает с одного IP-адреса, сервер может это обнаружить.
Использование общих прокси, VPN или TOR может помочь вам стать незаметным;)
Если вы используете общий прокси-сервер, веб-сайт увидит IP-адрес прокси-сервера, а не ваш. VPN соединяет вас с другой сетью, а IP-адрес поставщика VPN будет отправлен на веб-сайт.
3.7 Ловушки для хакеров
Ловушки для хакеров — это средства для обнаружения сканеров или скреперов.
Такими средствами могут быть «скрытые» ссылки, которые не видны пользователям, но могут быть извлечены скреперами и/или вэб-спайдерами. Такие ссылки будут иметь набор стилей CSS, их можно смешивать, задачая цвет фона или даже перемещаясь из видимой области страницы. Как только ваша программа посещает такую ссылку, ваш IP-адрес может быть помечен для дальнейшего расследования или даже мгновенно заблокирован.
Школа программирования TechRocks
Курсы от школы TechRocks
TechRocks предлагает быстрый ознакомительный курс по Python — «PythonBoost». Вы изучите основы языка и получите необходимый скелет знаний, на который сможете наращивать все новые навыки. И это всего за три недели!
Записавшись на курс, вы получите доступ к видеоурокам и дополнительным материалам для углубленного изучения каждой темы. Кроме того, вам будут предложены задачи для отработки новых навыков (в каждом занятии — более 10 задач разного уровня).
Раз в неделю вы сможете принять участие в live-сессиях с преподавателем. Опытный программист будет отвечать на ваши вопросы, разбирать самые сложные задачи и указывать на типичные ошибки, которые можно допустить при их решении.
Между live-сессиями общаться с преподавателем и менторами можно в телеграм-чате.
Курс довольно интенсивный и емкий, но учебные материалы будут доступны и после окончания курса, так что вы сможете осваивать их в удобном для себя темпе.
В программе курса:
Первое знакомство и настройка окруженияПодготовка окружения
Cкачивание и установка PyCharm
Запуск первого проекта
Базовое знакомство с синтаксисом Python
Интерпретатор PythonОбзор интерпретатора Python
Что происходит после запуска программы на выполнение
Базовые структуры данныхЗнакомство со списками, кортежами, словарями и множествами
Приведение типов
Особенности использования типов для разных задач
ЦиклыРазбор базовых циклов for и while и их использования
Генераторы и list comprehensions
ФункцииСпособы вызова функций
Разбор встроенных функций Python
Рекурсия
Числа Фибоначчи
Условия if/elif/else (разбор условных операторов)
ООП
Классы, объекты.Что такое класс и объект, из чего состоит класс, какие в нем бывают методы и атрибуты.
Разбор основных принципов ООП (наследование, инкапсуляция, полиморфизм).
Наследование классов (случаи применения, переопределение методов и атрибутов).
Тестирование (базовые понятия по тестированию кода).
Обработка ошибок (try, except, else, finally)
Декораторы (что это такое, как создать и где используют).
Материалы для дальнейшего изучения (что делать дальше после прохождения курса, какие книги читать, какие проекты делать, что стоит изучать, а что не так важно для работодателей).. По окончании курса вы получите электронный сертификат, хотя это не главное
Куда важнее, что у вас будут все необходимые знания для правильного старта в Python
По окончании курса вы получите электронный сертификат, хотя это не главное. Куда важнее, что у вас будут все необходимые знания для правильного старта в Python.
Grok
Grok — это полнотекстовая платформа разработки, построенная на инструментарии Zope. Это фреймворк с открытым доступом, созданный исключительно для ускорения процесса разработки веб-приложений. Разработчики должны использовать гибкую платформу, чтобы выполнить работу с помощью Grok.
Grok поможет разработчику получить доступ к обширной сети наряду с помощью независимых сетевых библиотек. Они могут выбрать один из них в соответствии с требованиями своей задачи. Этот фреймворк поставляется с пользовательским интерфейсом, похожим на TurboGears и Pylons. Он имеет компонентную архитектуру, которая поможет разработчикам в снижении непредсказуемости разработки приложения.
Вот список основных характеристик Grok:
- Поддержка разработки веб-пользовательских приложений.
- Расширенная разработка веб-приложений.
- Подъем базовой технологии.
Шаг 2 — Создание простого сайта
Создать простой сайт при помощи Python и Flask станет для вас легкой прогулкой. Вам просто нужно написать 5 строчек кода, и всё.
- Сначала импортируем класс Flask из фреймворка Flask.
- Создаем переменную, в которой будем хранить экземпляр класса flask, иными словами, ваше приложение Flask. Параметр определяет название вашего приложения. По умолчанию это .
- Маршрут, как мы уже сказали, это путь или URL, по которому вы можете посмотреть свой сайт. В данном случае он настроен на корневую папку.
- Теперь создаем функцию. Она определяет, что будет делать наша страница. Пока просто напечатаем “hello world”.
- Запускаем скрипт. Если название вашего приложения , скрипт сработает, вот и всё. Но если вы вызываете скрипт из другой части кода, наш параметр из второго пункта использует имя нашего файла, , и следовательно скрипт не сработает.
#Import dependenciesfrom flask import Flask#Create instance of Flask Appapp = Flask(__name__)#Define Route@app.route("/")#Contentdef home(): return("Home Page")#Running and Controlling the scriptif (__name__ =="__main__"): app.run(debug=True)
Вот вы и создали свою первую веб-страницу
Всё ещё не разобрались с маршрутами? Следующий фрагмент кода прояснит картину. На всех сайтах есть страница О нас, верно? Давайте и на нашем создадим такую же. У нас есть 2 разных маршрута для 2 разных страниц.
#Import dependenciesfrom flask import Flask#Create instance of Flask Appapp = Flask(__name__)#Define Route and Contant of that page@app.route("/")def home(): return("Home Page")#Define 2nd Route and Content@app.route("/about")def about(): return("About Me")#Running and Controlling the scriptif (__name__ =="__main__"): app.run(debug=True)
Что выводит второй маршрут
CherryPy
CherryPy — это еще один минималистичный микро-фреймворк, который является легким и эффективным. Веб-разработка на Python делается простой и похожей на объектно-ориентированную программу. Основная причина создания CherryPy — сделать его расширяемым. Он имеет механизмы для точек крючка, а также удлинители.
CherryPy powered — это автономное веб-приложение, способное встраивать свой собственный многопоточный сервер. Приложения от Cherry работают на Linux, macOS и Windows.
Список основных характеристик CherryPy:
- Мощная система настройки.
- Встроенная поддержка профилирования, тестирования и покрытия.
- Гибкая система плагинов.
- Довольно простой и может запускать несколько HTTP серверов одновременно.
Python просто понять и изучить
Вам точно стоит попробовать Python, если вы никогда не писали код, но хотите получить первую работающую программу как можно быстрее. Самый простой пример — программа, которая выводит на экран заданную фразу. Вот как выглядит ее код на трёх разных языках. Сравните количество и понятность строк кода.
“Java” справляется в 5 строк, используем множество скобок.
“C” работает похоже, хоть строк и немного меньше:
Python использует одну понятную строку:
Конечно, это не значит, что так будет всегда. Есть программы посложнее, но в них всё ещё можно разобраться, если немного знать английский. Например, вот программа, которая умеет отправлять электронные письма:
Размещение Django сайта на Heroku
Последний шаг — это фактическое размещение кода на Heroku. Если вы раньше настраивали сервер, вы будете поражены тем, как сильно Heroku упрощает данный процесс.
Весь процесс будет состоять из следующих этапов:
- создайте новое приложение на Heroku и вставьте в него наш код;
- настройте взаимодействие с git, то есть так называемый «hook» для Heroku;
- настройте приложение на игнорирование статических файлов;
- для активации приложения в онлайн режим, запустите сервер Heroku;
- посетите приложение, перейдя по предоставленному Heroku URL адресу.
В качестве первого шага можем создать новое приложение Heroku. Для этого в командной строке наберите . Heroku создаст случайное имя для нашего приложения, в моем случае это . Ваше название будет другим.
Shell
(pages) $ heroku create
Creating app… done, ⬢ fathomless-hamlet-26076
https://fathomless-hamlet-26076.herokuapp.com/ |
https://git.heroku.com/fathomless-hamlet-26076.git
1 2 3 4 |
(pages)$heroku create Creating app…done,⬢fathomless-hamlet-26076 httpsfathomless-hamlet-26076.herokuapp.com| httpsgit.heroku.comfathomless-hamlet-26076.git |
На данный момент нам остается только настроить Heroku. Для этого укажем Heroku проигнорировать статические файлы вроде CSS и JavaScript, которые Django по умолчанию попытается исправить под себя. Выполним следующую команду:
Shell
(pages) $ heroku config:set DISABLE_COLLECTSTATIC=1
1 | (pages)$heroku configset DISABLE_COLLECTSTATIC=1 |
Теперь можем разместить код на Heroku.
Shell
(pages) $ git push heroku master
1 | (pages)$git push heroku master |
Если бы мы только что набрали , то код был бы загружен в GitHub, а не в Heroku. Добавление слова в команду позволяет отправить код на Heroku. Первые несколько раз это может сбивать с толку.
Наконец, нам нужно запустить в онлайн наше Heroku приложение. Поскольку трафик веб-сайтов растет, они нуждаются в дополнительных услугах от Heroku. Однако для нашего основного примера мы можем использовать самый низкий уровень , который является бесплатным.
Введите следующую команду.
Shell
(pages) $ heroku ps:scale web=1
1 | (pages)$heroku psscale web=1 |
Все готово! Последним шагом станет подтверждение того, что наше приложение действительно запущено и работает в режиме онлайн. Если вы выполните команду , ваш браузер откроет новую вкладку с URL адресом вашего приложения:
Shell
(pages) $ heroku open
1 | (pages)$heroku open |
Наш адрес . Вы можете убедиться в этом, вот появившаяся домашняя страница:
Домашняя страница на Heroku
Страница «About» также открылась должным образом:
Страница «About» на Heroku
Вам нет нужды разлогиниваться или покидать свое приложение в Heroku. Оно будет работать само по себе на этом бесплатном уровне.
Функции
Очень часто встречается, что один и тот же кусок кода необходимо использовать в разных местах. Дублирование – плохая практика, ведущая к ошибкам и сложностям изменений. В таких ситуациях на помощь приходят функции.
Ничто не мешает создать свои
Важно учесть и то, что функция всегда что-то возвращает (после ключевого слова return), хоть return и не обязателен (тогда вернется None, т.е. «ничто»)
Структура функции следующая:
Создадим функцию, которая в зависимости от возраста пользователя будет выводить его статус. Если ему меньше 10 лет – то вернем сообщение «Ребенок», если от 10 до 16 – «Подросток», если от 16 до 20 – «Юноша», если от 20 до 35 – «Молодой человек», если от 35 до 45 – «Мужчина», если от 45 до 55 – «Солидный мужчина», если от 55 до 70 – «Зрелый ум», если от 70 до 120 – «Познавший смыслы». В любом другом случае предупредим пользователя: «Такого возраста не бывает».
Результат работы скрипта:
Теперь в нашей программе можно использовать данную функцию множество раз с разными аргументами.