- Este projeto é uma api onde replica os dados de produtos raspados de um site via Webscraping. O usuário tem que estar logado e com acesso liberado via TOKEN (este token é criado pelo admin do sistema dentro do ADM do Django) para ter acesso a api, e na requisição terá que enviar o TOKEN no header, como mostrado na imagem abaixo
-
Foi desenvolvido a conexão com Cache Redis, que tem por sua vez a funcionalidade de armazenar a primeira requisição feita pelo usuário, para que nas proximas buscas dentro de 10 minutos, a api não precise fazer o Scrapy novamente, assim economizando memoria e tempo.
-
A api retorna os mesmo dados em Json tanto nas raspagens de dados quanto nos dados retornados pelo Cache Redis
-
Utilizei o Cache Redis da fabricante Saiba mais...
-
Foi desenvolvido a conexão com AWS Dynamodb, para armazenar os dados a cada nova cada nova consulta após os 10 minutos, foi criado com a funcionalidade de alguma necessidade para obter os dados futuramente sem ser utilizando o Redis.
Basta apenas descomentar os codigos em de conexão e importação com aws em products/viewsets.py
E após isso, adicione os dados cde conexão no arquivo .env
AWS_ACCESS_KEY_ID=ADICIONE-ACCESS_KEY_ID-AQUI
AWS_SECRET_ACCESS_KEY=ADICIONE-SECRET_ACCESS_KEY-AQUI
AWS_REGION=us-east-1
- Faça o clone do projeto
git clone https://github.com/By-Lucas/Project-Devnology-Api-WebScraping.git
- Instale todas as dependências
pip install -r requirements.txt
- Crie um ambiente virtual e ative-o (
Windows
)
python -m venv venv
venv/scripts/activate
- Crie um ambiente virtual e ative-o (
Linux
)
virtualenv -p python3 venv
source venv/bin/activate
- Faça as migrações as models
python manage.py migrate
Se estiver tiver o Postgres instado na sua marquia, adicione os dados de conexão no arquivo .env
e remova a conexão com sqlite
em devnolog/settings.py
e descomente a conexão logo acima feita com Postgres
EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_HOST_USER=tekertudo@gmail.com
EMAIL_HOST_PASSWORD=lbrkulimopjljajs
Faça o Download do arquivo Cache Redis CLIQUE AQUI e instale e se não tiver nenhum host disponivel para utiliza-lo remotamente, faça as alterações abaixo, caso contrário deixe-os como está e altere apenas para sua conexão HOST dentro do arquivo .env
REDIS_HOST=REDIS_HOST_AQUI
REDIS_PORT=REDIS_PORT_AQUI
REDIS_USERNAME=REDIS_USERNAME_AQUI
REDIS_PASSWORD=REDIS_USERNAME_AQUI
- Altere a conexão do Cache Redis para que está em
controllers/rediscache.py
para utilizar localmente
self.redis = Redis(
host= config('REDIS_HOST'),
port= config('REDIS_PORT'),
username= config('REDIS_USERNAME'),
password= config('REDIS_PASSWORD'),
db=0)
Altere para:
self.redis = Redis(
host= 'locahost',
port= 6379,
db=0)
- Teste o projeto
pytest test
- Crie um super usuário -Digite o código abaixo e siga o passo a passo
pyton manage.py createsuperuser
- Faça o Login no ADMIN e alterer o que desejar ou sete permissões para outros usuarios
http://127.0.0.1:8000/admin
- Rode a aplicação
pyton manage.py runserver
- Rota para todos os produtos raspados
http://127.0.0.1:8000/api/v1/products
- Fazer busca pela marca e modelo do produto:
http://127.0.0.1:8000/api/v1/product?product=lenovo