Как сделать запросы в интернет с помощью Python?

онлайн тренажер по питону
Онлайн-тренажер Python 3 для начинающих

Теория без воды. Задачи с автоматической проверкой. Подсказки на русском языке. Работает в любом современном браузере.

начать бесплатно

ак сделать запросы в интернет с помощью Python? Полное руководство для новичков и профессионалов

Работа с интернет-запросами — это одна из важнейших задач в современном программировании. Будь то парсинг сайтов, работа с API или автоматизация рутинных действий, без отправки HTTP-запросов не обойтись. В Python эту задачу проще всего решать с помощью библиотеки requests.

Эта статья — ваш полный путеводитель по использованию requests в Python. Мы разберём все основные возможности библиотеки, от простых GET-запросов до работы с авторизацией, куками и загрузкой файлов.


Что такое библиотека requests и зачем она нужна?

requests — это одна из самых популярных и простых в использовании библиотек для выполнения HTTP-запросов в Python. Она позволяет отправлять GET, POST, PUT, DELETE и другие типы запросов с минимальным количеством кода.

📌 Главные преимущества:

  • Простота синтаксиса.

  • Поддержка сессий и куков.

  • Работа с JSON и формами.

  • Поддержка авторизации и прокси.

  • Подробная документация (в том числе на русском языке).


Как установить библиотеку requests?

bash
pip install requests

Если вы работаете с Python 3, убедитесь, что используете соответствующую версию pip:

bash
pip3 install requests

Простые GET-запросы

Самый базовый пример — получение данных с веб-страницы.

python
import requests response = requests.get('https://api.github.com') print(response.status_code) # Статус ответа print(response.text) # Тело ответа

📌 Что здесь происходит:

  • get() отправляет HTTP GET-запрос.

  • status_code возвращает статус ответа (например, 200 — OK).

  • text содержит тело ответа в виде строки.


Работа с параметрами запроса

Иногда нужно отправить параметры в URL.

python
params = {'q': 'python', 'page': 2} response = requests.get('https://www.google.com/search', params=params) print(response.url) # Посмотреть итоговый URL

POST-запросы и отправка данных

POST-запрос используется для отправки данных на сервер.

python
data = {'username': 'admin', 'password': '12345'} response = requests.post('https://httpbin.org/post', data=data) print(response.text)

Отправка JSON-данных

Когда работаете с API, часто нужно передавать данные в формате JSON.

python
import json data = {'name': 'John', 'age': 30} response = requests.post('https://httpbin.org/post', json=data) print(response.json()) # Автоматическое преобразование ответа в JSON

Работа с заголовками (Headers)

Иногда необходимо указать специальные заголовки, например для авторизации или имитации браузера.

python
headers = {'User-Agent': 'Mozilla/5.0'} response = requests.get('https://httpbin.org/headers', headers=headers) print(response.json())

Как работать с сессиями и куки (Cookies)

Если нужно сохранять сессию между запросами (например, авторизация), используйте Session.

python
session = requests.Session() session.get('https://httpbin.org/cookies/set/sessioncookie/123456789') response = session.get('https://httpbin.org/cookies') print(response.text)

Как скачать файл с помощью requests

python
url = 'https://example.com/image.jpg' response = requests.get(url) with open('image.jpg', 'wb') as file: file.write(response.content)

Обработка ошибок и статусов HTTP

Важно обрабатывать ошибки, чтобы программа не «падала» при сетевых проблемах.

python
try: response = requests.get('https://api.github.com/invalid-url') response.raise_for_status() # Поднимает исключение при ошибке HTTP except requests.exceptions.HTTPError as err: print(f"HTTP ошибка: {err}") except requests.exceptions.ConnectionError: print("Ошибка соединения") except requests.exceptions.Timeout: print("Превышено время ожидания") except requests.exceptions.RequestException as e: print(f"Другая ошибка: {e}")

Установка тайм-аутов

Чтобы не зависать в ожидании ответа, используйте параметр timeout.

python
try: response = requests.get('https://httpbin.org/delay/5', timeout=2) except requests.exceptions.Timeout: print("Время ожидания истекло!")

Работа с прокси

Если нужно обойти блокировки или изменить IP-адрес, можно использовать прокси.

python
proxies = { 'http': 'http://10.10.1.10:3128', 'https': 'http://10.10.1.10:1080', } response = requests.get('https://httpbin.org/ip', proxies=proxies) print(response.text)

Авторизация HTTP Basic и Token

📌 Basic авторизация:

python
from requests.auth import HTTPBasicAuth response = requests.get('https://httpbin.org/basic-auth/user/pass', auth=HTTPBasicAuth('user', 'pass')) print(response.status_code)

📌 Token авторизация:

python
headers = {'Authorization': 'Bearer YOUR_API_TOKEN'} response = requests.get('https://api.example.com/data', headers=headers) print(response.json())

Полезные ресурсы и документация


FAQ — Часто задаваемые вопросы

1. Что такое requests в Python?

Это библиотека для выполнения HTTP-запросов. Позволяет легко отправлять GET, POST и другие виды запросов, работать с API и загружать данные из интернета.


2. Что делать, если запросы блокируются сайтом?

  • Используйте корректные заголовки (User-Agent).

  • Настройте прокси.

  • Применяйте задержки между запросами, чтобы не перегружать сервер.


3. Как отправить файл через POST-запрос?

python
files = {'file': open('example.txt', 'rb')} response = requests.post('https://httpbin.org/post', files=files) print(response.text)

4. Можно ли использовать requests для работы с REST API?

Да, библиотека идеально подходит для работы с REST API. Она поддерживает все необходимые методы и обработку JSON.


5. Чем requests лучше стандартной библиотеки urllib?

Requests проще, понятнее и предоставляет более удобный интерфейс. Кроме того, у неё отличная поддержка работы с сессиями, куками и JSON.


6. Как ограничить количество попыток при неудачных запросах?

python
from requests.adapters import HTTPAdapter from requests.packages.urllib3.util.retry import Retry session = requests.Session() retries = Retry(total=3, backoff_factor=0.3) adapter = HTTPAdapter(max_retries=retries) session.mount('http://', adapter) session.mount('https://', adapter)

Заключение

Библиотека requests — это универсальный инструмент для работы с HTTP-запросами в Python. Она подходит как для простых сценариев, так и для сложных интеграций с API и системами авторизации.

Если вы только начинаете осваивать работу с сетью в Python — requests станет вашим лучшим выбором благодаря простоте, надёжности и широким возможностям.

Не забывайте о безопасности ваших запросов, правильно обрабатывайте ошибки и всегда используйте надёжные источники данных.

Новости