/scrapping

Web Scrapping using Flask and Clean Architecture

Primary LanguagePython

Introdução

O projeto consiste numa aplicação feita para ‘Web’ Scraping.

O foco do sistema foi usar da Arquitetura Limpa para possibilitar modularizações. Por exemplo:

Se eu quiser trocar de Flask para Django, ou para Chalice, depois voltar para Flask... As regras, interações e apresentações de dados do sistema não preciarão ser reescritos. As únicas coisas que precisarão ser trabalhas são: criar uma classe herdando de BasicResponse e sobrescrever os métodos de resposta, e recriar o arquivo que disponibiliza as rotas. Até mesmo o conteúdo das funções atuais serão reaproveitadas, com mínimos ajustes.

Instalação

💡 Ter instalado o make no terminal ajudará:

sudo apt install make

Buildar o projeto

make build

ou:

export DOCKER_BUILDKIT=1;docker-compose build

Rodar o projeto

make run

ou:

docker-compose up

API

Endpoints

Buscar dados: /search?keyword=<pesquisa>

Este endpoint traz os 5 primeiros links da sua pesquisa.

Exemplo

curl -X GET "http://localhost:5000/search?keyword=test123"

Retorno:

{
  "links": [
    "https://test123.com.br/",
    "https://test123.com.br/",
    "https://br.linkedin.com/company/test123br",
    "https://www.instagram.com/test123br/",
    "https://www.metaventures.com.br/startups/test123-plataforma-de-automacao-e-inteligencia-de-dados/"
  ]
}

status: 200

Exemplo

curl -X GET "http://localhost:5000/search"

Retorno:

{
  "error": "Query parameter not found"
}

status: 400

Métricas: /metrics

Este endpoint traz as métricas das requisições feitas no endpoint /search.

Exemplo

curl -X GET "http://localhost:5000/metrics"

Retorno:

{
  "average_response_time": 1.1460609436035156,
  "search_queries": [
    "test123"
  ]
}

status: 200

Caso não tenha sido feita nenhuma requisição, retornada algo como:

{
  "average_response_time": 0,
  "search_queries": []
}