Nesse tutorial você vai aprender como coletar informações de API pública ou privadas usando Python. Os exemplos mostrados aqui poderão ser utilizados como base para consumir qualquer API Rest. Sendo assim, para ilustrar esse consumo utilizaremos exemplos simples de API’s que fornecem dados no formato JSON.
Quer aprender mais sobre programação em Python? Visite nosso curso gratuito de lógica de programação em Python.
O que é uma API?
Uma API é um serviço que permite que você envie/receba informações de algum servidor na web. Vamos a um exemplo muito prático: imagine que você criou um banco de dados que armazena os dados dos seus clientes, porém, você gostaria de compartilhar esses dados com várias aplicações dentro da sua empresa e também com terceiros. Uma solução para consumir esses dados seria dar acesso aos programadores dos sistemas ao banco de dados, assim eles podem consumir esses dados livremente sem problemas. No entanto o problema acontece quando você precisa dar acesso a terceiros, visto que esses dados são altamente sensíveis e dar o acesso do banco de dados desconhecidos não parece uma boa ideia.
A solução para isso é criar um serviço web que fornece acesso aos dados e também controla o que os clientes podem ou não acessar por meio de uma lógica de negócio bem definida – essa é a ideia básica de uma API (Application Programming Interface). Com uma API você fornecer dados e ter um controle total do que os clientes podem acessar ou não.
O que é uma API Pública/Privada?
Como dito anteriormente, uma API é um serviço que fornece acesso à dados e isso claramente é uma operação MUITO sensível, portanto, é possível que ao criar uma API o desenvolvedor escolha se essa API será privada ou pública. Uma API privada deve ter um sistema de segurança bem implementado para autenticar os usuários e prevenir qualquer tipo de ataque. Por outro lado, existem API’s que dão acesso a dados bastante simples e públicos que sua divulgação não prejudica ninguém.
O sistema de segurança mais conhecido nesse contexto é o OAuth 2.0. Esse padrão aberto para delegação de acesso é muito comum para criar uma forma de os usuários da Internet concederem a sites ou aplicativos acesso às suas informações em outros sites, mas sem fornecer as senhas.
Como consumir API’s públicas usando python
Nesse exemplo utilizaremos o IBGE como fonte de dados, portanto, ao acessar o site do IBGE encontramos diversas API’s disponíveis para serem consumidas. O primeiro passo para realizar a coleta de dados é saber qual Endpoint iremos acessar, para isso devemos ler atentamente a documentação da API.
OBS: Cuidado, uma API pode ser pública mas esses dados podem estar sobre proteção de alguma licença (Creative commons, Apache, MIT, etc.). Isso significa que ao consumir você deve seguir todas as normas especificadas pela licença, ou seja, faça as atribuições necessárias e utilize apenas dados que você tem certeza que pode consumir.
Para ilustrar esse tutorial vamos usar a API do IBGE sobre os nomes cadastrados no Brasil:
Clique aqui para acessar o serviço de dados do IBGE
Ao chamar a API com o seguinte endpoint:
https://servicodados.ibge.gov.br/api/v2/censos/nomes/joao
Recebemos o seguinte resultado:
[
{
"nome": "JOAO",
"sexo": null,
"localidade": "BR",
"res":
[
{
"periodo": "1930[",
"periodo": 60155
},
{
"periodo": "[1930,1940[",
"periodo": 141772
},
{
"periodo": "[1940,1950[",
"periodo": 256001
},
{
"periodo": "[1950,1960[",
"periodo": 396438
},
{
"periodo": "[1960,1970[",
"periodo": 429148
},
{
"periodo": "[1970,1980[",
"periodo": 279975
},
{
"periodo": "[1980,1990[",
"periodo": 273960
},
{
"periodo": "[1990,2000[",
"periodo": 352552
},
{
"periodo": "[2000,2010[",
"periodo": 794118
}
]
}
]
Para consumir uma API usando o Python podemos usar recursos nativos do Python:
# essa linha importa os recursos
import json, requests
# essa linha pega os recursos do link e atribui a variavel
response = requests.get("https://servicodados.ibge.gov.br/api/v2/censos/nomes/joao")
# realiza a conversão do response para um formato acessível ao python
json_data = json.loads(response.text)
# imprime na tela o valor do primeiro ano do censo - demonstração de navegação
print(json_data[0]['res'][0])
Lembre-se que para coletar informações em API é preciso que você tenha permissão para isso. Diversas empresas, como o Facebook, Twitter, Instagram, permitem que você crie aplicações que coletam esses dados. No entanto, existem políticas rígidas quanto ao uso dos dados.