Search
Close this search box.
Agregador de conteúdo super fácil com Python
agregador de conteúdo

Posts Relacionados:

Aprenda a criar um agregador de conteúdo fácil com Python para coletar e mostrar conteúdos de várias fontes em um único local.

Receba nossa newsletter

Conteúdos de várias fontes em um único local

agregador de conteúdos com Python

Um agregador de conteúdo coleta e mostra conteúdos de várias fontes em um único local. O conteúdo agregado pode ser qualquer coisa, desde artigos de notícias até postagens de mídia social. A necessidade de agregadores de conteúdo é bastante clara. A internet está lotada de informações e, para nos manter atualizados, precisamos navegar em vários sites diariamente. Porém, isso consome tempo. A agregação de conteúdo nos ajuda a otimizar nosso tempo. Ao invés de percorrer vários sites diferentes, precisamos visitar apenas de um.

Neste post, criaremos um agregador de conteúdo usando feedparser. Depois, expandiremos o código para exibir o conteúdo na web usando Flask. Portanto, para acompanhar o post, é recomendável ter alguma familiaridade com Flask.

Como criar um agredador de conteúdo?

Existem passos comuns a qualquer agregador de conteúdo:

Escolha das fontes: se refere a decidir de onde virá o conteúdo que deseja. As fontes principais incluem RSS Feeds, APIs e web scraping.

Obtenção do conteúdo: uma vez que a fonte foi determinada, bibliotecas adequadas para obter o conteúdo desejado devem ser empregadas.

Exibição do conteúdo: como o conteúdo obtido será exibido? Estruturas como Flask ou Django podem ser empregadas nessa etapa para exibir o conteúdo mediante uma interface web.

Usaremos RSS Feeds como nossa fonte. Os conteúdos serão obtidos usando o excelente feedparser. Depois, exibiremos o conteúdo obtido em um wep app desenvolvido com Flask.

RSS Feeds do Reddit

Para ilustrar como criar um agregador de conteúdo, usaremos RSS Feeds do Reddit.

O Reddit é composto por muitos sub-reddits. A RSS feed para um sub-reddit pode ser obtido através de sua URL com a adição de um “.rss” a ela. No nosso exemplo, usaremos RSS Feeds para 2 sub-reddits: Python e Django.

O código para obter o conteúdo é bem simples. Para obter os dados, basta usar o comando:

				
					import feedparser

dados = feedparser.parse('http://www.reddit.com/r/python/.rss')
				
			

Porém, como obteremos os dados de duas RSS Feeds com vários itens, usaremos um loop:

				
					import feedparser

feeds = [
    'http://www.reddit.com/r/python/.rss',
    'http://www.reddit.com/r/django/.rss',
]

articles = []
for feed in feeds:
    parsed_feed = feedparser.parse(feed)
    for dado in parsed_feed.entries:
        articles.append({
            'title': dado.title,
            'link': dado.link,
            
        })

print(articles)
# resultados parciais: [{'title': "Sunday Daily Thread: What's everyone working on this week?", 'link': 'https://www.reddit.com/r/Python/comments/1fbku4v/sunday_daily_thread_whats_everyone_working_on/'}, {'title': 'PyWeek 38: A Python Game Jam', 'link': 'https://www.reddit.com/r/Python/comments/1fccov9/pyweek_38_a_python_game_jam/'}, ...
				
			

A execução desse código simples já retorna os dados desejados. No caso deste exemplo ilustrativo, estamos obtendo apenas os títulos e links dos artigos originais.

Exibição do conteúdo agregado com Flask

Uma vez que o conteúdo agregado é obtido, é hora de exibí-lo. Isso será feito com Flask.

Nosso código com o agregador de conteúdo com Flask é super simples. Criamos um app com Flask. Dentro dele, simplesmente colamos nossa lista com o conteúdo obtido das feeds como definido anteriormente. O conteúdo obtido é passado como contexto para um template HTML do Flask.

				
					import feedparser
from flask import Flask, render_template # novo

# inicia um Flask object
app = Flask(__name__)

# define o app
@app.route('/')
def index():
    """Usa feedparser para obter conteúdo do Reddit e os exibe num template HTML usando Flask"""

    feeds = [
        'http://www.reddit.com/r/python/.rss',
        'http://www.reddit.com/r/django/.rss',
       
    ]
    articles = []
    for feed in feeds:
        parsed_feed = feedparser.parse(feed)
        for dado in parsed_feed.entries:
            articles.append({
                'title': dado.title,
                'link': dado.link,
                
            })
    
    # exibe contexto num template HTML
    return render_template('index.html', articles=articles)

# executa o app
if __name__ == '__main__':
    app.run(debug=True)
				
			

Exibição em HTML

O template HTML é mostrado abaixo. Ele precisa ser inserido numa pasta chamada templates para que o Flask consiga enxergá-lo. A pasta deve estar no mesmo diretório do arquivo Flask. O template usa Bootstrap para criar alguns contêineres. Basicamente, ele possui um loop implementado com Jinja que exibe o conteúdo obtido dinamicamente.

O código Flask é executado como um código Python tradicional. O conteúdo de HTML é exibido no localhost (http://127.0.0.1:5000/).

Esse é o resultado obtido com nosso agregador, ele não é muito bonito, mas é totalmente funcional :).

Agregador com Flask

Encontrou algum erro ou quer fazer uma sugestão? Por favor, entre em contato usando nosso formulário de contatos.

Imagem com IA Generativa – Dia 199

IA generativa img 199

Arte com IA generativa: imagem do dia

Todos os dias, postamos um exemplo de imagem artística gerada com inteligência artificial.

Tutoriais

Postagens Mais Recentes

Outras Postagens Que Podem Interessar

Veja
Mais

Fique em contato

Se inscreva para receber nossa newsletter com novidades.

aprendiz artificial