API REST em Python/Flask para consulta de dados públicos da vitivinicultura do Brasil, obtidos via web scraping do site da Embrapa Uva e Vinho. A API segue arquitetura MVC simplificada, utiliza autenticação JWT e possui fallback para dados CSV locais caso o scraping falhe.
- Autenticação JWT (
/register
,/login
) - Endpoints de produção:
GET /producao
— Todos os dados de produção de 1970 a 2023.GET /producao/{ano}
— Dados de produção do ano específico.
- Endpoints de processamento:
GET /processamento/{ano}
— Dados de todas as subopções (viníferas, americanas, mesa, sem classificação) para o ano.GET /processamento/{tipo}/{ano}
— Dados de uma subopção específica para o ano.
- Endpoints de comercialização:
GET /comercializacao
— Todos os dados de comercialização de 1970 a 2023.GET /comercializacao/{ano}
— Dados de comercialização do ano específico.
- Endpoints de importação:
GET /importacao/{ano}
— Dados de todos os derivados importados do ano específico.GET /importacao/{tipo}/{ano}
— Dados de um derivado específico importado no ano.
- Endpoints de exportação:
GET /exportacao/{ano}
— Dados de todos os derivados exportados do ano específico.GET /exportacao/{tipo}/{ano}
— Dados de um derivado específico exportado no ano.
- Scraping dinâmico com BeautifulSoup e fallback automático para CSV (
static_data/
). - Código documentado e pronto para testes via Postman.
POST /register
— Cadastro de usuárioPOST /login
— Login e obtenção do token JWT
GET /producao
GET /producao/{ano}
GET /processamento/{ano}
GET /processamento/{tipo}/{ano}
- Tipos:
viniferas
,americanas
,mesa
,semclass
- Tipos:
GET /comercializacao
GET /comercializacao/{ano}
GET /importacao/{ano}
GET /importacao/{tipo}/{ano}
- Tipos:
vinhos
,espumantes
,frescas
,passas
,suco
- Tipos:
GET /exportacao/{ano}
GET /exportacao/{tipo}/{ano}
- Tipos:
vinhos
,espumantes
,frescas
,suco
- Tipos:
/producao/2023
:
{
"2023": [
{
"categoria": "VINHO DE MESA",
"produtos": [
{"produto": "Tinto", "quantidade": 139320884},
{"produto": "Branco", "quantidade": 27910299}
]
},
"fonte": "Embrapa - Sistema de dados vitivinícolas"
]
}
/processamento/2023
:
{
"2023": {
"viniferas": [ {"cultivar": "TINTAS", "quantidade": 35881118}, ... ],
"americanas": [ {"cultivar": "BORDO", "quantidade": 154310837}, ... ],
"mesa": [ {"cultivar": "TINTAS", "quantidade": 175030}, ... ],
"semclass": [ {"cultivar": "Sem classificação", "quantidade": 0} ]
},
"fonte": "Embrapa - Sistema de dados vitivinícolas"
}
/processamento/viniferas/2023
:
{
"ano": 2023,
"tipo": "viniferas",
"dados": [
{"cultivar": "TINTAS", "quantidade": 35881118},
{"cultivar": "Alicante Bouschet", "quantidade": 4108858}
],
"fonte": "Embrapa - Sistema de dados vitivinícolas"
}
/comercializacao/2023
:
{
"2023": [
{
"categoria": "VINHO FINO DE MESA",
"produtos": [
{"produto": "Tinto", "quantidade": 12450606},
{"produto": "Rosado", "quantidade": 1214583}
]
}
],
"fonte": "Embrapa - Sistema de dados vitivinícolas"
}
/importacao/2023
:
{
"2023": {
"vinhos": [{"pais": "Argentina", "quantidade": 12000000, "valor": 89456123}, ...],
"espumantes": [{"pais": "França", "quantidade": 1500000, "valor": 45632187}, ...],
"frescas": [{"pais": "Chile", "quantidade": 5200000, "valor": 12345678}],
"passas": [{"pais": "Turquia", "quantidade": 1800000, "valor": 8901234}],
"suco": [{"pais": "Argentina", "quantidade": 3200000, "valor": 15678901}]
},
"fonte": "Embrapa - Sistema de dados vitivinícolas"
}
/importacao/vinhos/2023
:
{
"ano": 2023,
"tipo": "vinhos",
"dados": [
{"pais": "Argentina", "quantidade": 12000000, "valor": 89456123},
{"pais": "Chile", "quantidade": 8500000, "valor": 65432198}
],
"fonte": "Embrapa - Sistema de dados vitivinícolas"
}
/exportacao/2023
:
{
"2023": {
"vinhos": [{"pais": "Estados Unidos", "quantidade": 800000, "valor": 15234567}, ...],
"espumantes": [{"pais": "Reino Unido", "quantidade": 650000, "valor": 12456789}, ...],
"frescas": [{"pais": "Estados Unidos", "quantidade": 100000, "valor": 3456789}],
"suco": [{"pais": "Paraguai", "quantidade": 2500000, "valor": 8765432}]
},
"fonte": "Embrapa - Sistema de dados vitivinícolas"
}
/exportacao/vinhos/2023
:
{
"ano": 2023,
"tipo": "vinhos",
"dados": [
{"pais": "Estados Unidos", "quantidade": 800000, "valor": 15234567},
{"pais": "Reino Unido", "quantidade": 650000, "valor": 12456789}
],
"fonte": "Embrapa - Sistema de dados vitivinícolas"
}
- Instale as dependências:
pip install -r requirements.txt
- Certifique-se de que os arquivos CSV estão presentes em
static_data/
. - Execute a aplicação:
python main.py
- Use Postman ou outro cliente HTTP para testar os endpoints (JWT obrigatório).
- O scraping utiliza BeautifulSoup e segue a estrutura do HTML oficial da Embrapa.
- Se o scraping falhar, os dados são carregados automaticamente dos arquivos CSV.
- O projeto está pronto para deploy no Render.
/
├── app/
│ ├── controllers/
│ ├── models/
│ ├── routes/
│ ├── services/
│ └── utils/
├── static_data/
├── collection-postman/
├── .env
├── requirements.txt
├── main.py
└── README.md
MIT