Python requests é uma bi­bli­o­teca popular que permite enviar re­qui­si­ções HTTP e verificar as respostas. Embora .get() seja o método mais im­por­tante do módulo, há várias outras opções dis­po­ní­veis.

O que é Python requests?

Python requests é uma bi­bli­o­teca padrão que permite enviar re­qui­si­ções HTTP dentro da linguagem de pro­gra­ma­ção. Com base em uma interface de pro­gra­ma­ção simples e eficaz, a bi­bli­o­teca facilita a in­te­gra­ção de recursos de terceiros. Python requests oferece diversas fer­ra­men­tas para enviar re­qui­si­ções HTTP e obter as respostas cor­res­pon­den­tes. Embora am­pla­mente utilizada e re­co­men­dada, a bi­bli­o­teca não faz parte da ins­ta­la­ção padrão do Python.

Ins­ta­la­ção e iniciação da bi­bli­o­teca Python requests

Antes de instalar o Python requests, é re­co­men­dá­vel con­fi­gu­rar primeiro uma máquina virtual, onde você pode testar a bi­bli­o­teca com segurança. Para instalar, utilize o pip. O código é o seguinte:

$ python -m pip install requests
bash

Para usar a bi­bli­o­teca após a ins­ta­la­ção, você precisa do seguinte código:

import requests
python

Fun­ci­o­na­mento, sintaxe e métodos de Python requests

Assim como outras fer­ra­men­tas similares, o Python requests envia uma re­qui­si­ção HTTP e, quando trans­mi­tida com sucesso, recebe uma resposta. Esta resposta é um objeto que contém todas as in­for­ma­ções es­sen­ci­ais, como conteúdo, co­di­fi­ca­ção e status. A sintaxe de uma request (re­qui­si­ção) é sempre da seguinte forma:

requests.metodo(url, **kwargs)
python
Nota

kwargs refere-se a ar­gu­men­tos opcionais que você pode passar para métodos como headers, files ou cookies.

Embora .get() seja o método que você mais utilizará, o Python requests oferece alguns outros. Estes são os seguintes:

  • .delete(url, **kwargs): Com .delete() você exclui um recurso es­pe­cí­fico no servidor.
  • .get(url, params=None, **kwargs): Com .get(), você solicita in­for­ma­ções de um servidor.
  • .head(url, **kwargs): Com .head(), você solicita apenas os ca­be­ça­lhos de uma resposta do servidor.
  • .patch(url, data=None, **kwargs): Com .patch(), você modifica par­ci­al­mente um recurso, enviando apenas as al­te­ra­ções ne­ces­sá­rias
  • .post(url, data=None, json=None, **kwargs): Com .post(), você envia dados para um servidor, ge­ral­mente para criar um novo recurso.
  • .put(url, data=None, **kwargs): Com .put(), você atualiza um recurso existente ou o cria, caso ainda não exista.
  • .request(method, url, **kwargs): Com .request(), você envia uma re­qui­si­ção HTTP per­so­na­li­zada, es­pe­ci­fi­cando o método e a URL.

Exemplo do método .get() com Python requests

A estrutura do .get() é muito simples, o que torna o Python requests uma bi­bli­o­teca prática. Você só precisa do método e da URL que deseja acessar. A URL deve ser escrita entre aspas. Um exemplo de código seria:

import requests 
requests.get("https://exemplo.com")
python

Agora, você receberá uma resposta do servidor. Para exem­pli­fi­car, você pode armazenar a resposta em uma variável. No nosso exemplo, ficaria assim:

import requests 
response = requests.get("https://exemplo.com")
python

Consultar códigos de status

A resposta mais simples que você recebe em uma re­qui­si­ção é um código de status HTTP. Ele indica se a so­li­ci­ta­ção foi bem-sucedida ou não. O código de status é composto por três dígitos e possui diversas variantes que informam sobre o andamento da so­li­ci­ta­ção. As prin­ci­pais ca­te­go­rias incluem:

  • 1XX: Contém in­for­ma­ções in­for­ma­ti­vas
  • 2XX: Indica uma so­li­ci­ta­ção bem-sucedida
  • 3XX: Informa um re­di­re­ci­o­na­mento da so­li­ci­ta­ção
  • 4XX: Indica um erro causado pelo cliente
  • 5XX: Indica um erro causado pelo servidor

Os códigos de status mais co­nhe­ci­dos são: “200 – OK” (indicam uma so­li­ci­ta­ção bem-sucedida) e “404 – Not Found”, (ocorre quando os dados so­li­ci­ta­dos não são en­con­tra­dos no servidor).

Após fazer uma re­qui­si­ção com Python requests, você pode consultar o status com .status_code. Para isso, use este código:

response.status_code
python

Se a so­li­ci­ta­ção for bem-sucedida, a saída será:

200
python

