Skip to content

A web crawler for Reddit that sends threads to Telegram

License

Notifications You must be signed in to change notification settings

ricardolohmann/scrappy-coco

Repository files navigation

Desafio 2: Crawlers

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.

Entrada

  • Lista com nomes de subreddits separados por ponto-e-vírgula (;). Ex: "askreddit;worldnews;cats"

Parte 1

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.

Parte 2

Construir um robô que nos envie essa lista via Telegram sempre que receber o comando /NadaPraFazer [+ Lista de subrredits] (ex.: /NadaPraFazer programming;dogs;brazil)

Dicas

  • 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).

scrappy-coco

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.

Contributing

Install development dependencies:

pip install -r requirements-dev.txt
docker-compose up --build

Running

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

About

A web crawler for Reddit that sends threads to Telegram

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published