API pública para consulta de livros extraídos via web scraping do site books.toscrape.com. Este projeto faz parte do Tech Challenge da Fase 1 de Machine Learning Engineering FIAP / ALURA.
Aluno: Guilherme Favaron
Video de Apresentação deste Projeto: VIDEO
- Web Scraping: Extração automatizada de dados de livros
- API RESTful: Endpoints para consulta e busca de livros
- Documentação Swagger: Interface interativa para testes
- Paginação: Suporte a consultas paginadas
- Filtros: Busca por título, categoria e faixa de preço
- Estatísticas: Dados agregados sobre o catálogo
Cada livro contém as seguintes informações:
- Título: Nome completo do livro
- Preço: Valor em libras (£)
- Rating: Avaliação de 1 a 5 estrelas
- Disponibilidade: Status de estoque
- Categoria: Classificação do livro
- Imagem: URL da capa do livro
- URL: Link para a página do livro
- Python 3.9+
- FastAPI: Framework web moderno e rápido
- BeautifulSoup4: Web scraping
- Pandas: Manipulação de dados
- Uvicorn: Servidor ASGI
- Pydantic: Validação de dados
tech_challenge/
├── api/ # API FastAPI
│ ├── main.py # Aplicação principal
│ ├── models.py # Modelos Pydantic
│ ├── database.py # Gerenciamento de dados
│ └── __init__.py # Inicialização do pacote
├── scripts/ # Scripts de web scraping
│ └── scraper.py # Scraper principal
├── data/ # Dados extraídos
│ └── books_data.csv # Dataset de livros
├── docs/ # Documentação
├── requirements.txt # Dependências
└── README.md # Este arquivo
- Python 3.9 ou superior
- pip (gerenciador de pacotes Python)
- Clone o repositório
git clone git@github.com:guifav/tech_challenger_1.git
cd tech_challenger_1- Instale as dependências
pip install -r requirements.txt- Execute o web scraping (opcional - dados já incluídos)
python3 scripts/scraper.py- Inicie a API
cd api
python3 -m uvicorn main:app --reload --host 0.0.0.0 --port 8000Acesse: http://localhost:8000/api/docs
GET /api/v1/books?page=1&limit=50GET /api/v1/books/{book_id}GET /api/v1/books/search?title=python&category=technologyGET /api/v1/categoriesGET /api/v1/stats/overviewGET /api/v1/books/top-rated?limit=10GET /api/v1/books/price-range?min_price=10&max_price=50import requests
# Buscar livros
response = requests.get('http://localhost:8000/api/v1/books?limit=5')
books = response.json()
# Buscar por título
response = requests.get('http://localhost:8000/api/v1/books/search?title=python')
results = response.json()# Listar primeiros 5 livros
curl "http://localhost:8000/api/v1/books?limit=5"
# Buscar livro específico
curl "http://localhost:8000/api/v1/books/1"
# Estatísticas gerais
curl "http://localhost:8000/api/v1/stats/overview"- Total de livros: 1.000
- Formato: CSV
- Localização:
data/books_data.csv - Campos: id, title, price, rating, availability, category, image_url, book_url
Este projeto está preparado para deploy no Vercel. Consulte o plano arquitetural para mais detalhes sobre escalabilidade e integração.
- Fork o projeto
- Crie uma branch para sua feature
- Commit suas mudanças
- Push para a branch
- Abra um Pull Request
Este projeto é parte do Tech Challenge e está disponível para fins educacionais.
Para dúvidas ou sugestões sobre este projeto, entre em contato comigo. Procure no LinkedIn por Guilherme Favaron (https://www.linkedin.com/in/guilhermefavaron/) ou acesse www.guilhermefavaron.com.br
Tech Challenge - Fase 1 - Machine Learning Engineering