/in8-test

Desafio da empresa IN8

Primary LanguagePython

Desafio

Acessar este site e pegar todos os notebooks Lenovo ordenando do mais barato para o mais caro. Pegar todos os dados disponíveis de cada produto.

É interessante que o robô possa ser consumido por outros serviços. Recomendamos a criação de uma pequena REST Ful API JSON para deixar mais otimizado.

Utilizar Puppeteer ou Playwright (Node ou Python)

Criar um repositório no github e nos enviar o link.

Instalação

Certifique-se de que possua git e python instalados em seu ambiente antes de seguir os proxímos passos.

Clone o projeto:

git clone https://github.com/matheusfelipeog/in8-test.git

Entre no diretório in8-test:

cd in8-test

Crie e ative o ambiente virtual usando virtualenv ou similar:

virtualenv venv && source venv/bin/activate

Instale as dependências do projeto com pip:

pip install -r requirements.txt

Playwright para Python possue algumas dependências, instale todas com:

playwright install && playwright install-deps

Start

Para executar apenas o scraper, sem iniciar a API, use o script only_scraper.py:

python only_scraper.py

Será mostrado no terminal todos os dados coletados no formato de uma lista de dicionários de dados.


Para iniciar a API, use o gunicorn:

gunicorn --workers=2 'app:create_app()'

gunicorn não oferece suporte ao Windows (mas é executado no WSL). Alternativamente, use flask run.

Acesse http://127.0.0.1:8000 se iniciou com gunicorn

Acesse http://127.0.0.1:5000 se iniciou com flask

Rotas

As rotas disponíveis para acesso aos dados pela API:

  • GET /

    Retorna um objeto contendo o status, link para a documentação e as rotas disponíveis.

  • GET /api/

    Retorna um objeto contendo as rotas disponíveis.

  • GET /api/products

    Retorna uma lista de objetos contendo todos os produtos coletados e armazenados.

  • GET /api/products/<int:product_id>

    Retorna um único objeto de um produto com base no identificador. Caso o identificador não exista, retornada um objeto com uma mensagem de aviso, junto com o código HTTP 404.

Conteúdo do retorno

Os dados do produto retornado pela API:

  • id
  • name
  • description
  • prices
  • hard_drives
  • image
  • reviews
  • rating
  • url

Fluxo da aplicação

Fluxo da aplicação