Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Nando2003/lapscraping-ts

Repository files navigation

Para rodar sua aplicação laptop-scraping, siga as instruções abaixo.

Laptop Scraping Application

Este projeto é uma aplicação de web scraping desenvolvida em TypeScript que coleta informações sobre laptops de um site de e-commerce e as disponibiliza através de uma API RESTful. Ele utiliza Redis para caching dos resultados da raspagem.

Como Rodar a Aplicação

A aplicação pode ser executada tanto em modo de desenvolvimento quanto em produção utilizando Docker Compose.

Pré-requisitos

Certifique-se de ter o Docker e o Docker Compose instalados em sua máquina.

Configuração do Ambiente

  1. Variáveis de Ambiente: A aplicação utiliza variáveis de ambiente para configuração do Redis e do modo de debug. Crie um arquivo .env na pasta dotenv_files/ (ou seja, dotenv_files/.env) com base no .env-example fornecido:

    cp dotenv_files/.env-example dotenv_files/.env

    O conteúdo do dotenv_files/.env-example é:

    DEBUG=1
    REDIS_HOST=laptop_redis
    REDIS_PORT=6379
    

    Você pode alterar DEBUG para 0 para rodar em modo de produção.

Rodando com Docker Compose

Navegue até o diretório raiz do projeto onde o arquivo docker-compose.yml está localizado.

  1. Construir e Iniciar os Serviços:

    Para iniciar a aplicação e o servidor Redis, execute:

    docker-compose up --build
    • --build: Garante que as imagens Docker sejam construídas (ou reconstruídas) antes de iniciar os contêineres.

    A aplicação estará acessível em http://localhost:3000. O Redis estará acessível em http://localhost:3001.

Modos de Execução

O entrypoint.sh gerencia o modo de execução da aplicação:

  • Modo de Desenvolvimento (DEBUG=1): A aplicação é iniciada com npm run dev, que usa ts-node-dev para recarregar automaticamente as alterações de código. Isso é ideal para desenvolvimento.
  • Modo de Produção (DEBUG=0): A aplicação primeiro executa npm run build para compilar o TypeScript para JavaScript, e então npm start para iniciar a aplicação compilada.

Endpoints da API

Uma vez que a aplicação esteja rodando, você pode acessar os seguintes endpoints:

  • API Principal: http://localhost:3000/api/laptops

    • Método: GET
    • Descrição: Lista laptops, com filtro por título e opções de ordenação.
    • Parâmetros de Query:
      • searchByTitle (opcional, string): Texto para buscar no nome do laptop.
      • sortBy (opcional, string): Ordena por price (preço) ou name (nome). Padrão é price.
      • reverse (opcional, boolean): Se true, inverte a ordem dos resultados.
  • Documentação Swagger: http://localhost:3000/docs

    • Descrição: Documentação interativa da API gerada automaticamente com Swagger UI.

Estrutura do Projeto

  • src/services/scraping-service.ts: Contém a lógica principal para raspar os dados dos laptops.
  • src/routes/laptop-routes.ts: Define as rotas da API para buscar e filtrar laptops.
  • src/external/redis-connection.ts: Gerencia a conexão com o Redis.
  • src/models/laptop-models.ts: Define as interfaces de dados para Laptop e LaptopReview.
  • src/server.ts: Configura e inicia o servidor Express, integra as rotas e a documentação Swagger.
  • docker-compose.yml: Define os serviços Docker para a aplicação Express e o servidor Redis.
  • Dockerfile: Contém as instruções para construir a imagem Docker da aplicação.
  • entrypoint.sh: Script de entrada para o contêiner Docker, alternando entre modos de desenvolvimento e produção.
  • package.json: Lista as dependências do projeto e os scripts npm.
  • tsconfig.json: Configurações do compilador TypeScript.
  • .dockerignore: Arquivos e diretórios a serem ignorados pelo Docker durante a construção da imagem.
  • .gitignore: Arquivos e diretórios a serem ignorados pelo Git.

About

Testando minha habilidades em um web scraping e typescript de notebooks

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /