Beautiful soup
Когда вы вытаскиваете HTML с какого-то сайта, то сначала проводите его разбор и отсекаете все ненужное. Beautiful Soup — это Python-библиотека по сбору данных из HTML и XML-файлов. В ней представлены простые методы для навигации, поиска и парсинга. Это очень мощная библиотека, которая умеет обрабатывать все виды HTML, даже если он сломан. Уж поверьте моему опыту, HTML ломается довольно часто, поэтому такая функция окажется как нельзя кстати.
Beautiful Soup парсит все, что захотите. С его помощью вы, например, можете вытащить все ссылки или найти заголовок таблицы, выделенный жирным. На первой картинке приведен HTML, а на второй - несколько примеров работы с ним. Документация доступна по ссылке.
Когда вы вытаскиваете HTML с какого-то сайта, то сначала проводите его разбор и отсекаете все ненужное. Beautiful Soup — это Python-библиотека по сбору данных из HTML и XML-файлов. В ней представлены простые методы для навигации, поиска и парсинга. Это очень мощная библиотека, которая умеет обрабатывать все виды HTML, даже если он сломан. Уж поверьте моему опыту, HTML ломается довольно часто, поэтому такая функция окажется как нельзя кстати.
Beautiful Soup парсит все, что захотите. С его помощью вы, например, можете вытащить все ссылки или найти заголовок таблицы, выделенный жирным. На первой картинке приведен HTML, а на второй - несколько примеров работы с ним. Документация доступна по ссылке.
Аннотации типов: Union и Optional
При необходимости допустить использование не любых типов, а только некоторых, можно использовать аннотацию
Для объявления опциональных переменных используется
Кстати, аннотация
При необходимости допустить использование не любых типов, а только некоторых, можно использовать аннотацию
Union[T, ...] с указанием списка типов в квадратных скобках.Для объявления опциональных переменных используется
Optional[T]. Такая аннотация нужна для переменных, которые либо имеют значение определенного типа, либо равны None.Кстати, аннотация
Optional[T] эквивалентна Union[T, None].Создаем пакеты
Пакет в Python — это, грубо говоря, папка с другими папками и модулями. Помимо разделения частей проекта, пакеты нужны для формирования пространства имен, чтобы можно работать с пакетами и модулями через точку, как в примере на картинке.
При импорте вида
Также примечателен файл __init__.py, который раньше был обязателен для создания пакетов. С версии Python 3.3 эта необходимость пропала, но его функциональность на этом не заканчивается.
Пакет в Python — это, грубо говоря, папка с другими папками и модулями. Помимо разделения частей проекта, пакеты нужны для формирования пространства имен, чтобы можно работать с пакетами и модулями через точку, как в примере на картинке.
При импорте вида
from package import * будет подключены либо все модули и объекты модуля __init__.py, либо то, что находится в переменной __all__ в том же модуле __init__.py.Также примечателен файл __init__.py, который раньше был обязателен для создания пакетов. С версии Python 3.3 эта необходимость пропала, но его функциональность на этом не заканчивается.
Шуточный пакет pyjokes
Если в вашей крови течёт PEP, а дома вас ждёт домашняя змея в клетке, то и шутки вам нужны соответствующие. Вы всегда можете получить их с помощью модуля pyjokes. Устанавливается, как всегда, через pip.
Также есть отдельная категория с шутками Чака Норриса.
Если в вашей крови течёт PEP, а дома вас ждёт домашняя змея в клетке, то и шутки вам нужны соответствующие. Вы всегда можете получить их с помощью модуля pyjokes. Устанавливается, как всегда, через pip.
Также есть отдельная категория с шутками Чака Норриса.
Don't worry about tests, Chuck Norris's test cases cover your code too.art
Всё, что вам может понадобится для вывода красивых надписей или артов в терминал. Ставится с помощью команды
Всё, что вам может понадобится для вывода красивых надписей или артов в терминал. Ставится с помощью команды
pip install art. Полный список возможностей есть в документации.Завершение программы
Функция
По факту функция просто поднимает исключение
Использовать
Функция
exit создана для удобства работы в интерактивном режиме, но не рекомендуется использовать её внутри скриптов. По факту функция просто поднимает исключение
SystemExit, а при попытке вызова без скобок напишет подсказку о правильном способе выхода из интерпретатора.Использовать
sys.exit() стоит, так как этот метод есть в стандартном модуле и всегда там доступен. А ещё это довольно явный и понятный способ завершения программы.Отправляем электронные письма
SMTP (Simple Mail Transfer Protocol) — это протокол, позволяющий отправлять электронные письма. В стандартной библиотеке есть пакет
Для подключения к серверу будем использовать класс
Отправлять письма следует методом
Следует обратить внимание на то, что некоторые почтовые сервисы могут не разрешить так сразу подключаться к их серверам и производить операции. В этом случае пришлось немного повоевать с Gmail.
SMTP (Simple Mail Transfer Protocol) — это протокол, позволяющий отправлять электронные письма. В стандартной библиотеке есть пакет
smtplib, реализующий его поведение. Для подключения к серверу будем использовать класс
SMTP_SSL, включающий в себя и шифрование. В качестве аргументов передадим ему адрес сервера и порт. Авторизация происходит с помощью метода login, в который передаём логин и пароль. Отправлять письма следует методом
sendmail, который принимает адреса отправителя и получателя, а также сам текст. В конце программы следует закрывать соединение с помощью метода quit(). Следует обратить внимание на то, что некоторые почтовые сервисы могут не разрешить так сразу подключаться к их серверам и производить операции. В этом случае пришлось немного повоевать с Gmail.
Получаем текст с картинки
У Google есть система Tesseract, которая позволяет парсить текст с картинок с помощью оптического распознавания символов. В качестве обертки над их системой был создан пакет
Чтобы получить текст с картинки, надо вызвать метод
Для открытия картинок рекомендуется использовать
У Google есть система Tesseract, которая позволяет парсить текст с картинок с помощью оптического распознавания символов. В качестве обертки над их системой был создан пакет
pytesseract, который удобно и легко использовать. Чтобы получить текст с картинки, надо вызвать метод
image_to_string. Если вас интересует текст на русском, то следует указать аргумент lang как 'rus'. Для открытия картинок рекомендуется использовать
pillow, хоть и имеется возможность просто указать путь к файлу в виде строки.Временные файлы
В стандартной библиотеке Python имеется модуль
Функция
Созданный временный файл будет автоматически удален по закрытию файла или при выходе из контекстного менеджера, а другие процессы и приложения не смогут получить доступ к этому временному файлу.
В стандартной библиотеке Python имеется модуль
tempfile, содержащий классы и методы для работы со временными файлами и директориями. Такие файлы нужны для сохранения промежуточных результатов выполнения программы.Функция
TemporaryFile создает временный файл в системной директории и возвращает файлоподобный объект.Созданный временный файл будет автоматически удален по закрытию файла или при выходе из контекстного менеджера, а другие процессы и приложения не смогут получить доступ к этому временному файлу.
Универсальный парсер статей
Пакет
В качестве примера на картинке парсим статью https://proglib.io/sh/DhyuCFH5p3. Плюс пакета в том, что весь процесс парсинга автоматизирован и не надо вручную искать нужные теги и тянуть из них данные.
Точность парсера зависит в основном от того, как хорошо сверстана запрашиваемая страница, поэтому в некоторых случаях результат может отличаться от ожиданий.
Пакет
newspaper3k позволяет парсить статьи и извлекать из них заголовки, текст, дату публикации, имена авторов и много другой информации. Полный список возможностей в документации.В качестве примера на картинке парсим статью https://proglib.io/sh/DhyuCFH5p3. Плюс пакета в том, что весь процесс парсинга автоматизирован и не надо вручную искать нужные теги и тянуть из них данные.
Точность парсера зависит в основном от того, как хорошо сверстана запрашиваемая страница, поэтому в некоторых случаях результат может отличаться от ожиданий.
Объект Ellipsis
В Python есть крайне интересный объект, который обозначается как
Применяется зачастую при работе со срезами в Numpy, но и в обычном коде его тоже встретить можно. Например,
Если привести его к логическому типу данных, то увидим
В Python есть крайне интересный объект, который обозначается как
..., то есть многоточие. Он называется Ellipsis, и используется в основном как заготовка для чего-то ещё не реализованного.Применяется зачастую при работе со срезами в Numpy, но и в обычном коде его тоже встретить можно. Например,
... периодически встречается в теле функции в качестве заглушки.Если привести его к логическому типу данных, то увидим
True — это важный момент, потому что похожий на Ellipsis по своей сути None выдает False.Ищем ошибки с помощью assert
Инструкция
Если выполнить инструкцию
Однако не нужно пытаться обработать исключение
В примере на картинке проверяется, является ли переданный аргумент числовым типом данных. Если не является, то будет вызвано исключение и выведено указанное сообщение.
Инструкция
assert принимает логическое выражение и необязательное сообщение. Используется для проверки типов, значений аргумента и вывода функции, а ещё для отладки, поскольку останавливает программу в случае ошибки.Если выполнить инструкцию
assert с логическим выражением, результат которого равен True, то ничего не произойдет. Но в случае с False будет сгенерировано исключение AssertionError.Однако не нужно пытаться обработать исключение
AssertionError блоком try-except, так как assert тогда теряет свой смысл.В примере на картинке проверяется, является ли переданный аргумент числовым типом данных. Если не является, то будет вызвано исключение и выведено указанное сообщение.
Имеется кортеж вида T = (4, 2, 3). Какая из операций приведёт к тому, что имя T будет ссылаться на кортеж (1, 2, 3)?
Anonymous Quiz
23%
T[0] = 1
20%
T = (1) + T[1:]
34%
T = (1,) + T[1:]
23%
T.startswith(1)
Python-dateutil
Пакет предлагает мощные расширения стандартного модуля datetime. С этой библиотекой можно сделать много полезного, но мы ограничимся одним примером, который используется чаще всего, — нечеткий разбор (парсинг) дат. Документацию пакета можете найти по ссылке.
Пакет предлагает мощные расширения стандартного модуля datetime. С этой библиотекой можно сделать много полезного, но мы ограничимся одним примером, который используется чаще всего, — нечеткий разбор (парсинг) дат. Документацию пакета можете найти по ссылке.
Pillow
Pillow является ответвлением Python Imaging Library. Эта библиотека подойдет для создания миниатюр, преобразования в различные форматы, наложения фильтров, вращения и отображения изображений и т.д. К тому же это идеальный вариант для пакетной обработки большого количества изображений.
Для большей наглядности приведу пример того, как вы можете отобразить изображение из Python-кода. Проект устанавливается, как всегда, с помощью pip, документацию можете найти по ссылке.
Pillow является ответвлением Python Imaging Library. Эта библиотека подойдет для создания миниатюр, преобразования в различные форматы, наложения фильтров, вращения и отображения изображений и т.д. К тому же это идеальный вариант для пакетной обработки большого количества изображений.
Для большей наглядности приведу пример того, как вы можете отобразить изображение из Python-кода. Проект устанавливается, как всегда, с помощью pip, документацию можете найти по ссылке.
Операторы множеств
Множество — это коллекция, где все элементы уникальны, то есть одно и то же значение не может повторяться дважды.
Кроме обычных методов у множеств реализована поддержка различных операторов: пересечение, объединение, симметрическая разность, обычная разность и другие.
Примеры этих операторов можете посмотреть на картинке.
Множество — это коллекция, где все элементы уникальны, то есть одно и то же значение не может повторяться дважды.
Кроме обычных методов у множеств реализована поддержка различных операторов: пересечение, объединение, симметрическая разность, обычная разность и другие.
Примеры этих операторов можете посмотреть на картинке.
Работаем с буфером обмена
Есть пакет
В этом пакете есть две основные функции —
Получается, что можно прямо через код копировать вывод программы в буфер обмена вместо того, чтобы делать это вручную.
Есть пакет
pyperclip, который позволяет отправлять текст в буфер обмена вашего компьютера и получать его оттуда.В этом пакете есть две основные функции —
copy() и paste(), по названиям которых сразу понятны их предназначения — копировать и вставлять.Получается, что можно прямо через код копировать вывод программы в буфер обмена вместо того, чтобы делать это вручную.
Как работают статические методы
Статические методы создаются в классе при помощи декоратора
Данный тип методов не может модифицировать ни объект, ни сам класс, то есть передавать объект или класс и прописывать
Функцию стоит вносить в класс в качестве статического метода в том случае, когда эта функция логически относится к классу и имеет смысл там быть.
Статические методы создаются в классе при помощи декоратора
@staticmethod. Такие методы привязываются к классу, а не объекту — в этом и основное отличие.Данный тип методов не может модифицировать ни объект, ни сам класс, то есть передавать объект или класс и прописывать
self или cls в аргументах не надо.Функцию стоит вносить в класс в качестве статического метода в том случае, когда эта функция логически относится к классу и имеет смысл там быть.