В этой статье мы познакомим вас с несколькими пакетами Python, которые не очень известны, но очень полезны.
Пакеты — это готовый код Python (классы, функции и т.д.), который вы можете использовать в своих проектах. Обычно они располагаются в определенном каталоге вашей среды. Вы можете создавать свои собственные пакеты или загружать множество замечательных и бесплатных пакетов Python из официального репозитория PyPI.
Установка пакетов Python
Чтобы установить пакет из PyPI, вы можете воспользоваться pip — установщиком пакетов для Python. Он предустановлен в большинстве современных дистрибутивов Python и очень прост в использовании. Например, если вы хотите установить пакет с именем «awesome-package» в свою среду, вы можете выполнить следующую команду в терминале:
pip install awesome-package
По умолчанию pip установит последнюю стабильную версию пакета. Если вы хотите установить определенную версию (например, версию 0.93), вы можете указать ее таким образом:
pip install awesome-package==0.93
Обратите внимание, что pip сам по себе является пакетом. Вы можете обновить его до последней версии, выполнив следующую команду:
pip install --upgrade pip
Вы можете задаться вопросом, стоит ли устанавливать пакеты Python или лучше написать код самостоятельно. Ответ таков: если это позволяет сэкономить время и деньги, используйте пакет! Сообщество энтузиастов Python уже разработало большинство вычислений и алгоритмов, которые понадобятся вам для ваших проектов, поэтому не тратьте свое время. Используйте пакеты Python!
Возможно, вы использовали (или хотя бы слышали о нем) NumPy — пакет Python, позволяющий работать с большими структурами данных. NumPy — это результат колоссальной работы сообщества Python. Сейчас это незаменимый инструмент для специалистов по обработке данных.
От редакции Pythonist: узнать больше о NumPy можно из цикла статей «Учебник по библиотеке NumPy: учитесь на примерах».
А теперь давайте поговорим о тех самых недооцененных пакетах Python, которые мы анонсировали в начале статьи.
BeautifulSoup
BeautifulSoup — это библиотека Python для извлечения и парсинга данных из файлов HTML и XML.
Представьте, что ваша компания хранит все статьи своего блога в формате HTML в реляционной базе данных. SEO-отдел просит вас добавить тег nofollow ко всем внешним ссылкам статей. Вы решаете распарсить статьи с помощью BeautifulSoup, найти все ссылки (используя функцию find_all из библиотеки), добавить nofollow для каждой ссылки и вернуть полученную строку.
Вот код, который вы бы использовали:
from bs4 import BeautifulSoup # Get the article content and parse it as HTML article_html = '<h1>Title</h1><p>text and text<a href="some_url">Click here</a></p>' soup = BeautifulSoup(article_html, 'html.parser') # Find all the links and add the nofollow tag for link in soup.find_all('a'): link["rel"] = "nofollow" print(str(soup)) # Shows: <h1>Title</h1><p>text and text<a href="some_url" rel="nofollow">Click here</a></p>
Довольно просто, правда? Вы можете ознакомиться со всеми доступными функциями в докуменатции BeautifulSoup.
pyppeteer
Пакет pyppeteer — это Python-версия Puppeteer, библиотеки Node.js, которая предоставляет высокоуровневый API для управления функциями Chrome/Chromium. Проще говоря, он позволяет запускать браузер Chrome или Chromium в среде Python и автоматизировать простые действия, такие как посещение сайта, нажатие на кнопку и т. д.
Допустим, вы работаете в отделе электронной коммерции компании по производству спортивного оборудования. Операционисты просят вас сделать скриншоты некоторых товаров и сохранить их в формате PDF. Вы решаете автоматизировать этот процесс с помощью библиотеки pyppeteer:
import asyncio from pyppeteer import launch async def main(): # Create a new browser instance browser = await launch() page = await browser.newPage() # Visit a specific URL await page.goto("https://myshop.com/products?sku=1234") # Take a screenshot a keep it in a PDF file await page.emulateMedia("screen") await page.pdf({"path": "exports/screen_1234.pdf"}) # Close the browser instance await browser.close() # Run the main function asyncio.get_event_loop().run_until_complete(main())
Впечатляет! Обратите внимание, что pyppeteer нуждается в библиотеке Asyncio для выполнения асинхронных вызовов. Вы можете ознакомиться со всей документацией по Pyppeteer этой ссылке.
Telethon
Telethon — это библиотека Python, которая позволяет вам взаимодействовать с API Telegram. Вы можете отправлять, получать или ждать новых сообщений Telegram внутри вашего Python-приложения. Вы также можете отправлять файлы контакту или группе контактов.
Давайте продолжим наш предыдущий пример с pyppeteer. Чтобы полностью автоматизировать мониторинг продукта, вы хотите загрузить PDF-файлы в группу Telegram, где находятся операционисты. С помощью Telethon это можно сделать очень быстро:
from telethon.sync import TelegramClient with TelegramClient("name", api_id, api_hash) as client: channel = client.get_input_entity(channel_id) client.send_file(channel, "exports/screen_1234.pdf") client.run_until_disconnected()
Удивительно просто! Вам нужно только получить ID и хэш Telegram API (что можно сделать за несколько минут), как указано в документации Telethon.
PyWhatKit
Telegram позволяет свободно использовать свой API. С WhatsApp дело обстоит иначе: если вы хотите отправлять сообщения в WhatsApp из своего приложения, вам понадобится WhatsApp Business. Однако есть классный хак для настольных компьютеров — благодаря библиотеке PyWhatKit. Это библиотека Python, которая тесно сотрудничает с инструментом автоматизации браузера Selenium. Когда вы хотите отправить сообщение в WhatsApp, она открывает WhatsApp Web в новой вкладке браузера, помещает сообщение в поле ввода и автоматически отправляет его вашему контакту или группе.
Представьте, что вы создали в WhatsApp группу экстренной помощи с членами вашей команды. Вы хотите автоматически пересылать некоторые оповещения, полученные по email на ноутбуке. Сделать это очень просто:
import pywhatkit pywhatkit.sendwhatmsg_to_group_instantly("X6jaeFeVWGQ5B9jWpSQFcz", "Alert: EC2 server reached 80% capacity")
Вы можете легко найти код группы на экране приглашения в WhatsApp:
Проще некуда! Со всеми фантастическими функциональными возможностями PyWhatKit можно ознакомиться в его официальной документации.
XlsxWriter
XlsxWriter — это очень мощный модуль Python для записи файлов в формате Excel. Он поддерживает добавление текста, чисел, формул, изображений и макросов Excel — среди прочих функциональных возможностей. XlsxWriter даже интегрируется с pandas, известным пакетом Python для работы с данными.
От редакции Pythonist: о Pandas читайте в статье «Полное руководство по Pandas для начинающих».
Представьте, что ваш начальник просит вас подготовить финансовый отчет за текущий квартал. Отчет должен быть в формате Excel, чтобы представить его совету директоров. На копирование и вставку значений из базы данных могут уйти часы. Вы не хотите выполнять эту задачу каждый квартал, поэтому решили автоматизировать процесс с помощью XlsxWriter. Вот простой пример того, как это можно сделать:
import xlsxwriter # Create a new XLSX file and a new tab workbook = xlsxwriter.Workbook("Q4 Financial Report.xlsx") worksheet = workbook.add_worksheet("October") # Insert the company logo in the first cell worksheet.insert_image("A1", "logo.png") # Define a bold style for the column headers header_format = workbook.add_format({"bold": True}) # Write some numbers, with row/column notation. worksheet.write(3, 0, "Gross Margin", header_format) worksheet.write(4, 0, 2.45) worksheet.write(3, 0, "EBITDA", header_format) worksheet.write(4, 0, 5.12) # Save and close file workbook.close()
XlsxWriter действительно впечатляет! Вот полная документация.
Emoji
Вы когда-нибудь замечали, что некоторые приложения для обмена мгновенными сообщениями показывают список эмодзи, если вы набираете двоеточие, за которым следует ключевое слово?
Если хотите реализовать подобную логику в своем приложении на Python, можете использовать пакет Emoji. Благодаря этому небольшому и удобному пакету можно перевести обычный текст в эмодзи и обратно. Вот простой пример:
import emoji print(emoji.emojize('Learning :snake: is :fire:')) # Shows: Learning ?? is ?? print(emoji.demojize('This emoji is a ??')) # Shows: This emoji is a :dog_face:
Вы можете найти все доступные функции Emoji в официальной документации.
Faker
Библиотека Faker генерирует вымышленные данные — например, имена и адреса — на различных языках.
Представьте, что вы хотите протестировать разрабатываемое приложение с базой данных, чтобы убедиться в ее достаточной емкости. База данных содержит классические пользовательские данные: имена, адреса, места работы, компании, даты рождения и т.д. Вы можете легко заполнить таблицы с помощью Faker, который предоставляет красивые и реалистичные данные. Вот пример:
from faker import Faker from faker.providers import internet fake = Faker("fr_FR") # Generate a fake french name print(fake.name()) # Shows: Robert Rousset # Generate a fake french address print(fake.address()) # Shows: # 99, boulevard Théodore Maurice # 62856 Laporte-sur-Louis # Generate a fake IPv4 address fake.add_provider(internet) print(fake.ipv4_private()) # Shows: 172.30.46.147
Faker предоставляет гораздо больше удивительных поддельных данных, так что непременно загляните в его документацию!
Спасибо за внимание!