Biblioteca Requests em Python: Guia Completo
Neste artigo, você aprenderá como instalar a biblioteca Requests e como usá-la para fazer solicitações HTTP consumir dados de APIs em Python.
A biblioteca Requests
é uma biblioteca Python
simples e elegante, construída para tornar as requisições HTTP
fáceis e amigáveis para humanos.
A biblioteca abstrai a complexidade de fazer requisições HTTP
e permite que você interaja com serviços da Web
de uma maneira mais simples e consistente do que usando a biblioteca urllib
(biblioteca padrão do Python
para trabalhar com requisições HTTP
).
Neste artigo, você aprenderá como instalar a biblioteca Requests
e como usá-la para fazer solicitações HTTP
em Python
.
Temas que serão abordados neste artigo:
- Como instalar a biblioteca
Requests
; - Como fazer uma requisição
HTTP
com a bibliotecaRequests
(GET
ePOST
); - Como passar parâmetros em uma requisição
HTTP
(headers
,params
,data
,json
); - Como fazer uma requisição
HTTP
com autenticação básica; - Como interpretar a resposta de uma requisição;
- Como utilizar
proxies
em uma requisição; - Outros recursos da biblioteca
Requests
.
Requests
Como instalar a biblioteca Para instalar a biblioteca Requests
, basta executar o seguinte comando no terminal:
pip install requests
Como fazer uma requisição HTTP com a biblioteca Requests
A biblioteca Requests
fornece uma interface simples e elegante para fazer requisições HTTP
em Python
, todos os tipos de requisições HTTP
são suportados(GET
, POST
, PUT
, DELETE
) e seguem um padrão semelhante.
Requisição GET
A requisição GET
é usada para recuperar dados de um servidor Web
.
Para fazer uma requisição GET
com a biblioteca Requests
, basta chamar a função get()
e passar a URL
como argumento.
import requests
response = requests.get('https://httpbin.org/get')
print(response)
Saída:
<Response [200]>
O objeto Response
contém a resposta da requisição HTTP
, para acessar o conteúdo da resposta, basta acessar o atributo text
.
import requests
response = requests.get('https://httpbin.org/get')
print(response.text)
Saída:
{
"args": {},
"headers": {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7",
"Host": "httpbin.org",
"Sec-Ch-Ua": "\"Chromium\";v=\"112\", \"Google Chrome\";v=\"112\", \"Not:A-Brand\";v=\"99\"",
"Sec-Ch-Ua-Mobile": "?0",
"Sec-Ch-Ua-Platform": "\"Windows\"",
"Sec-Fetch-Dest": "document",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "none",
"Sec-Fetch-User": "?1",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
"X-Amzn-Trace-Id": "Root=1-64555738-2ed5031d33327b7d642be639"
},
"origin": "177.126.84.113",
"url": "https://httpbin.org/get"
}
Além do atributo text
, o objeto Response
possui outros atributos que podem ser acessados:
status_code
: código de status da resposta;headers
: cabeçalhos da resposta;content
: conteúdo da resposta em bytes;json()
: conteúdo da resposta em formatoJSON
(se a resposta não for umJSON
, uma exceção será lançada);cookies
: cookies da resposta;next
: retorna a próxima página de uma resposta paginada.
Requisição POST
A requisição POST
é usada para enviar dados para um servidor Web
.
Para fazer uma requisição POST
com a biblioteca Requests
, basta chamar a função post()
e passar a URL
e os dados a serem enviados como argumentos.
Os dados a serem enviados podem ser passados através do parâmetro data
ou json
, o parâmetro data
é usado para enviar dados no formato form-urlencoded
e o parâmetro json
é usado para enviar dados no formato JSON
.
import requests
response = requests.post('https://httpbin.org/post', data={'nome': 'Covil do Dev'})
print(response.text)
Saída:
{
"args": {},
"data": "",
"files": {},
"form": {
"nome": "Covil do Dev"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "17",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.27.1",
"X-Amzn-Trace-Id": "Root=1-64555883-6fd2e0d2663eb6336afbc853"
},
"json": null,
"origin": "34.90.27.120",
"url": "https://httpbin.org/post"
}
Caso você queira enviar os dados no formato JSON
, basta passar o parâmetro json
com os dados a serem enviados.
import requests
response = requests.post('https://httpbin.org/post', json={'nome': 'Covil do Dev'})
print(response.text)
Saída:
{
"args": {},
"data": "{\"nome\": \"Covil do Dev\"}",
"files": {},
"form": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "23",
"Content-Type": "application/json",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.27.1",
"X-Amzn-Trace-Id": "Root=1-64555901-4a9a3a2e4b5a3a7e4a2a2a2a"
},
"json": {
"nome": "Covil do Dev"
},
"origin": "34.90.27.120",
"url": "https://httpbin.org/post"
}
Headers
Os cabeçalhos HTTP
permitem que o cliente e o servidor passem informações adicionais com a solicitação ou resposta HTTP
.
Para enviar cabeçalhos HTTP
com a biblioteca Requests
, basta passar o parâmetro headers
com os cabeçalhos a serem enviados.
import requests
response = requests.get('https://httpbin.org/get', headers={'User-Agent': 'Covil do Dev'})
print(response.text)
Saída:
{
"args": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Host": "httpbin.org",
"User-Agent": "Covil do Dev",
"X-Amzn-Trace-Id": "Root=1-6455595a-79e1d006184c87d321e81b01"
},
"origin": "34.90.27.120",
"url": "https://httpbin.org/get"
}
Cookies
Os cookies são usados para armazenar informações sobre o usuário.
Para enviar cookies com a biblioteca Requests
, basta passar o parâmetro cookies
com os cookies a serem enviados.
import requests
response = requests.get('https://httpbin.org/cookies', cookies={'nome': 'Covil do Dev'})
print(response.text)
Saída:
{
"cookies": {
"nome": "Covil do Dev"
}
}
Autenticação
A autenticação é o processo de verificar se um usuário é quem ele diz ser.
A biblioteca Requests
suporta vários tipos de autenticação, como Basic
, Digest
, OAuth
, Hawk
, AWS Signature
, HTTP
e Token
.
Autenticação Básica
A autenticação básica é um método de autenticação HTTP
simples, onde o nome de usuário e a senha são enviados no cabeçalho Authorization
de uma solicitação HTTP
.
Para fazer uma solicitação HTTP
com autenticação básica, basta passar o parâmetro auth
com o nome de usuário e a senha.
import requests
response = requests.get('https://httpbin.org/basic-auth/covildodev/123456', auth=('covildodev', '123456'))
print(response.text)
Saída:
{
"authenticated": true,
"user": "covildodev"
}
Caso a autenticação falhe, o código de status 401
será retornado.
import requests
response = requests.get('https://httpbin.org/basic-auth/covildodev/123456', auth=('covildodev', '123'))
print(response.status_code)
Saída:
401
Utilizando Proxies
Um proxy é um servidor que atua como intermediário entre o cliente e o servidor de destino.
Para fazer uma solicitação HTTP
usando um proxy, basta passar o parâmetro proxies
com o endereço do proxy.
import requests
response = requests.get('https://httpbin.org/get', proxies={'http': 'http://localhost:8080'})
print(response.text)
Saída:
{
"args": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.27.1",
"X-Amzn-Trace-Id": "Root=1-64555a79-020f2d5644607c0312a6df5c"
},
"origin": "34.90.27.120",
"url": "https://httpbin.org/get"
}
Conclusão
Neste artigo, você aprendeu como fazer solicitações HTTP
usando a biblioteca Requests
em Python
.
Para saber mais sobre a biblioteca Requests
, consulte a documentação oficial.