Dados obtidos de portais de notícias da área de tecnologia. Foram escolhidos os portais Olhar Digital e TecMundo como alvos para realizar a extração de notícias relacionadas ao mundo da tecnologia.
- Docker
- Docker-Compose
- Python
- Scrapy
- MongoDB
- Ferramentas necessárias
- Como instalar esse projeto?
- Como executar esse projeto?
- Fluxo de desenvolvimento
- Pontos de melhorias
- Análise dos dados
-
Docker e Docker-Compose
-
MongoDB
-
Instalação
Como nesse projeto persistimos os dados em um banco MongoDB, você precisará ter ele instalado em sua máquina.
Recomendamos utilizar uma imagem docker para isso.
$ docker pull mongo:latest $ docker run -d -p 27017-27019:27017-27019 --name mongodb mongo:latest
- Robo3T
-
Instalação
Para visualizar os dados persistidos no MongoDB, você precisará ter o Robo3T instalado.
O Snap tem um instalar ótimo do Robo3T, dê uma olhada no link
Esse projeto possui dois métodos de instalar, o primeiro utilizando um environment e o segundo utilizando docker.
Ambos os métodos foram testados em um ambiente linux. Mais especificicamente uma distribuição Manjaro 18.1.5.
- Instalação do Poetry
Primeiro você precisará instalar o Poetry, o gerenciador de enviroment utilizado nesse projeto. Para isso execute os passos descritos na documentação.
A versão utilizada do Poetry foi a 1.0.0
Agora que você instalou o Poetry corretamente, execute:
$ cd portais-noticias-tech/
$ poetry install --no-dev --no-interaction --no-ansi
Vamos inicializar tanto o MongoDB (se você inicializou o MongoDB no começo do tutorial, dê stop no container) quanto o Scrapy, para isso iremos utilizar o docker-compose.yml presente no projeto. Como utilizamos o mesmo docker-compose em produção e em desenvolvimento, você precisará mudar no campo enviroment
essas informações.
Caso o
YOUR_ENV
sejaproduction
ele não irá instalar os pacotes de desenvolvimento configurados no Poetry. Para saber mais quais são os pacotes de desenvolvimento, veja o pyproject.toml.
Lembre-se de ter instalado o docker-compose antes de executar os passos a seguir!
$ docker-compose build portais
Todos os resultados extraídos podem ser vistos e acompanhados no Robo3T.
Você pode escolher se irá persistir seus dados em um arquivo JsonLine. Por enquanto o projeto persiste todas as vezes em MongoDB. Para isso, escreva em um arquivo .env a variável
USE_JSON
, que receberá apenas 0 ou 1.
Para realizar a extração das notícias você pode executar cada site de notícia por vez ou executar um script que executará as spiders para você.
- Execução de spiders separadamente
$ cd portais_tech
$ scrapy crawl olhardigital
$ scrapy crawl tecmundo
- Execução de todas as spiders de uma vez
$ cd portais_tech
$ python runspiders.py
Utilizando Docker você só terá a opção de executar todas as spiders de uma vez, dado que o Dockerfile executa o comendo python runspiders.py
. Sendo assim, você precisará executar:
$ docker-compose run portais