https://github.com/devphde/iprazos_testetecnico
.NetCore Selenium Crawler MultiThreading
https://github.com/devphde/iprazos_testetecnico
dotnetcore mongodb multithreading selenium-webdriver
Last synced: about 2 months ago
JSON representation
.NetCore Selenium Crawler MultiThreading
- Host: GitHub
- URL: https://github.com/devphde/iprazos_testetecnico
- Owner: DevPhde
- Created: 2023-12-01T00:56:31.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-12-01T11:24:05.000Z (over 2 years ago)
- Last Synced: 2025-02-25T21:33:30.662Z (over 1 year ago)
- Topics: dotnetcore, mongodb, multithreading, selenium-webdriver
- Language: C#
- Homepage:
- Size: 995 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Teste Técnico .NetCore WebCrawler
## :memo: Descrição do projeto
### Requisitos
- Acessar o site ```https://proxyservers.pro/proxy/list/order/updated/order```✔️
- Extrair os campos "IP Adress", "Port", "Country" e "Protocol" de todas as linhas, de todas as páginas disponíveis na execução.✔️
- Necessário salvar o resultado da extração em arquivo json, que deverá ser salvo na máquina.✔️
- Necessário salvar em banco de dados a data início da execução, data término da execução, quantidade de páginas analisadas, quantidade de linhas extraídas em todas as páginas e arquivo json gerado.✔️
- Necessário armazenar o arquivo .html de cada página.✔️
- Necessário que o webcrawler seja multiThread, com máximo de 3 execuções simultâneas.✔️
### Solução
Desenvolvi o web crawler utilizando .NET Core, MediatR e um banco de dados NoSQL MongoDB para persistência dos dados. A aplicação foi projetada com eventos assíncronos, visando a atualização do JSON com os dados extraídos e a persistência desses dados no banco. Além disso, incluí um endpoint GET para consulta dos dados inseridos.
O web crawler realiza as seguintes atividades:
- Extração de Dados: Acessa o site específico para coletar informações como "IP Address", "Port", "Country" e "Protocol" de todas as linhas disponíveis em todas as páginas.
- Armazenamento em JSON: Os dados extraídos são atualizados em um arquivo JSON, facilitando o armazenamento e uso posterior dessas informações.
- Persistência no MongoDB: Os dados coletados são armazenados de forma persistente no banco de dados NoSQL MongoDB, garantindo uma estrutura organizada e de fácil acesso.
- Funcionamento Assíncrono: A aplicação opera com eventos assíncronos para melhor eficiência e desempenho, permitindo que as tarefas de extração, atualização e persistência dos dados ocorram de forma paralela.
- Endpoint GET para Consulta de Dados: Implementei um endpoint GET que possibilita consultar os dados previamente inseridos no banco de dados, permitindo acesso rápido e prático às informações coletadas.
A integração de tecnologias como MediatR para gerenciamento de eventos e MongoDB para armazenamento eficiente dos dados possibilita uma solução robusta e escalável para o processo de web crawling.
## :wrench: Tecnologias Utilizadas
C#, .NetCore, MediatR, MongoDB e Selenium
- Tecnologias Utilizadas:
## :dart: Status do projeto
Teste concluído.