Учебники

Python — HTTP-запросы

Протокол http или Hyper Text Transfer Protocol работает на модели клиент-сервер. Обычно веб-браузер является клиентом, а компьютер, на котором размещается веб-сайт, является сервером. В python мы используем модуль запросов для создания http-запросов. Это очень мощный модуль, который может обрабатывать многие аспекты http-связи, помимо простых данных запросов и ответов. Он может обрабатывать аутентификацию, сжатие / распаковку, групповые запросы и т. Д.

HTTP-клиент отправляет HTTP-запрос на сервер в форме сообщения запроса, которое имеет следующий формат:

  • Строка запроса
  • Ноль или более полей заголовка (General | Request | Entity), за которыми следует CRLF
  • Пустая строка (т. Е. Строка, не предшествующая CRLF), указывающая конец полей заголовка
  • При желании тело сообщения
  • В следующих разделах объясняется каждая из сущностей, используемых в сообщении HTTP-запроса.

    Request-Line

    Строка запроса начинается с токена метода, за которым следует Request-URI и версия протокола и заканчивается CRLF. Элементы разделяются пробелами SP.

В следующих разделах объясняется каждая из сущностей, используемых в сообщении HTTP-запроса.

Строка запроса начинается с токена метода, за которым следует Request-URI и версия протокола и заканчивается CRLF. Элементы разделяются пробелами SP.

Request-Line = Method SP Request-URI SP HTTP-Version CRLF

Давайте обсудим каждую из частей, упомянутых в строке запроса.

Метод запроса

Метод запроса указывает метод, который должен быть выполнен на ресурсе, идентифицированном данным Request-URI . Метод чувствителен к регистру и должен всегда указываться в верхнем регистре. В следующей таблице перечислены все поддерживаемые методы в HTTP / 1.1.

SN Метод и описание
1 ПОЛУЧИТЬ

Метод GET используется для получения информации с данного сервера с использованием заданного URI. Запросы с использованием GET должны только извлекать данные и не должны оказывать никакого другого влияния на данные.

2 ГОЛОВА

То же, что и GET, но он переносит только строку состояния и раздел заголовка.

3 СООБЩЕНИЕ

POST-запрос используется для отправки данных на сервер, например, информации о клиенте, загрузки файла и т. Д. С использованием HTML-форм.

4 ПОЛОЖИЛ

Заменяет все текущие представления целевого ресурса на загруженный контент.

5 УДАЛЯТЬ

Удаляет все текущие представления целевого ресурса, заданного URI.

6 CONNECT

Устанавливает туннель к серверу, идентифицированному данным URI.

7 ОПЦИИ

Опишите параметры связи для целевого ресурса.

8 TRACE

Выполняет тестирование обратной связи с указанием пути к целевому ресурсу.

Метод GET используется для получения информации с данного сервера с использованием заданного URI. Запросы с использованием GET должны только извлекать данные и не должны оказывать никакого другого влияния на данные.

То же, что и GET, но он переносит только строку состояния и раздел заголовка.

POST-запрос используется для отправки данных на сервер, например, информации о клиенте, загрузки файла и т. Д. С использованием HTML-форм.

Заменяет все текущие представления целевого ресурса на загруженный контент.

Удаляет все текущие представления целевого ресурса, заданного URI.

Устанавливает туннель к серверу, идентифицированному данным URI.

Опишите параметры связи для целевого ресурса.

Выполняет тестирование обратной связи с указанием пути к целевому ресурсу.

Request-URI

Request-URI является унифицированным идентификатором ресурса и идентифицирует ресурс, к которому применяется запрос. Ниже приведены наиболее часто используемые формы для указания URI:

Request-URI = "*" | absoluteURI | abs_path | authority
SN Метод и описание
1 Звездочка * используется, когда HTTP-запрос применяется не к конкретному ресурсу, а к самому серверу, и разрешен только в том случае, если используемый метод не обязательно применяется к ресурсу. Например:

ОПЦИИ * HTTP / 1.1

2 AbsoluteURI используется, когда HTTP-запрос делается к прокси. Прокси запрашивается для пересылки запроса или службы из допустимого кэша и возврата ответа. Например:

ПОЛУЧИТЕ http://www.w3.org/pub/WWW/TheProject.html HTTP / 1.1

3 Наиболее распространенная форма Request-URI — это та, которая используется для идентификации ресурса на исходном сервере или шлюзе. Например, клиент, желающий получить ресурс непосредственно с исходного сервера, создаст TCP-соединение с портом 80 хоста «www.w3.org» и отправит следующие строки:

GET /pub/WWW/TheProject.html HTTP / 1.1

Хост: www.w3.org

Обратите внимание, что абсолютный путь не может быть пустым; если ни один не присутствует в исходном URI, он ДОЛЖЕН быть задан как «/» (корень сервера).

ОПЦИИ * HTTP / 1.1

ПОЛУЧИТЕ http://www.w3.org/pub/WWW/TheProject.html HTTP / 1.1

GET /pub/WWW/TheProject.html HTTP / 1.1

Хост: www.w3.org

Обратите внимание, что абсолютный путь не может быть пустым; если ни один не присутствует в исходном URI, он ДОЛЖЕН быть задан как «/» (корень сервера).

Использование запросов Python

Мы будем использовать модуль запросов для изучения http запроса.

pip install requests 

В приведенном ниже примере мы видим случай простого запроса GET и распечатки результата ответа. Мы выбираем для печати только первые 300 символов.

# How to make http request
import requests as req
r = req.get('http://www.tutorialspoint.com/python/')
print(r.text)[0:300]

Когда мы запускаем вышеуказанную программу, мы получаем следующий вывод:

<!DOCTYPE html>
<!--[if IE 8]><html class="ie ie8"> <![endif]-->
<!--[if IE 9]><html class="ie ie9"> <![endif]-->
<!--[if gt IE 9]><!-->	<html> <!--<![endif]-->
<head>
<!-- Basic -->
<meta charset="utf-8">
<title>Python Tutorial</title>
<meta name="description" content="Python Tutorial