Parte do trabalho na IDwall inclui desenvolver crawlers/scrapers para coletar dados de websites. Como nós nos divertimos trabalhando, às vezes trabalhamos para nos divertir!
O Reddit é quase como um fórum com milhares de categorias diferentes. Com a sua conta, você pode navegar por assuntos técnicos, ver fotos de gatinhos, discutir questões de filosofia, aprender alguns life hacks e ficar por dentro das notícias do mundo todo!
Subreddits são como fóruns dentro do Reddit e as postagens são chamadas threads.
Para quem gosta de gatos, há o subreddit "/r/cats" com threads contendo fotos de gatos fofinhos. Para threads sobre o Brasil, vale a pena visitar "/r/brazil" ou ainda "/r/worldnews". Um dos maiores subreddits é o "/r/AskReddit".
Cada thread possui uma pontuação que, simplificando, aumenta com "up votes" (tipo um like) e é reduzida com "down votes".
Sua missão é encontrar e listar as threads que estão bombando no Reddit naquele momento! Consideramos como bombando threads com 5000 pontos ou mais.
- Lista com nomes de subreddits separados por ponto-e-vírgula (
;
). Ex: "askreddit;worldnews;cats"
Gerar e imprimir uma lista contendo número de upvotes, subreddit, título da thread, link para os comentários da thread, link da thread. Essa parte pode ser um CLI simples, desde que a formatação da impressão fique legível.
Construir um robô que nos envie essa lista via Telegram sempre que receber o comando /NadaPraFazer [+ Lista de subrredits]
(ex.: /NadaPraFazer programming;dogs;brazil
)
- Use https://old.reddit.com/
- Qualquer método para coletar os dados é válido. Caso não saiba por onde começar, procure por JSoup (Java), SeleniumHQ (Java), PhantomJS (Javascript) e Beautiful Soup (Python).
The project is composed by two services:
- app: The service which runs Scrapy and make it available by using ScrapyRT.
- telegram: The service that get messages in Telegram bot by pulling.
- mongo: The service that stores all the data.
- Prometheus: Service to monitoring.
- node-exporter: Prometheus exporter.
- cadvisor-exporter(disabled for now): Prometheus exporter.
Install development dependencies:
pip install -r requirements-dev.txt
docker-compose up --build
Starting containers:
docker-compose up --build
It's also possible to consume Scrapy thrue HTTP request(ScrapyRT credits), like the following:
curl -v "http://localhost:9080/crawl.json?url=http://old.reddit.com/r/cats&spider_name=reddit" | jq