Python Academy — один канал вместо тысячи учебников Чат канала: @python_academy_chat Сотрудничество: @zubar89 Канал включён в перечень РКН: https://rkn.link/TVu
Функция reduce
В Python
модуль functools
открывает доступ к функциональным возможностям языка. Одной из замечательных функций в этом модуле является reduce
, которая эффективно уменьшает коллекцию данных, последовательно применяя к ним заданную функцию и сохраняя промежуточные результаты.
Примером работы reduce
может служить последовательное умножение чисел: сначала 1 умножается на 2, затем полученный результат умножается на 3, и так далее.
#python #functools
Легкий веб-фреймворкBottle
– это быстрый, простой и легкий микро-веб-фреймворк WSGI
для Python
. Он распространяется как единый файловый модуль и не имеет никаких зависимостей, кроме стандартной библиотеки Python
.
Несмотря на свою минималистичность, Bottle
предоставляет довольно широкие возможности, которых на 100% хватает для мелких и средних проектов. Вот список основных возможностей: routing
, templates
, POST-routing
, обработка форм, cookies
и сервер.
После запуска подобного примера можете перейти в браузере по адресу localhost:5000/hello/world
и посмотреть на результат, полученный из всего пяти строк кода.
#python #bottle
Настройка ширины текста с использованием модуля textwraptextwrap
предоставляет функции для форматирования текста, делая его более читаемым и приятным для восприятия. Одной из таких функций является fill
, которая позволяет настраивать ширину текста в символах, обеспечивая корректное перенос слов на новые строки.
Приведем пример использования:
import textwrap
# Исходный текст
original_text = "Мощные функции модуля textwrap обеспечивают красивое форматирование текста, а функция fill позволяет задать ширину текста в символах."
# Задаем ширину текста в 30 символов
width = 30
# Применяем функцию fill для форматирования текста
formatted_text = textwrap.fill(original_text, width)
print(formatted_text)
Мощные функции модуля
textwrap обеспечивают
красивое форматирование
текста, а функция fill
позволяет задать ширину
текста в символах.
Получение геолокации по IP с использованием ip2geotools
Недавно я обнаружил увлекательный пакет ip2geotools
, который обеспечивает возможность получения геолокации по IP из различных баз данных.
Пример кода для получения информации по IP с использованием класса DbIpCity
, представляющего некоммерческую базу данных, выглядит следующим образом:
from ip2geotools.databases.noncommercial import DbIpCity
def get_ip_geolocation(ip_address):
try:
response = DbIpCity.get(ip_address, api_key='free')
city = response.city
region = response.region
country = response.country
latitude = response.latitude
longitude = response.longitude
print(f"Информация о местоположении для IP {ip_address}:")
print(f"Город: {city}")
print(f"Регион: {region}")
print(f"Страна: {country}")
print(f"Широта: {latitude}")
print(f"Долгота: {longitude}")
except Exception as e:
print(f"Ошибка при получении информации по IP {ip_address}: {e}")
ip_address_to_check = '8.8.8.8'
get_ip_geolocation(ip_address_to_check)
get
из класса DbIpCity
для получения информации о местоположении по заданному IP-адресу.
Помните о том, что для использования некоторых баз данных может потребоваться API-ключ.Все сервисы Норникеля для работников, собранные в суперапе «Суперника» — нашли отклик в сердцах работников, ведь приложение уже используют 40 тысяч человек из 22 городов России.
Приложение оказалось крайне полезным, потому что у 75% сотрудников нет ПК на рабочем месте. Суперап доступен на любом мобильном устройстве, а также в десктоп-версии с любого компьютера. В личном кабинете можно узнать информацию об отпуске, стаже работы. Есть возможность настроить новостную ленту, получить доступ к документам и справкам, узнать о корпоративных мероприятиях и оставить отклик. Также можно общаться между собой в чатах на звонках и видеосвязи.
В основе «Суперники» микросервисная архитектура. Для быстрой и бесшовной работы приложения потребовалось разработать, согласовать, прописать и настроить 3500 правил. Все сервисы работают независимо друг от друга, а это более тысячи различных соединений.
🌐 Копирование веб-содержимого в Python с библиотекой pywebcopy
Библиотека pywebcopy
облегчает автоматизацию процесса загрузки веб-содержимого, что может быть полезным при создании веб-скраперов, загрузчиков или других приложений, требующих копирования данных из Интернета.
Пример кода:
from pywebcopy import save_webpage
url = 'https://www.example.com'
target_folder = 'path/to/folder'
save_webpage(url, target_folder)
save_webpage
для копирования веб-содержимого указанной веб-страницы (url) в указанную целевую папку (target_folder).pywebcopy
предоставляет простой и удобный способ копирования веб-содержимого прямо из Python
. Она может быть полезна при создании скриптов для загрузки данных с веб-страниц, автоматизации сбора информации или создании зеркал сайтов. 💻Работа с PDF файлами используя PyPDF2
В этом посте, вы узнаете, как работать с PDF-файлами в Python. PyPDF2
предоставляет функциональность для работы с PDF-файлами в Python
, позволяя автоматизировать процессы обработки и анализа документов в формате PDF.
Пример кода:
import PyPDF2
with open('example.pdf', 'rb') as file:
pdf_reader = PyPDF2.PdfReader(file)
num_pages = len(pdf_reader.pages)
print(f"Количество страниц в PDF: {num_pages}")
first_page_text = pdf_reader.pages[0].extract_text()
print("Текст с первой страницы:")
print(first_page_text)
pdf_writer = PyPDF2.PdfWriter()
pdf_writer.add_page(pdf_reader.pages[0])
with open('new_document.pdf', 'wb') as new_file:
pdf_writer.write(new_file)
print("Обработка PDF завершена.")
Паттерн проектирования Singleton
Одиночка или же синглтон – это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр.
Метод __new__
вызывается для создания экземпляра класса, перед вызовом __init__
. На вход первым аргументом метод принимает сам класс, а возвращать должен уже экземпляр (даже можно экземпляр и другого класса).
В примере мы проверяем, есть ли значение у атрибута instance
. Если нет, то присваиваем атрибуту экземпляр этого же класса. А если уже экземпляр создан, то просто его возвращаем.
То есть при вызове конструктора класса Singleton
, будет возвращаться один и тот же объект из памяти.
#классы #паттерны
Валидаторы данных
Как правило, разработчики пишут регулярные выражения для обработки специфических строк. Но для таких данных как, почта или ссылка, изобретать велосипед не нужно.
Модуль validators
позволяет использовать уже готовые валидаторы для самых распространенных задач. В примере можете как раз увидеть валидацию почты и ссылок.
Помимо этого, validators
позволяет также работать с ipv4
, ipv6
, mac
адресами и многим другим. В итоге, имеем лаконичный и простой модуль с хорошим функционалом.
#python #validators
Параллельное Исполнение в Python с Помощью Модуля threading
В данном посте, вы узнаете, как использовать модуль threading
для создания параллельных потоков выполнения и улучшения производительности ваших приложений.threading
позволяет создавать легковесные потоки, которые выполняются параллельно, ускоряя выполнение задач. Это особенно полезно в сценариях, где есть задачи, которые можно выполнить независимо друг от друга.
Пример:
import threading
import time
# Функция, которую будем выполнять в параллельных потоках
def print_numbers():
for i in range(5):
time.sleep(1) # Эмулируем длительную операцию
print(f"Thread {threading.current_thread().name}: {i}")
# Создаем два потока
thread1 = threading.Thread(target=print_numbers, name="Thread 1")
thread2 = threading.Thread(target=print_numbers, name="Thread 2")
# Запускаем потоки
thread1.start()
thread2.start()
# Ожидаем завершения потоков перед завершением программы
thread1.join()
thread2.join()
print("Главный поток выполнения завершен.")
print_numbers
, эмулируя длительную операцию с использованием time.sleep
. Запуск потоков осуществляется с помощью метода start()
, и главный поток ожидает их завершения с использованием метода join()
.threading
предоставляет удобные средства для работы с параллельными потоками в Python
, что позволяет улучшить производительность приложений. Однако, следует быть внимательными при работе с потоками из-за потенциальных проблем с блокировками и синхронизацией данных. Попробуйте интегрировать threading в свой код и ускорьте выполнение задач! 💻Оптимизация Памяти в Python с Библиотекой gc
Если вы заботитесь о производительности ваших Python
-приложений, то библиотека gc (Garbage Collector)
вам точно пригодится. Давайте рассмотрим, почему.gc
в Python
предназначена для автоматического управления памятью, освобождая вас от рутины по управлению объектами. Это особенно полезно в задачах, связанных с избежанием утечек памяти и оптимизацией её использования.
import gc
gc.enable()
class SampleObject:
def __init__(self, value):
self.value = value
objects_list = [SampleObject(i) for i in range(1000000)]
gc.collect()
# Пример обработки данных (например, фильтрация объектов)
filtered_objects = [obj for obj in objects_list if obj.value % 2 == 0]
gc.collect()
print(filtered_objects[:10])
SampleObject
, который может занять значительное количество памяти. После обработки данных или в других стратегических точках программы, вызывается сборщик мусора для освобождения памяти, занятой неиспользуемыми объектами.gc
в Python
может значительно улучшить производительность ваших программ, освободив вас от рутины по управлению памятью. Это особенно важно в проектах с большим объемом данных или длительным временем выполнения. Типизация в Python с использованием модуля typing
В Python
модуль typing
предоставляет возможность добавлять подсказки типов для переменных, функций и классов, что делает код более явным и понятным.
Зачем использовать типизацию?
1. Ясность и понятность кода: Добавление аннотаций типов помогает читателям быстро понять, какие данные ожидаются и какие типы переменных возвращаются из функций.
2. Предотвращение ошибок: Статические анализаторы кода, такие как mypy
, могут обнаруживать потенциальные ошибки до выполнения программы, что уменьшает количество багов.
3. Документация кода: Подсказки типов могут служить формой документации, особенно полезной при совместной разработке. Разработчики могут быстро понимать интерфейсы функций и классов.
Пример использования типизации для переменных и функций:
from typing import List, Tuple
def multiply(a: int, b: int) -> int:
return a * b
def process_list(data: List[int]) -> Tuple[int, int]:
sum_values = sum(data)
average = sum_values / len(data)
return sum_values, average
# Пример использования
result1 = multiply(5, 3)# Ожидается int
data_list = [1, 2, 3, 4, 5]
result2 = process_list(data_list)# Ожидается Tuple[int, int]
a: int
и b: int
указывают на типы аргументов функции, а -> int
и -> Tuple[int, int]
- на типы возвращаемых значений. Это помогает читателям кода лучше понимать ожидаемую структуру данных и типы переменных.Локализация в Python с помощью модуля gettext
В процессе разработки программ иногда необходимо предоставить поддержку разных языков. Модуль gettext
в Python
предоставляет удобный механизм локализации, который позволяет адаптировать ваше приложение для различных языковых сообществ.
Что такое gettext
?gettext
- это модуль Python
, предназначенный для обеспечения поддержки интернационализации и локализации. Он позволяет создавать переводы строк на различные языки, обеспечивая легкость адаптации приложения под разные культурные контексты.
Пример использования gettext
:
import gettext
from pathlib import Path
translations = gettext.translation('your_app', localedir=Path('locales'), languages=['ru'])
translations.install()
print(_("Hello, gettext!"))
gettext
для загрузки файлов перевода из директории 'locales' для русского языка. Функция _()
используется для обозначения строк, подлежащих локализации.pybabel
:pybabel extract -F babel.cfg -o messages.pot your_app
pybabel init -i messages.pot -d locales -l ru
gettext
также предоставляет множество возможностей для более сложных сценариев локализации, таких как форматирование чисел, дат и поддержка множественных форм.🎧Битмейкеры могут начинать искать работу — GigaChat начнет генерировать музыку по текстовым запросам. Этого удастся достичь, благодаря интеграции в сервис нейросетей CLaMP и SymFormer.
О новой возможности GigaChat рассказал вице-президент по цифровым поверхностям «Салют» Сбера Денис Филиппов в рамках конференции AI Journey 2023.
Как это работает: пользователь создает запрос а-ля «Придумай трек в стиле кантри» и получает аудиофайл со сгенерированной композицией, а также нотную партитуру в формате MIDI. Первый можно слушать и скачивать, а вторую — использовать в проектах и продакшене.
К слову, GigaChat есть прямо в Telegram 😎
Всегда мечтал быть айтишником? Освой новую профессию промт-инженера! Гарантия трудоустройства и низкая конкуренция!
Приходи на бесплатный вебинар и узнай как:
- Повысить свой доход на рабочем месте, создавая нейро-сотрудников
- Получить новую специальность и увеличить доход на 30-40%
- Создавать нейронки и продавать на заказ от 1 млн за проект
- Зарабатывать на фрилансе от 300 000 рублей
- Найти хобби, которое прокачает твой мозг и сделает жизнь ярче
Обо всем ты узнаешь на бесплатном вебинаре от AI University.
Вот ссылка, жми СЮДА
Реклама. ООО "ТЕРРА ЭЙАЙ". ИНН 9728019395. erid: LjN8KME2w
Читаем текст с картинки используя Tesseract от GoogleGoogle
разработал систему Tesseract
для извлечения текста из изображений через оптическое распознавание символов.Pytesseract
- это удобная оболочка для системы Tesseract
, облегчающая её использование.
Чтобы извлечь текст из изображения, используйте метод image_to_string
. Для работы с русским текстом укажите аргумент lang
как 'rus'
.
Рекомендуется использовать библиотеку pillow
для открытия изображений, хотя можно также просто указать путь к файлу.
Пример кода:
from PIL import Image
import pytesseract
# Открываем изображение с помощью Pillow
image = Image.open('image.jpg')
# Используем pytesseract для извлечения текста
text = pytesseract.image_to_string(image, lang='rus')
print(text)
Придаем человеческий вид данным с помощью пакета humanize
Открыл для себя потрясающий инструмент — пакет humanize
, который превращает числа и даты в понятный для человека текст. Вместо того чтобы изобретать велосипеды для таких задач, этот пакет позволяет справиться с ними буквально в одной строке.
Например, сложный объект timedelta
может быть преобразован в "2 дня, 1 час и 33.12 секунд
".
Однако, что еще более впечатляет, — помимо английского, этот пакет поддерживает множество других языков, включая русский. Настоятельно рекомендую ознакомиться с их документацией, где представлено множество интересных функций.
Пример использования в Python
:
import humanize
from datetime import timedelta
time_difference = timedelta(days=2, hours=1, seconds=33.12)
humanized_time = humanize.naturaldelta(time_difference)
print(humanized_time)
# Output: 2 days, 1 hour and 33.12 seconds
number_to_humanize = 500
humanized_number = humanize.intword(number_to_humanize)
print(humanized_number)
# Output: 5.00 x 10²
naturaldelta
и intword
из пакета humanize
для получения читаемых представлений временного интервала и числа соответственно.GigaCode теперь доступен внешним разработчикам
К сервису GigaCode, персональному AI-ассистенту разработчика — открыт ранний доступ. Он поможет в режиме реального времени по фрагменту кода сгенерировать наиболее вероятные его продолжения непосредственно в среде разработки.
В GigaCode есть нейросетевые модели, которые обучены на больших корпусах исходного кода и специализируются на определенных задачах разработки
Код поддерживает более 15 языков программирования (Java, Python, JavaScript, TypeScript, C/C++ и другие), а также совместимо со множеством популярных редакторов и интегрированных сред разработки (IDEA, PyCharm, VSCode, Jupyter и другие). Среди остальных функций сервиса: расширенная кодогенерация, семантический поиск по коду, поиск некоторых типов уязвимостей и многое другое.
Создание скриншотов с использованием модуля pyscreenshot
Модуль pyscreenshot
, обеспечивая кросс-платформенную функциональность, позволяет легко создавать скриншоты как всего экрана, так и его отдельных частей. Для работы этого модуля необходимо установить библиотеку Pillow
.
Для захвата изображения используется метод grab
, для его отображения – show
, а для сохранения – save
. В метод grab
можно также передать аргумент bbox
, чтобы ограничить захват только определенной областью экрана.
Этот модуль оказывается особенно полезным, например, при логировании скриптов, использующих Selenium
. Selenium
может открывать браузер и выполнять различные операции в нем, и использование pyscreenshot
позволяет создавать скриншоты для последующего анализа и отладки.
#python #pyscreenshot
Работа с YAML-Файлами в Python с Помощью Библиотеки PyYAMLPyYAML
позволяет эффективно работать с файлами в формате YAML (YAML Ain't Markup Language)
, который широко используется для конфигураций, настроек и обмена данными в структурированной форме.
import yaml
data_to_write = {'name': 'John Doe', 'age': 30, 'city': 'Example City'}
with open('example.yaml', 'w') as file:
yaml.dump(data_to_write, file, default_flow_style=False)
with open('example.yaml', 'r') as file:
loaded_data = yaml.safe_load(file)
print(f"Загруженные данные: {loaded_data}")
example.yaml
):age: 30
city: Example City
name: John Doe
PyYAML
для записи словаря data_to_write
в файл example.yaml
и затем загружаем данные из этого файла обратно в переменную loaded_data
.PyYAML
предоставляет удобные средства для работы с данными в формате YAML
в Python
. Будь то сохранение конфигураций, обмен структурированными данными или другие сценарии, где YAML
имеет преимущество, PyYAML
обеспечивает легкость в использовании и читаемый код🐍Хеширование в Python используя hashlib
Библиотека hashlib
предоставляет алгоритмы хеширования, которые позволяют создавать уникальные хеш-суммы для данных. Это полезно для проверки целостности файлов, хранения паролей в безопасной форме и других задач безопасности данных.
Пример кода:
import hashlibВ этом примере мы используем алгоритм
# Пример хеширования строки с использованием SHA-256
data_to_hash = "Hello, World!"
hashed_data = hashlib.sha256(data_to_hash.encode()).hexdigest()
print(f"Исходные данные: {data_to_hash}")
print(f"Хеш-сумма (SHA-256): {hashed_data}")
SHA-256
из библиотеки hashlib
для создания хеш-суммы строки "Hello, World!". Результат выводится в шестнадцатеричном формате.hashlib
является одним из лучших инструментов для обеспечения безопасности данных в Python
. Путем использования различных алгоритмов хеширования, таких как MD5
, SHA-256
и других, вы можете обеспечить целостность данных и повысить уровень безопасности ваших приложений.Приглашаем на Pytup — круглый стол о Python 3.12
Пока все постепенно начинают думать о Новом годе, мы готовим для вас новый Pytup, чтобы поговорить про наш любимый язык программирования. Тема этого круглого стола — Python 3.12 в проде.
На Pytup мы соберём разработчиков, которым есть что сказать про Python 3.12 и которые могут поделиться первыми впечатлениями от новой версии. Стоит ли переходить на 3.12, что в новой версии реализовано плохо, а что — хорошо и вообще в ту ли сторону развивается язык. Обсудим эти и другие вопросы, вместе поразмышляем над перспективами Python, а ещё поболтаем о жизни, отдохнём и просто хорошо проведём время.
Pytup пройдёт 16 декабря в Москве, можно прийти офлайн или посмотреть онлайн-трансляцию.
Зарегистрироваться можно здесь.
🐍 На работу python разработчиком сложно попасть без резюме.
📸 А в качественном резюме должна быть представительная фотография! Вот вам бот, который делает магию, превращая любую вашу фотографию в качественное фото для резюме.
🤖 @avatar_resume_bot
💻 Рассказывали вам про задачи на Yandex Cup 2023. В финале команда Яндекса также решила совместить IT и искусство. Пространство было оформлено в стиле демосцены — субкультуры, связанной с компьютерным искусством и киберкультурой, и сами задачи также были тематическими.
Один из запоминающихся арт-объектов соревнования: музыкальный перформанс “Код степи”, созданный участниками лейбла qazaq indie — Балхаш снится, Samrattama, — и другими независимыми художниками, где объединились элементы казахстанской культуры и технологий. Код, который писали участники, был синтезирован в звук и стал частью музыкального произведения.
Получилось очень атмосферно. Было ощущение, что смотришь не трансляцию соревнования, а стрим из киберпанк-будущего. Кстати, в процессе решения задач, участники могли послушать доклады от финалистов ML-трека. Советую посмотреть эту часть, если любите участвовать в IT-соревнованиях, тут над организацией прямо заморочились.
💻 Рассказывали вам про задачи на Yandex Cup 2023. В финале команда Яндекса также решила совместить IT и искусство. Пространство было оформлено в стиле демосцены — субкультуры, связанной с компьютерным искусством и киберкультурой, и сами задачи также были тематическими.
Один из запоминающихся арт-объектов соревнования: музыкальный перформанс “Код степи”, созданный участниками лейбла qazaq indie — Балхаш снится, Samrattama, — и другими независимыми художниками, где объединились элементы казахстанской культуры и технологий. Код, который писали участники, был синтезирован в звук и стал частью музыкального произведения.
Получилось очень атмосферно. Было ощущение, что смотришь не трансляцию соревнования, а стрим из киберпанк-будущего. Кстати, в процессе решения задач, участники могли послушать доклады от финалистов ML-трека. Советую посмотреть эту часть, если любите участвовать в IT-соревнованиях, тут над организацией прямо заморочились.
Хотите узнать, подходит ли вам анализ данных? Попробуйте решить 4 задачи аналитика.
У Практикума есть бесплатный курс по основам профессии. Внутри — азы языка Python, интерактивный сюжет и практика на 4 кейсах из разных областей.
→ Пройти курс бесплатно
Работа с форматированием текста
textwrap — это стандартная библиотека, которая спользуется для форматирования текста в тех случаях, когда нам нужна красивая печать.
Он предлагает функциональность аналогичную текстовым редакторам и текстовым процессорам.
Немного о возможностях:textwrap.fill()
— принимает текст и возвращает отформатированный текст, первая строка сохраняет свой отступ, а пробелы в начале каждой последующей строки вставляются в абзац.textwrap.dedent()
— используется для удаления общего префикса пробела из всех строк в тексте.textwrap.indent()
— используется для добавления текст префикса ко всем строкам в параграфе
#python #textwrap
Работа с регулярными выражениями используя re
Регулярные выражения (регулярки) являются инструментом для работы с текстовой информацией. Они позволяют осуществлять поиск, извлечение и модификацию текста, используя гибкие шаблоны. Сегодня, мы рассмотрим, как работать с регулярками в Python
используя модуль re
.
Что такое модуль re
?
Модуль re
в Python
предоставляет функционал для работы с регулярными выражениями. Регулярные выражения (regex) - это шаблоны, описывающие набор символов с определенными свойствами.
В данном примере мы использовали функцию re.search
для поиска подстроки в тексте. Параметр re.IGNORECASE
делает поиск регистронезависимым.
Модуль re
также предоставляет возможности для более сложных операций, таких как замена текста по шаблону, разделение строк на подстроки и многое другое.
Для более подробной информации рекомендуется изучить официальную документацию
#python #regex
Исследование структуры кода с помощью модуля ast
При работе с кодом на Python, иногда возникает необходимость анализа его структуры. Для этого идеально подходит модуль ast (Abstract Syntax Trees)
, который предоставляет мощные инструменты для работы с абстрактными синтаксическими деревьями.
Что такое ast
?ast
- это модуль Python
, который позволяет разбирать и анализировать исходный код на Python
, представляя его в виде абстрактного синтаксического дерева (AST
). AST
представляет собой структурированное представление кода, которое легко интерпретировать и анализировать.
Пример использования модуля ast
:
import ast
code = "print('Hello, ast!')"
tree = ast.parse(code)
print(ast.dump(tree))
rse для р
азбора строки кода с помощью модуля ast. Функ
ция ast.dump вывод
ит структуру AST в удо
бочитаемом формате.
import ast
code = """
def greet(name):
print(f'Hello, {name}!')
"""
tree = ast.parse(code)
for node in ast.walk(tree):
if isinstance(node, ast.FunctionDef):
print(f"Найдена функция: {node.name}")
elif isinstance(node, ast.Print):
print("Обнаружен оператор печати")
обойти
все узлы AST, а затем мы прове
ряем их типы для выделения определенных элементов, таких как функции или операторы.а
вляет возможности для более сложных операций, таких как изменение кода, создание новых выражений и многое другое.Взаимодействие с HTTP с помощью curl_cffi
Что такое curl_cffi
?curl_cffi
- это обертка над библиотекой libcurl
, предоставляющая Python
-разработчикам удобный интерфейс для отправки HTTP
-запросов, управления сессиями и обработки ответов.
Плюсы использования curl_cffi
:
- Поддерживает подделку отпечатков JA3/TLS и http2.
- Гораздо быстрее, чем requests
/httpx
, сопоставимо с aiohttp
/pycurl
.
- Одинаковый синтаксис как и у requests.
- Предварительно скомпилирован, поэтому вам не нужно компилировать его на вашем компьютере.
- Поддерживает asyncio
с поворотом прокси для каждого запроса.
- Поддерживает http 2.0
, что не предоставляет requests
.
Пример использования curl_cffi
:
from curl_cffi import Curl
# Создание объекта Curl
curl = Curl()
# Установка URL
curl.setopt(Curl.URL, 'https://api.example.com')
# Выполнение GET-запроса
curl.perform()
# Получение ответа
response = curl.getvalue()
# Вывод результата выполнения запроса
print(response)
Curl
, устанавливаем URL
и выполняем GET
-запрос. Результат запроса сохраняется в переменной response.
from curl_cffi import Curl
# Создание объекта Curl
curl = Curl()
# Установка URL
curl.setopt(Curl.URL, 'https://api.example.com')
# Установка параметров запроса
curl.setopt(Curl.HTTPHEADER, ['Content-Type: application/json'])
curl.setopt(Curl.POSTFIELDS, '{"key": "value"}')
# Выполнение POST-запроса
curl.perform()
# Получение ответа
response = curl.getvalue()
# Вывод результата выполнения запроса
print(response)
POST
-запроса. Метод setopt
используется для установки различных параметров запроса.curl_cffi
обладает богатым функционалом, таким как управление cookie, обработка редиректов, аутентификация, и многое другое.curl_cffi
полезным в ваших проектах, требующих взаимодействия с внешними серверами по протоколу HTTP
. Для более подробной информации ознакомьтесь с документацией.