Рубрики
Без рубрики

Запросы в Python – Запрос Веб-Страниц с использованием Python

Запросы в Python-это элегантная библиотека, которая позволяет отправлять запросы HTTP/1.1 на веб-страницы через Python.

Автор оригинала: Pankaj Kumar.

Запросы в Python-это элегантная библиотека, которая позволяет отправлять запросы HTTP/1.1 на веб-страницы через Python.

Он официально поддерживается как Python 2.7, так и 3.5+. Дополнительные функции, такие как Сохранение активности, объединение соединений, сеансы с постоянными файлами cookie, проверка SSL в стиле браузера, делают его идеальным выбором для разработчиков.

В этой статье мы узнаем больше о некоторых из этих функций и о том, как вы можете начать использовать модуль запросов Python для создания веб-запросов.

Как установить запросы в Python?

Установка requests в Python проста и понятна. У вас может быть несколько подходов к установке модуля в Python. Но в этой статье мы покажем вам, как использовать его с модулем pip .

Откройте терминал или командную строку (если вы являетесь пользователем Windows) и введите следующую команду.

pip install requests 
#Or (if the first command doesn't work) use:
pip3 install requests

Он должен успешно установить модуль запросов на вашем устройстве.

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

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

Каждый раз, когда вы нажимаете на ссылку, мы отправляем HTTP (протокол передачи гипертекста) запрос на сервер страницы запросов.

Получив запрос, сервер отправляет нам обратно нужный контент, который мы у него запросили. Два самых полезных HTTP-запроса, которые мы собираемся изучить, – это запросы GET и POST.

В следующем разделе мы узнаем, как использовать эти методы с библиотекой запросов. Но сначала нам нужно импортировать его в ваш скрипт или интерпретатор.

import requests

1. ПОЛУЧИТЬ запрос

Этот метод используется для указания на то, что мы запрашиваем содержимое выбранного нами URL-адреса с сервера. Итак, допустим, мы хотим получить домашнюю страницу Google, используя наши HTTP-запросы.

Введите следующую строку.

r = requests.get("http://google.com")

Вот что делает одна строка кода: он отправляет запрос HTTP GET на домашнюю страницу Google с помощью метода get (), где URL-адрес указан в качестве аргумента. И объект ответа хранится в нашей переменной ‘r’.

Экземпляр нашего объекта ответа дополнительно классифицирует сохраненные данные и сохраняет их в соответствующих атрибутах. Вот пример ниже

print(r.status_code) 
#The output provides the status code for the url. For a success full attempt, the result is 200

print(r.headers)
#The following attribute returns a python dictionary containing key-value pair of the headers

print(r.text)
#This command prints out the response content from the server or Static Source Code. 

print(r.encoding)
r.encoding = 'utf-8' 
#Requests library also allows you to see or change the encoding of the response content. 

2. Передача параметров с помощью метода GET

Часто один метод GET не позволяет нам найти всю информацию, к которой нам нужен доступ, поэтому нам нужно передать дополнительные параметры с нашим исходным запросом get.

Параметры в основном представляют собой пары ключ-значение данных, заключенных в кортеж или список . Мы можем отправить его, используя параметр params нашего метода get ().

См.Синтаксис, чтобы следовать дальше.

import requests 
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get('http://httpbin.org/get', params=payload)
print(r.text)

Выход:

{
  "args": {
    "key1": "value1",
    "key2": "value2"
  },
  "headers": {
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate",
    "Host": "httpbin.org",
    "User-Agent": "python-requests/2.22.0",
    "X-Amzn-Trace-Id": "Root=1-5f9a64d1-2abfc74b2725386140a897e3"
  },
  "origin": 0.0.0.0, 
  "url": "http://httpbin.org/get?key1=value1&key2=value2"
}

3. Запрос на публикацию

В отличие от запросов GET в Python, метод POST в HTTP требует, чтобы с ним была размещена полезная нагрузка. Этот метод используется для отправки данных на сервер, а не для их непосредственного извлечения. В нашей библиотеке запросов мы можем получить доступ к POST с помощью метода post ().

Взгляните на синтаксис:

import requests 
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("https://httpbin.org/post", data=payload)
print(r.text)

Выход:

{
  "args": {},
  "data": "",
  "files": {},
  "form": {
    "key1": "value1",
    "key2": "value2"
  },
  "headers": {
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate",
    "Content-Length": "23",
    "Content-Type": "application/x-www-form-urlencoded",
    "Host": "httpbin.org",
    "User-Agent": "python-requests/2.22.0",
    "X-Amzn-Trace-Id": "Root=1-5f9a6726-276da087230912e01dd5dcd7"
  },
  "json": null,
  "origin": [REDACTED],
  "url": "https://httpbin.org/post"
}

Некоторые дополнительные функции запросов в Python

Наша статья в основном посвящена двум наиболее основным, но очень важным методам HTTP. Но модуль запросов поддерживает множество таких методов, как PUT, PATCH, DELETE и т. Д.

Одной из ключевых причин, по которой модуль “запросы” так известен среди разработчиков, являются такие дополнительные функции, как:

  1. Объект сеансов: Он в основном используется для хранения одних и тех же файлов cookie между различными запросами, обеспечивая более быстрый ответ.
  2. Поддержка прокси-серверов SOCKS: Хотя вам необходимо установить отдельную зависимость (называемую ” запросы[socks]”), она может значительно повысить производительность для нескольких запросов, особенно если скорость сервера ограничивает ваш IP-адрес.
  3. Проверка SSL: Вы можете принудительно проверить, правильно ли веб-сайт поддерживает SSL с помощью запросов, предоставив дополнительный аргумент” в методе get (). Если веб – сайт не показывает надлежащей поддержки SSL, скрипт выдаст ошибку.

Вывод

Будь то веб-очистка или другая работа, связанная с HTTP, модуль запросов является самым популярным вариантом.

Единственное, в чем модуль запросов не справляется, – это обработка динамических изменений в исходном коде страницы, поскольку модуль не предназначен для выполнения команд javascript.

Надеюсь, эта статья дала вам базовое представление о том, что делает модуль.

Ресурсы

Вы можете прочитать больше о модуле на их официальном сайте документации: https://requests.readthedocs.io/en/master/ Их Официальное репо на Github: https://github.com/psf/requests