Гайд: как работать с библиотеками для отправки HTTP-запросов в Python
Если ты ищешь как отправлять http-запросы в python, то ты попал туда, куда нужно. Сегодня мы рассмотрим 2 python библиотеки для работы с http запросами.
Библиотека requests

Очень популярная библиотека, большинство людей начинают своё знакомство с http запросами в python именно с этой библиотеки.
Для начала нам нужно установить библиотеку. Открываем консоль (в Windows - cmd, в Linux и Mac OS - терминал) и вводим команду
pip install requests
После этого создаём файл и импортируем библиотеку
import requests
Теперь мы будем обращаться к сайтам при помощи http запросов. Существует несколько методов http. Сегодня мы рассмотрим только get. Его следует использовать при получении данных. Для примера мы обратимся к сайту https://google.com/
response = requests.get("https://google.com")
При помощи этой библиотеки мы можем очень просто указывать параметры для ссылки в виде словаря
query = {
"param": "data", # здесь могут быть любые параметры
"param2": "data"
}
response = requests.get("https://google.com/", params=query)
Мы обратились к сайту, но как узнать статус сайта? Легко
print(response.status_code)
Из данной записи мы сможем узнать статус код сайта. Например статус код 200 обычно указывает, что всё прошло успешно. Также мы можем узнать html код сайта, если есть получить json объект и получить ссылку, по которой мы обращались к сайту
# html код
print(response.text)
# json объект
# print(response.json()) В данной ситуации не работает, т.к. на сайте нет json
# получение ссылки
print(response.url)
Довольно-таки простая библиотека для новичка
Библиотека aiohttp

Сейчас мы познакомимся с другой мощной библиотекой aiohttp, она позволяет отправлять запросы, в отличие от requests, асинхронно. Сейчас объясню кратко, чем отличается синхронность от асинхронности.
Например, простой пример - человек готовит себе завтрак
Его последовательность действий:
Он готовит яичницу, ждёт её приготовления, затем, человек начинает кипятить чайник и ждёт до того момента, пока он не вскипит. И только после этого продолжает свой список дел. Согласитесь довольно-таки медленно, ведь пока человек ждёт, он ничего не делает. Это был пример синхронности
При асинхронности человек во время ожидания выполняет другие дела.
Также и в программировании, чтобы программа не простаивала во время ожидания, существует асинхронный код
Давайте установим библиотеку aiohttp
pip install aiohttp
После установки открываем python файл и импортируем библиотеку, также для работы с асинхронностью следует импортировать модуль asyncio
import aiohttp
import asyncio
Затем нам нужно открыть сессию и отправить метод get на сайт https://google.com/
# импорты
import aiohttp
import asyncio
# создаем асинхронную функцию
async def func():
async with aiohttp.ClientSession() as session: # открытие сессии в aiohttp
response = await session.get("https://google.com/") # отправка запроса
loop = asyncio.new_event_loop() # создаём новый асинхронный цикл
loop.create_task(func()) # добавляем в него нашу функцию
loop.run_forever() # запускаем цикл
Да, тут много не понятного для новичка. Всем тем, кому непонятен данный код, советую разобраться как работает асинхронность в python.
Мы также можем отправить параметры ссылки
# импорты
import aiohttp
import asyncio
# создаем асинхронную функцию
async def func():
async with aiohttp.ClientSession() as session: # открытие сессии в aiohttp
query = {
"param": "data",
"param2": "data"
} # параметры, тут можно указать любые
response = await session.get("https://google.com/", params=query) # отправка запросов
loop = asyncio.new_event_loop() # создаём новый асинхронный цикл
loop.create_task(func()) # добавляем в него нашу функцию
loop.run_forever() # запускаем цикл
Теперь мы можем получить статус код, json, текст и ссылку
# импорты
import aiohttp
import asyncio
# создаем асинхронную функцию
async def func():
async with aiohttp.ClientSession() as session: # открытие сессии в aiohttp
query = {
"param": "data",
"param2": "data"
} # параметры, тут можно указать любые
response = await session.get("https://google.com/", params=query) # отправка запросов
print(response.status) # получение статус кода
print(response.url) # получение ссылки
# print(await response.json()) В данной ситуации не работает, т.к. на сайте нет json
print(await response.text()) # получение html
loop = asyncio.new_event_loop() # создаём новый асинхронный цикл
loop.create_task(func()) # добавляем в него нашу функцию
loop.run_forever() # запускаем цикл
Итог
Мы научились отправлять http-запросы на сайт при помощи 2 python библиотек: requests и aiohttp. Выбор библиотеки зависит от тебя и от ситуации. В некоторых ситуациях полезен requests, в некоторых aiohttp. Выбор за тобой))
9 комментариев
Добавить комментарий
Если это так, то, конечно, сетевую часть стоит раскрыть подробнее. Особенно асинхронку.
Ссылки на документацию пакетов тоже обязательно должны быть.
Я бы сам с удовольствием об этом почитал. Реальной практики в асинхронных проектах, например, у меня нет.
Добавить комментарий