[파이썬] 웹 프레임워크를 이용한 실시간 트위터 스트리밍

트위터는 현재 가장 인기 있는 소셜 미디어 플랫폼이며, 실시간 업데이트를 통해 수많은 정보를 제공합니다. 이번 블로그 포스트에서는 웹 프레임워크를 이용하여 실시간 트위터 스트리밍을 구현하는 방법에 대해 알아보겠습니다.

웹 프레임워크 선택: Flask

Flask는 Python으로 작성된 마이크로 웹 프레임워크로써, 가벼우면서도 강력한 기능을 제공합니다. Flask는 트위터 스트리밍과 같은 실시간 데이터를 처리하기에 적합한 프레임워크입니다.

트위터 API 사용

트위터에서 제공하는 API를 사용하여 실시간으로 트위터 데이터를 가져올 수 있습니다. 실시간 트위터 스트리밍을 위해 Tweepy라는 Python 패키지를 사용하겠습니다.

Tweepy는 트윗 검색, 스트리밍, 사용자 정보 등을 가져오는 데 도움이 되는 간단한 인터페이스를 제공합니다.

import tweepy

consumer_key = 'YOUR_CONSUMER_KEY'
consumer_secret = 'YOUR_CONSUMER_SECRET'
access_token = 'YOUR_ACCESS_TOKEN'
access_token_secret = 'YOUR_ACCESS_TOKEN_SECRET'

# API 인증 및 연결
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

# 실시간 트위터 스트리밍 핸들러
class TwitterStreamListener(tweepy.StreamListener):
    def on_status(self, status):
        if status.lang == "en":
            print(status.text)

# 실시간 트위터 스트리밍 시작
stream_listener = TwitterStreamListener()
stream = tweepy.Stream(auth=api.auth, listener=stream_listener)
stream.filter(track=['python'])  # 원하는 키워드로 필터링

위 코드는 Tweepy를 사용하여 특정 키워드(‘python’으로 설정)에 대한 실시간 트위터 스트리밍을 시작하는 간단한 예제입니다. 실시간으로 받아온 트위터 데이터를 사용자에게 보여주기 위해 Flask를 사용해야 합니다.

웹 애플리케이션 개발

Flask를 사용하여 웹 애플리케이션을 개발합니다. 트위터 스트리밍 데이터를 웹 페이지에 실시간으로 업데이트하기 위해 JavaScript 라이브러리인 Socket.IO를 사용하겠습니다.

from flask import Flask, render_template
from flask_socketio import SocketIO

app = Flask(__name__)
socketio = SocketIO(app)

# 웹 애플리케이션 라우트
@app.route('/')
def index():
    return render_template('index.html')

# 실시간 트위터 스트리밍 이벤트 핸들러
@socketio.on('stream_tweet')
def handle_stream_tweet(data):
    socketio.emit('new_tweet', data, broadcast=True)

if __name__ == '__main__':
    socketio.run(app)

위 코드는 Flask 및 Socket.IO를 사용하여 웹 애플리케이션을 개발하는 예제입니다. ‘/’ 경로로 들어오는 요청은 ‘index.html’ 템플릿을 렌더링하여 화면에 보여줍니다. ‘stream_tweet’ 이벤트를 받으면 ‘new_tweet’ 이벤트를 브로드캐스트합니다.

웹 페이지 개발

웹 페이지를 개발하기 위해 HTML 및 JavaScript를 사용합니다. Socket.IO를 사용하여 실시간 트위터 스트림을 웹 페이지로 전송합니다.

<!DOCTYPE html>
<html>
<head>
    <title>Real-time Twitter Streaming</title>
</head>
<body>
    <div id="tweets">
        <ul id="tweet-list"></ul>
    </div>

    <script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
    <script>
        var socket = io();

        socket.on('connect', function () {
            console.log('Connected to server');
        });

        socket.on('new_tweet', function (data) {
            var tweet = document.createElement('li');
            tweet.innerHTML = data.text;

            document.getElementById('tweet-list').appendChild(tweet);
        });
    </script>
</body>
</html>

위 코드는 실시간 트위터 스트림을 웹 페이지에 표시하는 간단한 HTML과 JavaScript입니다. Socket.IO를 사용하여 서버와 클라이언트 간의 실시간 통신을 설정합니다. ‘new_tweet’ 이벤트를 받으면 새 트윗을 생성하여 화면에 추가합니다.

결론

이번 포스트에서는 Flask와 Tweepy를 사용하여 웹 프레임워크를 이용한 실시간 트위터 스트리밍을 구현하는 방법에 대해 알아보았습니다. 이를 통해 웹 애플리케이션을 개발하고, 실시간으로 트위터 데이터를 받아와 웹 페이지에 표시할 수 있습니다. 실시간 데이터를 처리하는 다른 웹 프로젝트에도 적용할 수 있으니, 응용 가능성에 대해 생각해 보시기 바랍니다.