Para uma vi­su­a­li­za­ção mais clara, utilize o código a seguir:

if response.status_code == 200: 
print("A solicitação foi bem-sucedida.") 
elif response.status_code == 404: 
print("A solicitação não foi bem-sucedida.")
python

Vi­su­a­li­zar ca­be­ça­lhos com Python requests

O cabeçalho de uma resposta HTTP contém várias in­for­ma­ções úteis. Entre elas, estão o tipo de dado enviado, o tempo de cache e outras in­for­ma­ções. Com a bi­bli­o­teca Python requests, você pode acessar os ca­be­ça­lhos de forma simples. Para isso, primeiro faça uma re­qui­si­ção com .get() e depois .headers:

import requests 
response = requests.get("https://exemplo.com") 
response.headers
python

A saída será um objeto contendo os valores dos ca­be­ça­lhos. Esses valores podem ser con­sul­ta­dos in­di­vi­du­al­mente, es­pe­ci­fi­cando a chave cor­res­pon­dente. Se você quiser verificar o tipo de dado retornado, use o seguinte comando:

response.headers["content-type"]
python

Acessar Payload

O conjunto de dados enviado entre o servidor e o cliente é conhecido como “Payload”. Ele está lo­ca­li­zado no corpo da resposta HTTP. Com response, você pode acessar essas in­for­ma­ções. Para vi­su­a­li­zar o conteúdo em bytes, use a seguinte instrução:

import requests
response = requests.get("https://exemplo.com") 
response.content 
type(response.content)
python

Se você quiser converter as in­for­ma­ções coletadas em uma string, use o seguinte código:

response.text 
type(response.text)
python

Python requests usa au­to­ma­ti­ca­mente a co­di­fi­ca­ção definida no cabeçalho da resposta. Se ne­ces­sá­rio, você pode instruir o sistema a usar outro método. Este é um exemplo de código:

response.encoding = "utf-8" 
response.text
python

Verificar progresso

Ao enviar uma re­qui­si­ção, o Python requests prepara o processo para evitar erros. Entre outras ações, ele verifica os ca­be­ça­lhos da re­qui­si­ção. Você pode acom­pa­nhar o progresso dessa ve­ri­fi­ca­ção uti­li­zando o atributo .request. O código a seguir mostra como fazer isso:

import requests 
response = requests.post("https://exemplo.com", json={"key": "value"}) 
print(response.request.headers["content-type"]) 
print(response.request.url) 
print(response.request.body)
python

Com esse código, você obtém in­for­ma­ções sobre o Payload, os ca­be­ça­lhos, a URL e outros detalhes da re­qui­si­ção.

Au­ten­ti­ca­ção com o módulo Python requests

O parâmetro auth é utilizado no Python requests para au­ten­ti­car a re­qui­si­ção junto ao servidor. Isso permite que o servidor valide a au­ten­ti­ci­dade da re­qui­si­ção e controle com quem está in­te­ra­gindo. Para usar a au­ten­ti­ca­ção, você pode aplicar o seguinte código:

import requests 
from requests.auth import HTTPBasicAuth 
response = requests.get("https://sua_pagina.com/basic-auth/user/senha",  
auth=HTTPBasicAuth("user", "senha")) 
print(response.status_code) 
print(response.request.headers["Authorization"])
python

Usar cer­ti­fi­cado SSL

O uso de um cer­ti­fi­cado SSL é ge­ral­mente re­co­men­dado para proteger os dados e evitar acessos não au­to­ri­za­dos. O Python requests oferece essa opção por padrão. Se for ne­ces­sá­rio desativar a ve­ri­fi­ca­ção SSL para uma re­qui­si­ção es­pe­cí­fica, você pode fazer isso com o seguinte código:

import requests 
requests.get("https://exemplo.com", verify=False)
python

No entanto, o Python requests exibirá um aviso ao fazer isso.

Con­fi­gu­rar timeout no Python requests

No Python requests, você também pode definir um tempo limite para uma resposta. Por padrão, o cliente pode esperar in­de­fi­ni­da­mente por uma resposta. Se essa resposta não chegar, as re­qui­si­ções podem se acumular e com­pro­me­ter o de­sem­pe­nho. O parâmetro timeout evita esse problema. No exemplo a seguir, o Python requests será con­fi­gu­rado para cancelar a re­qui­si­ção após dois segundos:

requests.get("https://exemplo.com", timeout=2)
python
Dica

Implante seu site ou apli­ca­tivo di­re­ta­mente via GitHub: Com o Deploy Now da IONOS, você obtém a solução ideal para apli­ca­ções Single-Page e sites estáticos. Escolha o plano adequado para suas ne­ces­si­da­des e aproveite uma con­fi­gu­ra­ção mais rápida, fluxos de trabalho oti­mi­za­dos e um design seguro!

Ir para o menu principal