본문 바로가기
인공지능/데이터

트위터 API, tweepy 사용하기

by EXUPERY 2021. 3. 31.
반응형

 

 

트위터 API, tweepy 사용하기

tweepy

 

 


1. API KEY 받기

developer.twitter.com/en

 

Use Cases, Tutorials, & Documentation

Publish & analyze Tweets, optimize ads, & create unique customer experiences with the Twitter API, Twitter Ads API, & Twitter Embeds. Let's start building!

developer.twitter.com

먼저 트위터의 개발자사이트에서 api사용신청을하고 consumer_key, consumer_secret, access_token, access_token_secret를 받는 것 부터 시작합니다. (중요)

모두 받았으면 tweepy라는 api를 이용하겠습니다. 이용방법은 다음과 같습니다.

 

 

2. tweepy api connection

import tweepy

## 트위터 api와 연결
def connect_api():

    consumer_key = 'consumer_key'
    consumer_secret = 'consumer_secret'
    access_token = 'access_token'
    access_token_secret = 'access_token_secret'

    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)

    api = tweepy.API(auth)

    return api

print(connect_api())
>>> <tweepy.api.API object at 0x0000028DEA2EFC48>

위와같이 메모리에 객체가 저장되어있다고 출력되면 정상적으로 장동하는 것입니다.

 

 

 

3. username으로 타임라인 받아오기

def get_tweets(api, username):
    tweets = api.user_timeline(username, tweet_mode='extended')

    return tweets

api = connect_api()
bts_timeline = get_tweets(api, 'bts_official')
print(bts_timeline)

위의 함수로 bts의 타임라인을 가져올 수 있습니다. 결과물은 다음과 같습니다.

많은 정보들이 담겨있습니다. tweepy doc을 참조하면, 기본 20개의 타임라인에대한 정보를 가져옵니다. 위의 정보들을 자세히보면, description이라는 key도 보이고 img의 url도 보입니다. 여기서 우리는 필요한 정보만 추출할 수 있습니다. 자세한 정보는 tweepy의 doc에서 알 수 있습니다.

 

 

4. 트윗 텍스트로 받아오기

api = connect_api()
bts_timeline = get_tweets(api, 'bts_official')
i=1

for bts_tweet in bts_timeline:
    print(f"{i}번째 트윗 : {bts_tweet.full_text}")
    i += 1

full_text를 통해서 bts_official의 트윗을 받아오겠습니다. 결과는 다음과 같습니다.

 

 

 

 

5. 커서를 이용하여 받기

tweepy에서는 새로운 방식인 Cursor를 이용하는 방법을 권장하고있습니다.

def UserTimelineCursor(screen_name):
    tweets = tweepy.Cursor(api.user_timeline, screen_name=screen_name, tweet_mode="extended")
    return tweets

bts_timeline = UserTimelineCursor('@bts_official')
i=1

for bts_tweet in bts_timeline.items():
    print(f"{i}번째 트윗 : {bts_tweet.full_text}")
    i += 1

같은내용을 출력하는 것을 볼 수 있습니다.

 

 

 

 

 

6. 페이지별로 출력

def UserTimelineCursor(screen_name):
    tweets = tweepy.Cursor(api.user_timeline, screen_name=screen_name, tweet_mode="extended")
    return tweets

bts_timeline = UserTimelineCursor('@bts_official')
i=1

for bts_tweet in bts_timeline.pages():
    for tweet in bts_tweet:
        print(f"{i}페이지 : {tweet.full_text}")
    i += 1

 

 

 

 

 

7. 이외에 여러기능들

## bts follower가져오기
print("User's Fllower")
user = api.get_user("bts_official")
print("User details:")
print(user.name)
print(user.description)
print(user.location)
print("Last 20 Followers:")
for follower in user.followers():
    print(follower.name)

## 친구맺기
# api.create_friendship("bts_official")

## Method for Searches
print("Searching by keyword")
for tweet in api.search(q="한국", lang="en", rpp=10):
    print(f"{tweet.user.name}:{tweet.text}")

## trend_search
print("Trend Search")
trends_result = api.trends_place(1)
for trend in trends_result[0]["trends"]:
    print(trend["name"])

##
tweets = api.mentions_timeline()
for tweet in tweets:
    tweet.favorite()
    tweet.user.follow()

 

 

 

Tweepy doc에가면 더 많은 정보를 보실 수 있습니다.

 

docs.tweepy.org/

 

Tweepy Documentation — tweepy 3.10.0 documentation

© Copyright 2009-2021, Joshua Roesslein Revision 5b2dd086.

docs.tweepy.org

 

반응형

'인공지능 > 데이터' 카테고리의 다른 글

Flask 시작하기  (0) 2021.04.01
weather API 사용하기  (0) 2021.03.31
Scraping (Beautiful Soup)  (0) 2021.03.16
ORM (SQL Alchemy)  (0) 2021.03.16
SQL DB with Python 간단사용법  (0) 2021.03.12

댓글