Skip to content

malvgomes/product-scraping

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Scraper de Produtos

Este projeto consiste na implmentação de uma API de busca de dados em uma URL passada por parâmetro.

Como funciona

  • Para realizar a busca, basta enviar uma requisição POST para o endpoint http://localhost:3000/product, enviando no corpo da requisição a url do produto. Exemplo:
  curl --location --request POST 'http://localhost:3000/product' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "url": "https://www.amazon.com.br/dp/B07SG8F1QF?ref=MarsFS_Echo_show8"
  }'
  • Ao enviar a URL, é feita uma busca no banco de dados dos dados da URL buscada. Caso existam os dados no banco e o horário de inserção foi há menos de uma hora, retorna os dados. Caso os dados não existam no banco ou foram inseridos há mais de uma hora, realiza o scrape dos dados, e atualiza a entrada no banco com os dados atualizados (se existirem) e o horário atual.
  • Caso a requisição tenha sido feita com sucesso, é retornado código 200 acompanhado de um JSON com os campos title, imageURL, price (em centavos), description (se existir) e por fim, a url do produto. Exemplo de resposta:
{
  "title": "Echo Show 8 (1ª Geração): Smart Speaker com tela de 8\" e Alexa - Cor Preta",
  "imageURL": "https://m.media-amazon.com/images/I/61xX62L2hGL._AC_SY300_SX300_.jpg",
  "price": 66405,
  "description": "",
  "url": "https://www.amazon.com.br/dp/B07SG8F1QF"
}

Tecnologias utilizadas

  • Golang versão 1.17
  • Mysql versão 5.7.36

Bibliotecas utilizadas

API

Testes

Ferramentas necessárias

  • make
  • docker-compose
  • docker

Como executar

  • make up: inicia os containers e a aplicação
  • make down: remove os containers
  • make db: acessa o container do mysql, onde é possível executar queries e verificar se os dados foram realmente inseridos
  • make test : executa os testes unitários do projeto
  • Envie requisições POST para o endpoint localhost:3000/product, como exemplificado neste documento e faça testes :). Execute o comando make db e verifique se os dados foram inseridos corretamente
  • Os sites suportados são: www.submarino.com.br, www.magazineluiza.com.br, www.zattini.com.br, www.amazon.com.br, www.americanas.com.br e www.saraiva.com.br
  • Alguns sites podem retornar código 403 no scraping, se isso ocorrer basta tentar novamente ou testar outra URL
  • O banco pode demorar alguns segundos para inicializar, isso é tratado pela aplicação. Basta aguardar o log Listening on port :3000 aparecer
  • Já existem algumas entradas no banco, que são inseridas na inicialização do container. Teste as URLs https://www.amazon.com.br/dp/B07SG8F1QF?ref=MarsFS_Echo_show8 e https://www.saraiva.com.br/a-rainha-vermelha-vol-1-8884222/p e veja que são buscadas do banco, e não do scraper

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages